Class: Scoreoid::API
- Inherits:
-
Object
- Object
- Scoreoid::API
- Defined in:
- lib/scoreoid/api.rb
Overview
A singleton class with methods for querying the Scoreoid API.
Class Attribute Summary collapse
-
.default_params ⇒ Object
Default API request parameters used by API.query.
Class Method Summary collapse
-
.prepare_params(params) ⇒ Hash
Attempt to coerce parameters into formats that the Scoreoid API expects.
-
.query(api_method, params = {}) ⇒ String
Query a given Scoreoid API method and return the repsonse as a string.
-
.query_and_parse(api_method, params = {}) ⇒ Hash
Query a given Scoreoid API method and parse the JSON response.
Class Attribute Details
.default_params ⇒ Object
Default API request parameters used by query
This would normally be set with Scoreoid.configure
15 16 17 |
# File 'lib/scoreoid/api.rb', line 15 def default_params @default_params end |
Class Method Details
.prepare_params(params) ⇒ Hash
Attempt to coerce parameters into formats that the Scoreoid API expects.
Date parameters will be parsed with Chronic, so you can supply dates in natural language such as “may 5th 2012” or “1 year ago”.
83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/scoreoid/api.rb', line 83 def prepare_params(params) params.each do |key, _| if [:start_date, :end_date].include?(key) if params[key].respond_to? :to_s params[key] = Chronic.parse(params[key].to_s, context: :past) end if params[key].respond_to? :strftime params[key] = params[key].strftime '%Y-%m-%d' end end end params end |
.query(api_method, params = {}) ⇒ String
Query a given Scoreoid API method and return the repsonse as a string.
Supplied parameters will be prepared with prepare_params before sending. This is so that you can, for example, supply a Date object for :start_date even though the Scoreoid API expects it to be a string formatted as “YYYY-MM-DD”.
29 30 31 32 33 |
# File 'lib/scoreoid/api.rb', line 29 def query(api_method, params={}) params = self.prepare_params(params) params.merge!(self.default_params ||= {}) RestClient.post("https://www.scoreoid.com/api/#{api_method}", params) end |
.query_and_parse(api_method, params = {}) ⇒ Hash
Query a given Scoreoid API method and parse the JSON response.
The response type is set to ‘json’ for you automatically.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/scoreoid/api.rb', line 49 def query_and_parse(api_method, params={}) # We're gonna parse JSON, so ask for JSON params = params.merge(response: 'json') # Query Scoreoid api_response = self.query(api_method, params) # Fix for API responses that return arrays (they can't be parsed by MultiJson) if api_response =~ /\A\[/ and api_response =~ /\]\Z/ api_response.sub!(/\A\[/, '') # Remove leading bracket api_response.sub!(/\]\Z/, '') # Remove trailing bracket end # Parse the response parsed_result = MultiJson.load(api_response) # Raise an error if the response JSON contained one raise APIError, parsed_result['error'] if parsed_result.key? 'error' # Return the parsed result parsed_result end |