Class: McCracken::Query
Instance Attribute Summary collapse
-
#values ⇒ Object
readonly
Returns the value of attribute values.
Instance Method Summary collapse
- #fetch ⇒ Object
-
#fetch_from(endpoint, collection: true) ⇒ Object
Allow fetching from a custom endpoint.
-
#fields(*args) ⇒ Object
Hash resouce_name: [array of attribs].
- #filter(*args) ⇒ Object
- #find(id) ⇒ Object
-
#headers(opts = {}) ⇒ McCracken::Query
Chainably set headers.
-
#include(*args) ⇒ McCracken::Query
Chainably include related resources.
-
#initialize(client = nil) ⇒ Query
constructor
Description of method.
-
#page(opts = {}) ⇒ McCracken::Query
Chainably set page options.
-
#sort(*args) ⇒ McCracken::Query
Chainably sort results.
- #to_params ⇒ Object
-
#to_query_string ⇒ String
Query as a query string.
- #to_s ⇒ Object
Constructor Details
#initialize(client = nil) ⇒ Query
Description of method
8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/mccracken/query.rb', line 8 def initialize(client = nil) @client = client @headers = {} @values = { include: [], fields: [], filter: [], sort: [], page: {} } end |
Instance Attribute Details
#values ⇒ Object (readonly)
Returns the value of attribute values.
3 4 5 |
# File 'lib/mccracken/query.rb', line 3 def values @values end |
Instance Method Details
#fetch ⇒ Object
20 21 22 23 24 25 26 27 |
# File 'lib/mccracken/query.rb', line 20 def fetch if @client response = @client.agent.get(params: to_params, headers: @headers) ResponseMapper.new(response.body).collection else raise McCracken::ClientNotSet, "Client was not set. Query#new(client)" end end |
#fetch_from(endpoint, collection: true) ⇒ Object
Allow fetching from a custom endpoint
33 34 35 36 37 38 39 40 41 |
# File 'lib/mccracken/query.rb', line 33 def fetch_from(endpoint, collection: true) if @client path = [@client.agent.negotiate_path, endpoint.gsub(/^\//, '')].join('/') response = @client.agent.get(path: path, params: to_params, headers: @headers) ResponseMapper.new(response.body).send(collection ? :collection : :resource) else raise McCracken::ClientNotSet, "Client was not set. Query#new(client)" end end |
#fields(*args) ⇒ Object
Hash resouce_name: [array of attribs]
145 146 147 148 |
# File 'lib/mccracken/query.rb', line 145 def fields(*args) @values[:fields] += args self end |
#filter(*args) ⇒ Object
150 151 152 153 |
# File 'lib/mccracken/query.rb', line 150 def filter(*args) @values[:filter] += args self end |
#find(id) ⇒ Object
43 44 45 46 47 48 49 50 |
# File 'lib/mccracken/query.rb', line 43 def find(id) if @client response = @client.agent.get(id: id, params: to_params, headers: @headers) ResponseMapper.new(response.body).resource else raise McCracken::ClientNotSet, "Client was not set. Query#new(client)" end end |
#headers(opts = {}) ⇒ McCracken::Query
Chainably set headers
94 95 96 97 |
# File 'lib/mccracken/query.rb', line 94 def headers(opts={}) @headers.merge!(opts) self end |
#include(*args) ⇒ McCracken::Query
Chainably include related resources.
114 115 116 117 |
# File 'lib/mccracken/query.rb', line 114 def include(*args) @values[:include] += args self end |
#page(opts = {}) ⇒ McCracken::Query
Chainably set page options
80 81 82 83 |
# File 'lib/mccracken/query.rb', line 80 def page(opts={}) @values[:page].merge!(opts) self end |
#sort(*args) ⇒ McCracken::Query
Note:
Default order is ascending
Chainably sort results
138 139 140 141 142 |
# File 'lib/mccracken/query.rb', line 138 def sort(*args) validate_sort_args(args.select{|arg| arg.is_a?(Hash)}) @values[:sort] += args self end |
#to_params ⇒ Object
61 62 63 64 65 66 67 68 69 |
# File 'lib/mccracken/query.rb', line 61 def to_params str = {} str[:filter] = filter_to_query_value unless @values[:filter].empty? str[:fields] = fields_to_query_value unless @values[:fields].empty? str[:include] = include_to_query_value unless @values[:include].empty? str[:sort] = sort_to_query_value unless @values[:sort].empty? str[:page] = @values[:page] unless @values[:page].empty? str end |
#to_query_string ⇒ String
53 54 55 |
# File 'lib/mccracken/query.rb', line 53 def to_query_string Faraday::Utils.build_nested_query(to_params) end |
#to_s ⇒ Object
57 58 59 |
# File 'lib/mccracken/query.rb', line 57 def to_s to_query_string end |