Class: Rlocu::VenueQuery
- Inherits:
-
Object
- Object
- Rlocu::VenueQuery
- Includes:
- QueryBuilder
- Defined in:
- lib/rlocu/venue_query.rb
Constant Summary collapse
- VenueQueryError =
Class.new(StandardError)
Instance Attribute Summary collapse
-
#return_fields ⇒ Object
readonly
Returns the value of attribute return_fields.
Instance Method Summary collapse
- #form_data ⇒ Object
-
#initialize(query_conditions:, return_fields:) ⇒ VenueQuery
constructor
A new instance of VenueQuery.
- #query ⇒ Object
- #query_conditions ⇒ Object
Methods included from QueryBuilder
Constructor Details
#initialize(query_conditions:, return_fields:) ⇒ VenueQuery
Returns a new instance of VenueQuery.
11 12 13 14 15 16 17 |
# File 'lib/rlocu/venue_query.rb', line 11 def initialize(query_conditions:, return_fields:) raise ArgumentError, 'Query Conditions Param must be an array of QueryConditions.' if !query_conditions.is_a?(Array) || !query_conditions.first.is_a?(QueryCondition) raise ArgumentError, 'Return Fields Param must be an array of fields.' if !return_fields.is_a?(Array) || return_fields.empty? @query_conditions = query_conditions @return_fields = return_fields end |
Instance Attribute Details
#return_fields ⇒ Object (readonly)
Returns the value of attribute return_fields.
9 10 11 |
# File 'lib/rlocu/venue_query.rb', line 9 def return_fields @return_fields end |
Instance Method Details
#form_data ⇒ Object
23 24 25 |
# File 'lib/rlocu/venue_query.rb', line 23 def form_data {api_key: Rlocu.api_key, fields: return_fields, venue_queries: query_conditions }.to_json end |
#query ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/rlocu/venue_query.rb', line 27 def query # TODO wrap this in a timeout result = JSON.parse(RestClient.post(base_url, form_data)) status = result['status'] raise VenueQueryError.new("Query failed with status [#{status}] and http_status [#{result['http_status']}]") unless status == 'success' result['venues'].each.reduce([]) { |accum, venue| accum << Rlocu::Venue.new(venue) } end |
#query_conditions ⇒ Object
19 20 21 |
# File 'lib/rlocu/venue_query.rb', line 19 def query_conditions @query_conditions.map(&:to_h) end |