Class: Optica::Client::Request
- Inherits:
-
Object
- Object
- Optica::Client::Request
- Defined in:
- lib/optica/client/request.rb
Overview
Request builds URIs to fetch data from Optica. There is no planned support for posting data to Optica.
By default a Request will request the minimum number of fields from Optica to save on response size, using the /roles endpoint. Use the #fields or #all_fields! methods to fetch more fields.
Build your request, then submit it using your HTTP client of choice using the #to_uri method.
Instance Method Summary collapse
- #fields ⇒ Object
- #filters ⇒ Object
-
#initialize(root_url, given_opts = {}) ⇒ Request
constructor
A new instance of Request.
- #root ⇒ Object
-
#select(*fields) ⇒ Object
Add more requested fields.
-
#select_all ⇒ Object
Request all fields.
- #select_all? ⇒ Boolean
- #to_uri ⇒ URI
-
#where(filters) ⇒ Object
Add filters to this optica request.
Constructor Details
#initialize(root_url, given_opts = {}) ⇒ Request
Returns a new instance of Request.
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/optica/client/request.rb', line 21 def initialize(root_url, given_opts = {}) opts = { fields: [], filters: {}, all_fields: false, }.merge(given_opts) @uri = URI(root_url) @fields = opts[:fields] @filters = opts[:filters] @all_fields = opts[:all_fields] end |
Instance Method Details
#fields ⇒ Object
38 39 40 |
# File 'lib/optica/client/request.rb', line 38 def fields @fields.dup end |
#filters ⇒ Object
34 35 36 |
# File 'lib/optica/client/request.rb', line 34 def filters @filters.dup end |
#root ⇒ Object
86 87 88 |
# File 'lib/optica/client/request.rb', line 86 def root @uri end |
#select(*fields) ⇒ Object
Add more requested fields.
51 52 53 54 |
# File 'lib/optica/client/request.rb', line 51 def select(*fields) @fields.concat(fields).uniq! self end |
#select_all ⇒ Object
Request all fields. Overwrites any previously-requested fields.
59 60 61 62 |
# File 'lib/optica/client/request.rb', line 59 def select_all @all_fields = true self end |
#select_all? ⇒ Boolean
90 91 92 |
# File 'lib/optica/client/request.rb', line 90 def select_all? @all_fields end |
#to_uri ⇒ URI
79 80 81 82 83 84 |
# File 'lib/optica/client/request.rb', line 79 def to_uri uri = @uri.dup uri.query = URI.encode_www_form(query_params) uri.path = '/roles' unless @all_fields uri end |
#where(filters) ⇒ Object
Add filters to this optica request
Filters should be a hash of String => Constraint, where constraint is a
-
regex (regex match)
-
boolean (matches 1, true, or True)
-
string (exact match)
73 74 75 76 |
# File 'lib/optica/client/request.rb', line 73 def where(filters) @filters.merge!(filters) self end |