class AirshipClient
Public Class Methods
_validate_api_key(api_key)
click to toggle source
# File lib/airship-client.rb, line 71 def _validate_api_key(api_key) if !api_key.instance_of?(String) raise ArgumentError.new("api_key must be a string") end end
_validate_env_key(env_key)
click to toggle source
# File lib/airship-client.rb, line 77 def _validate_env_key(env_key) if !env_key.instance_of?(String) raise ArgumentError.new("env_key must be a string") end end
_validate_fail_gracefully(fail_gracefully)
click to toggle source
# File lib/airship-client.rb, line 89 def _validate_fail_gracefully(fail_gracefully) if !(fail_gracefully == true || fail_gracefully == false) raise ArgumentError.new("fail_gracefully must be true or false") end end
_validate_timeout(timeout)
click to toggle source
# File lib/airship-client.rb, line 83 def _validate_timeout(timeout) if !timeout.is_a?(Integer) raise ArgumentError.new("timeout must be an integer") end end
init(api_key, env_key = nil, timeout = DEFAULT_TIMEOUT, fail_gracefully = true)
click to toggle source
# File lib/airship-client.rb, line 40 def init(api_key, env_key = nil, timeout = DEFAULT_TIMEOUT, fail_gracefully = true) if api_key.nil? raise ArgumentError.new("api_key cannot be nil") end if !api_key.nil? self._validate_api_key(api_key) end if !env_key.nil? self._validate_env_key(env_key) end self._validate_timeout(timeout) self._validate_fail_gracefully(fail_gracefully) @@api_key = api_key @@env_key = env_key @@timeout = timeout @@fail_gracefully = fail_gracefully nil end
new(api_key = nil, env_key = nil)
click to toggle source
# File lib/airship-client.rb, line 96 def initialize(api_key = nil, env_key = nil) if !api_key.nil? self.class._validate_api_key(api_key) end if !env_key.nil? self.class._validate_env_key(env_key) end @api_key = api_key @env_key = env_key @conn = Faraday.new(:url => API_BASE_ENDPOINT) nil end
set_env_key(env_key)
click to toggle source
# File lib/airship-client.rb, line 63 def set_env_key(env_key) if env_key.nil? raise ArgumentError.new("env_key cannot be nil") end self._validate_env_key(env_key) @@env_key = env_key end
Public Instance Methods
gate(control_name, obj)
click to toggle source
# File lib/airship-client.rb, line 133 def gate(control_name, obj) is_array = obj.instance_of?(Array) begin response = @conn.post do |req| req.url(V1_GATE_ENDPOINT) req.headers["Content-Type"] = "application/json" req.headers["api-key"] = @api_key || @@api_key req.options.timeout = @@timeout request_obj = {} request_obj["env_key"] = @env_key || @@env_key request_obj["control_short_name"] = control_name if is_array request_obj["objects"] = obj else request_obj["object"] = obj end req.body = request_obj.to_json end result = JSON.parse(response.body) if result.instance_of?(Hash) && result[SERVER_INFO_KEY] == SERVER_STATE_MAINTENANCE if @@fail_gracefully if is_array results = [] for i in 0...obj.length o = obj[i] results.push( { "type" => o["type"], "id" => o["id"], "display_name" => o["display_name"], "control" => { "control_short_name" => control_name, "value" => false, "variation" => nil, "from_server" => false, "from_cache" => false } } ) end return results else return { "type" => obj["type"], "id" => obj["id"], "display_name" => obj["display_name"], "control" => { "control_short_name" => control_name, "value" => false, "variation" => nil, "from_server" => false, "from_cache" => false } } end end end result rescue Faraday::TimeoutError => e if @@fail_gracefully if is_array results = [] for i in 0...obj.length o = obj[i] results.push( { "type" => o["type"], "id" => o["id"], "display_name" => o["display_name"], "control" => { "control_short_name" => control_name, "value" => false, "variation" => nil, "from_server" => false, "from_cache" => false } } ) end return results else return { "type" => obj["type"], "id" => obj["id"], "display_name" => obj["display_name"], "control" => { "control_short_name" => control_name, "value" => false, "variation" => nil, "from_server" => false, "from_cache" => false } } end else raise end end end
get_value(control_name, obj)
click to toggle source
# File lib/airship-client.rb, line 233 def get_value(control_name, obj) result = self.gate(control_name, obj) result["control"]["value"] end
get_variation(control_name, obj)
click to toggle source
# File lib/airship-client.rb, line 238 def get_variation(control_name, obj) result = self.gate(control_name, obj) result["control"]["variation"] end
identify(objs)
click to toggle source
# File lib/airship-client.rb, line 111 def identify(objs) if !objs.instance_of?(Array) objs = [objs] end begin response = @conn.post do |req| req.url(V1_IDENTIFY_ENDPOINT) req.headers["Content-Type"] = "application/json" req.headers["api-key"] = @api_key || @@api_key req.options.timeout = @@timeout request_obj = {} request_obj["env_key"] = @env_key || @@env_key request_obj["objects"] = objs req.body = request_obj.to_json end result = JSON.parse(response.body) result rescue Faraday::TimeoutError => e raise end end