Class: Homeflow::API::Query
- Inherits:
-
RequestSpecification
- Object
- RequestSpecification
- Homeflow::API::Query
- Defined in:
- lib/homeflow/api/query.rb
Instance Attribute Summary collapse
-
#fields(*args) ⇒ Object
Returns the value of attribute fields.
-
#page(page) ⇒ Object
Returns the value of attribute page.
-
#page_size(page_size) ⇒ Object
Returns the value of attribute page_size.
-
#query ⇒ Object
Returns the value of attribute query.
-
#resource_class ⇒ Object
Returns the value of attribute resource_class.
Instance Method Summary collapse
- #add_search(search_hash) ⇒ Object
- #each(&block) ⇒ Object
-
#initialize(resource_class, params) ⇒ Query
constructor
A new instance of Query.
- #options(options_hash) ⇒ Object
- #response ⇒ Object
- #results ⇒ Object
- #results! ⇒ Object
- #set_fields(fields_array) ⇒ Object
- #to_params ⇒ Object
- #where(search_hash) ⇒ Object
Constructor Details
#initialize(resource_class, params) ⇒ Query
Returns a new instance of Query.
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/homeflow/api/query.rb', line 8 def initialize(resource_class, params) @resource_class = resource_class @fields = [] @options = {} @page_size = nil @page = 1 search,fields = nil add_search(search) if search = params.delete(:query) set_fields(fields) if fields = params.delete(:fields) end |
Instance Attribute Details
#fields(*args) ⇒ Object
Returns the value of attribute fields.
6 7 8 |
# File 'lib/homeflow/api/query.rb', line 6 def fields @fields end |
#page(page) ⇒ Object
Returns the value of attribute page.
6 7 8 |
# File 'lib/homeflow/api/query.rb', line 6 def page @page end |
#page_size(page_size) ⇒ Object
Returns the value of attribute page_size.
6 7 8 |
# File 'lib/homeflow/api/query.rb', line 6 def page_size @page_size end |
#query ⇒ Object
Returns the value of attribute query.
6 7 8 |
# File 'lib/homeflow/api/query.rb', line 6 def query @query end |
#resource_class ⇒ Object
Returns the value of attribute resource_class.
6 7 8 |
# File 'lib/homeflow/api/query.rb', line 6 def resource_class @resource_class end |
Instance Method Details
#add_search(search_hash) ⇒ Object
44 45 46 47 |
# File 'lib/homeflow/api/query.rb', line 44 def add_search(search_hash) @query ||= {} @query.merge!(search_hash) end |
#each(&block) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/homeflow/api/query.rb', line 65 def each(&block) r = results.send(resource_class.resource_uri) r.each {|k| case block.arity when 1 yield k when 2 yield k, results end } end |
#options(options_hash) ⇒ Object
34 35 36 37 |
# File 'lib/homeflow/api/query.rb', line 34 def () @options.merge!() self end |
#response ⇒ Object
61 62 63 |
# File 'lib/homeflow/api/query.rb', line 61 def response results end |
#results ⇒ Object
53 54 55 |
# File 'lib/homeflow/api/query.rb', line 53 def results @_results ||= results! end |
#results! ⇒ Object
57 58 59 |
# File 'lib/homeflow/api/query.rb', line 57 def results! @_results = @resource_class.execute(self) end |
#set_fields(fields_array) ⇒ Object
49 50 51 |
# File 'lib/homeflow/api/query.rb', line 49 def set_fields(fields_array) @fields = fields_array end |
#to_params ⇒ Object
77 78 79 80 81 |
# File 'lib/homeflow/api/query.rb', line 77 def to_params = {} = .merge({:page_size => @page_size}) unless @page_size.nil? = .merge({:search => @query, :fields => @fields.join(','), :search_options => @options, :page=> @page}) end |
#where(search_hash) ⇒ Object
29 30 31 32 |
# File 'lib/homeflow/api/query.rb', line 29 def where(search_hash) add_search(search_hash) self end |