Sha256: 5b7d92b8c0568d9bc9da87de1125c6e05059b9b8a72f9b29b9b45dfd8098d5cd

Contents?: true

Size: 1.15 KB

Versions: 2

Compression:

Stored size: 1.15 KB

Contents

module TaskHelper
  module API
    class Call
      MissingAPIKey = Class.new(StandardError)

      attr_reader :route, :params, :time
      protected :route, :params

      def initialize(route:, params: {}, timeout: 0, time: Time.now)
        @params = { rest_api_key: API.rest_api_key }.merge(params)
        if @params[:rest_api_key].nil?
          raise MissingAPIKey, "Rest API key not provided. " \
            "Either pass it as a param or use " \
            "'TaskHelper::API.rest_api_key = key' " \
            "to set it for all future calls."
        end
        @route = "#{BASE_URL}/#{route}"
        @timeout = timeout
        @time = time
        set_end_time
      end

      def run
        @time = Time.now
        if expired? || !@result
          set_end_time
          @result = HTTParty.get(@route, query: @params).parsed_response
        else
          @result
        end
      end

      def expired?
        @end_time < Time.now
      end

      def ==(other_call)
        @route == other_call.route && @params == other_call.params
      end

      private

      def set_end_time
        @end_time = @time + @timeout
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
task_helper-0.0.3 lib/task_helper/api/call.rb
task_helper-0.0.2 lib/task_helper/api/call.rb