class Determinator::Retrieve::Dynaconf

A class which loads features from Dynaconf server

Public Class Methods

new(base_url:, service_name:, client: default_client) click to toggle source

@param :base [String] The protocol, host and port for local Dynaconf server @param :service [String] The name of the service to be included in the User-Agent @param :client [String] Faraday client instance, defaults to a new instance

# File lib/determinator/retrieve/dynaconf.rb, line 10
def initialize(base_url:, service_name:, client: default_client)
  raise ArgumentError, "client must be a Faraday::Connection" unless client.is_a?(Faraday::Connection)

  @base_url = base_url
  @service_name = service_name
  @client = client
end

Public Instance Methods

retrieve(feature_id) click to toggle source
# File lib/determinator/retrieve/dynaconf.rb, line 18
def retrieve(feature_id)
  response = get(feature_id)
  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

Private Instance Methods

default_client() click to toggle source
# File lib/determinator/retrieve/dynaconf.rb, line 42
def default_client
  Faraday.new
end
get(feature_id) click to toggle source
# File lib/determinator/retrieve/dynaconf.rb, line 29
def get(feature_id)
  url = "#{@base_url}/scopes/florence-#{feature_id}/feature"

  @client.get do |request|
    request.url(url)
    request['User-Agent'] = user_agent
  end
end
user_agent() click to toggle source
# File lib/determinator/retrieve/dynaconf.rb, line 38
def user_agent
  @user_agent ||= "Determinator/Ruby v#{Determinator::VERSION} - #{@service_name}".freeze
end