Class: Scrimmage::Client
- Inherits:
-
Object
- Object
- Scrimmage::Client
- Defined in:
- lib/scrimmage/client.rb
Constant Summary collapse
- HTTP_NOT_FOUND =
404
- HTTP_UNAUTHORIZED =
401
- HTTP_FORBIDDEN =
403
- SERVICES =
%w[api p2e fed nbc].freeze
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#rewards ⇒ Object
readonly
Returns the value of attribute rewards.
-
#status ⇒ Object
readonly
Returns the value of attribute status.
-
#users ⇒ Object
readonly
Returns the value of attribute users.
Instance Method Summary collapse
- #create_integration_reward(user_id, data_type, event_id_or_reward, reward = nil) ⇒ Object
-
#get_overall_service_status ⇒ Boolean
Request overall status for all services.
- #get_rewarder_key_details ⇒ Object
-
#get_service_status(service) ⇒ Scrimmage::Object
Requests Service Status.
- #get_user_token(user_id, **options) ⇒ Object
-
#initialize(**config_overrides) ⇒ Client
constructor
Initialize a new client, specifying any local configuration overrides.
Constructor Details
#initialize(**config_overrides) ⇒ Client
Initialize a new client, specifying any local configuration overrides
17 18 19 20 21 22 23 24 |
# File 'lib/scrimmage/client.rb', line 17 def initialize(**config_overrides) config_attrs = Scrimmage.config.to_h.merge(config_overrides) @config = Scrimmage::Config.new(**config_attrs) @rewards = Scrimmage::Rewards.new(client: self) @users = Scrimmage::Users.new(client: self) @status = Scrimmage::Status.new(client: self) end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
9 10 11 |
# File 'lib/scrimmage/client.rb', line 9 def config @config end |
#rewards ⇒ Object (readonly)
Returns the value of attribute rewards.
9 10 11 |
# File 'lib/scrimmage/client.rb', line 9 def rewards @rewards end |
#status ⇒ Object (readonly)
Returns the value of attribute status.
9 10 11 |
# File 'lib/scrimmage/client.rb', line 9 def status @status end |
#users ⇒ Object (readonly)
Returns the value of attribute users.
9 10 11 |
# File 'lib/scrimmage/client.rb', line 9 def users @users end |
Instance Method Details
#create_integration_reward(user_id, data_type, event_id_or_reward, reward = nil) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/scrimmage/client.rb', line 26 def create_integration_reward(user_id, data_type, event_id_or_reward, reward = nil) if event_id_or_reward.is_a? String event_id = event_id_or_reward rewardable = reward.to_h else event_id = nil rewardable = event_id_or_reward.to_h end response = http_request( :post, url("/integrations/rewards"), json: { eventId: event_id, userId: user_id, dataType: data_type, body: rewardable } ) do |my_response| # handle errors case my_response.code when HTTP_NOT_FOUND raise Scrimmage::Errors::AccountNotLinkedError, reward&.user_id when HTTP_UNAUTHORIZED, HTTP_FORBIDDEN raise Scrimmage::Errors::InvalidPrivateKeyError when ->(code) { !(200..299).include?(code) } raise Scrimmage::Errors::RequestFailedError, response end end parse_data(response) end |
#get_overall_service_status ⇒ Boolean
Request overall status for all services
90 91 92 93 94 95 |
# File 'lib/scrimmage/client.rb', line 90 def get_overall_service_status response_data = SERVICES.map do |service| get_service_status(service) end response_data.all? { |d| d&.uptime&.positive? } end |
#get_rewarder_key_details ⇒ Object
97 98 99 100 101 102 |
# File 'lib/scrimmage/client.rb', line 97 def get_rewarder_key_details url = url("/rewarders/keys/@me") response = http_request(:get, url) parse_data(response) end |
#get_service_status(service) ⇒ Scrimmage::Object
Requests Service Status
79 80 81 82 83 |
# File 'lib/scrimmage/client.rb', line 79 def get_service_status(service) my_url = url("/system/status", service: service) response = http_request(:get, my_url) parse_data(response) end |
#get_user_token(user_id, **options) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/scrimmage/client.rb', line 59 def get_user_token(user_id, **) response = http_request( :post, url("/integrations/users"), json: { id: user_id, tags: [:tags].to_a, properties: [:properties].to_h } ) parse_data(response)&.token end |