Class: AmplitudeExperiment::LocalEvaluationFetcher
- Inherits:
-
Object
- Object
- AmplitudeExperiment::LocalEvaluationFetcher
- Defined in:
- lib/experiment/flag/flag_config_fetcher.rb
Overview
LocalEvaluationFetcher Fetch local evaluation mode flag configs from the Experiment API server. These flag configs can be used to perform local evaluation.
Constant Summary collapse
- FLAG_CONFIG_TIMEOUT =
5000
Instance Method Summary collapse
-
#fetch ⇒ Hash
Fetch local evaluation mode flag configs from the Experiment API server.
-
#fetch_v1 ⇒ String
Fetch local evaluation mode flag configs from the Experiment API server.
- #fetch_v2 ⇒ Object
-
#initialize(api_key, logger, server_url = 'https://api.lab.amplitude.com') ⇒ LocalEvaluationFetcher
constructor
A new instance of LocalEvaluationFetcher.
Constructor Details
#initialize(api_key, logger, server_url = 'https://api.lab.amplitude.com') ⇒ LocalEvaluationFetcher
Returns a new instance of LocalEvaluationFetcher.
8 9 10 11 12 |
# File 'lib/experiment/flag/flag_config_fetcher.rb', line 8 def initialize(api_key, logger, server_url = 'https://api.lab.amplitude.com') @api_key = api_key @server_url = server_url @logger = logger end |
Instance Method Details
#fetch ⇒ Hash
Fetch local evaluation mode flag configs from the Experiment API server. These flag configs can be used to perform local evaluation.
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/experiment/flag/flag_config_fetcher.rb', line 54 def fetch # fetch flag_configs headers = { 'Authorization' => "Api-Key #{@api_key}", 'Content-Type' => 'application/json;charset=utf-8', 'X-Amp-Exp-Library' => "experiment-ruby-server/#{VERSION}" } request = Net::HTTP::Get.new("#{@server_url}/sdk/rules?eval_mode=local", headers) http = PersistentHttpClient.get(@server_url, { read_timeout: FLAG_CONFIG_TIMEOUT }, @api_key) response = http.request(request) raise "flagConfigs - received error response: #{response.code}: #{response.body}" unless response.is_a?(Net::HTTPOK) flag_configs = parse(response.body) @logger.debug("[Experiment] Fetch flag configs: #{request.body}") flag_configs end |
#fetch_v1 ⇒ String
Fetch local evaluation mode flag configs from the Experiment API server. These flag configs can be used to perform local evaluation.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/experiment/flag/flag_config_fetcher.rb', line 18 def fetch_v1 # fetch flag_configs headers = { 'Authorization' => "Api-Key #{@api_key}", 'Content-Type' => 'application/json;charset=utf-8', 'X-Amp-Exp-Library' => "experiment-ruby-server/#{VERSION}" } request = Net::HTTP::Get.new("#{@server_url}/sdk/v1/flags", headers) http = PersistentHttpClient.get(@server_url, { read_timeout: FLAG_CONFIG_TIMEOUT }, @api_key) response = http.request(request) raise "flagConfigs - received error response: #{response.code}: #{response.body}" unless response.is_a?(Net::HTTPOK) @logger.debug("[Experiment] Fetch flag configs: #{response.body}") response.body end |
#fetch_v2 ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/experiment/flag/flag_config_fetcher.rb', line 34 def fetch_v2 # fetch flag_configs headers = { 'Authorization' => "Api-Key #{@api_key}", 'Content-Type' => 'application/json;charset=utf-8', 'X-Amp-Exp-Library' => "experiment-ruby-server/#{VERSION}" } request = Net::HTTP::Get.new("#{@server_url}/sdk/v2/flags?v=0", headers) http = PersistentHttpClient.get(@server_url, { read_timeout: FLAG_CONFIG_TIMEOUT }, @api_key) response = http.request(request) raise "flagConfigs - received error response: #{response.code}: #{response.body}" unless response.is_a?(Net::HTTPOK) @logger.debug("[Experiment] Fetch flag configs: #{response.body}") JSON.parse(response.body) end |