Class: Optica::Client::Request

Inherits:
Object
  • Object
show all
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

Constructor Details

#initialize(root_url, given_opts = {}) ⇒ Request

Returns a new instance of Request.

Parameters:

  • root_url (String)

    HTTP(S) URI root of your Optica instance.

  • given_opts (Hash) (defaults to: {})

    options

Options Hash (given_opts):

  • :fields (Array<String>)

    Additional fields to request. see also #fields and #all_fields!

  • :filters (Hash)

    Filters. See #where.

  • :all_fields (Boolean) — default: false

    See #all_fields!



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

#fieldsObject



38
39
40
# File 'lib/optica/client/request.rb', line 38

def fields
  @fields.dup
end

#filtersObject



34
35
36
# File 'lib/optica/client/request.rb', line 34

def filters
  @filters.dup
end

#rootObject



86
87
88
# File 'lib/optica/client/request.rb', line 86

def root
  @uri
end

#select(*fields) ⇒ Object

Add more requested fields.

Parameters:

  • fields (Array<String>)

Returns:

  • self



51
52
53
54
# File 'lib/optica/client/request.rb', line 51

def select(*fields)
  @fields.concat(fields).uniq!
  self
end

#select_allObject

Request all fields. Overwrites any previously-requested fields.

Returns:

  • self



59
60
61
62
# File 'lib/optica/client/request.rb', line 59

def select_all
  @all_fields = true
  self
end

#select_all?Boolean

Returns:

  • (Boolean)


90
91
92
# File 'lib/optica/client/request.rb', line 90

def select_all?
  @all_fields
end

#to_uriURI

Returns:

  • (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)

Parameters:

  • filters (Hash)

Returns:

  • self



73
74
75
76
# File 'lib/optica/client/request.rb', line 73

def where(filters)
  @filters.merge!(filters)
  self
end