Sha256: be8c959011abe146f443195ce0e2afc70cb2636759f61fcdbf8615731902111f

Contents?: true

Size: 1.05 KB

Versions: 12

Compression:

Stored size: 1.05 KB

Contents

require 'faraday'

module Determinator
  module Retrieve

    class HttpRetriever
      def initialize(connection:)
        raise ArgumentError, "client must be a Faraday::Connection" unless connection.is_a?(Faraday::Connection)
        @connection = connection
      end

      def retrieve(name)
        response = @connection.get("/features/#{name}")
        return Determinator::Serializers::JSON.load(response.body) if response.status == 200
        return MissingResponse.new if response.status == 404
      rescue => e
        Determinator.notice_error(e)
        ErrorResponse.new
      end

      # Returns a feature name given a actor-tracking url. Used so we are able
      # to expire a cache using a feature name given an event url.
      #
      # Not intended to be generic, and makes no guarantees about support for
      # alternative url schemes.
      #
      # @param url [String] a actor tracking url
      # @return [String, nil] a feature name or nil
      def get_name(url)
        (url.match('features\/(.*)\z') || [])[1]
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
determinator-2.7.0 lib/determinator/retrieve/http_retriever.rb
determinator-2.6.0 lib/determinator/retrieve/http_retriever.rb
determinator-2.5.4 lib/determinator/retrieve/http_retriever.rb
determinator-2.5.3 lib/determinator/retrieve/http_retriever.rb
determinator-2.5.2 lib/determinator/retrieve/http_retriever.rb
determinator-2.5.1 lib/determinator/retrieve/http_retriever.rb
determinator-2.5.0 lib/determinator/retrieve/http_retriever.rb
determinator-2.4.4 lib/determinator/retrieve/http_retriever.rb
determinator-2.4.3 lib/determinator/retrieve/http_retriever.rb
determinator-2.4.2 lib/determinator/retrieve/http_retriever.rb
determinator-2.4.0 lib/determinator/retrieve/http_retriever.rb
determinator-2.3.1 lib/determinator/retrieve/http_retriever.rb