Sha256: d5408917d62c94f24d561fbe88e9b0d315c12486792b10bd289c56bbf3f9b974

Contents?: true

Size: 1.21 KB

Versions: 4

Compression:

Stored size: 1.21 KB

Contents

require 'typhoeus'

require_relative 'configuration'

module Unipept
  class ServerMessage
    attr_reader :message_url, :configuration

    def initialize(host)
      @message_url = "#{host}/api/v2/messages.json"
      @configuration = Unipept::Configuration.new
    end

    # Checks if the server has a message and prints it if not empty.
    # We will only check this once a day and won't print anything if the quiet
    # option is set or if we output to a file.
    def print
      return unless $stdout.tty?
      return if recently_fetched?

      resp = fetch_server_message
      update_fetched
      puts resp unless resp.empty?
    end

    # Fetches a message from the server and returns it
    def fetch_server_message
      Typhoeus.get(@message_url, params: { version: Unipept::VERSION }).body.chomp
    end

    # Returns true if the last check for a server message was less than a day
    # ago.
    def recently_fetched?
      last_fetched = @configuration['last_fetch_date']
      !last_fetched.nil? && (last_fetched + (60 * 60 * 24)) > Time.now
    end

    # Updates the last checked timestamp
    def update_fetched
      @configuration['last_fetch_date'] = Time.now
      @configuration.save
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
unipept-3.1.0 lib/server_message.rb
unipept-3.0.2 lib/server_message.rb
unipept-3.0.1 lib/server_message.rb
unipept-3.0.0 lib/server_message.rb