Class: Usergrid::Resource
- Inherits:
-
RestClient::Resource
- Object
- RestClient::Resource
- Usergrid::Resource
- Defined in:
- lib/usergrid/core/resource.rb
Direct Known Subclasses
Constant Summary collapse
- RESERVED =
%w( created modified metadata uri )
- DEFAULT_API_URL =
'https://api.usergrid.com'- TYPE_HEADERS =
{ content_type: :json, accept: :json }
Instance Attribute Summary collapse
-
#api_url ⇒ Object
readonly
Returns the value of attribute api_url.
-
#current_user ⇒ Object
readonly
Returns the value of attribute current_user.
-
#response ⇒ Object
readonly
Returns the value of attribute response.
Instance Method Summary collapse
-
#[](suburl, &new_block) ⇒ Object
overridden to ensure sub resources are instances of this class.
- #api_resource(suburl) ⇒ Object
-
#application(organization, application = 'sandbox') ⇒ Object
application defaults to sandbox if none provided.
- #auth_token ⇒ Object
- #auth_token=(auth_token) ⇒ Object
- #collection ⇒ Object
-
#delete_query(query = nil, options = {}) ⇒ Object
options: ‘reversed’, ‘start’, ‘cursor’, ‘limit’, ‘permission’.
- #entities ⇒ Object
- #entity ⇒ Object
- #get(additional_headers = {}, &block) ⇒ Object
-
#initialize(resource_url = DEFAULT_API_URL, api_url = nil, options = {}, response = nil) ⇒ Resource
constructor
A new instance of Resource.
- #logged_in? ⇒ Boolean
-
#login(username, password) ⇒ Object
gets user token and automatically set auth header for future requests precondition: resource must already be set to the correct context (application or management).
-
#logout ⇒ Object
remove auth header for future requests only affects self and derivative resources.
- #management ⇒ Object
- #post(payload, additional_headers = {}, &block) ⇒ Object
- #put(payload, additional_headers = {}, &block) ⇒ Object
-
#query(query = nil, options = {}) ⇒ Object
options: ‘reversed’, ‘start’, ‘cursor’, ‘limit’, ‘permission’.
-
#update_query(updates, query = nil, options = {}) ⇒ Object
options: ‘reversed’, ‘start’, ‘cursor’, ‘limit’, ‘permission’.
Constructor Details
#initialize(resource_url = DEFAULT_API_URL, api_url = nil, options = {}, response = nil) ⇒ Resource
Returns a new instance of Resource.
12 13 14 15 16 17 |
# File 'lib/usergrid/core/resource.rb', line 12 def initialize(resource_url=DEFAULT_API_URL, api_url=nil, ={}, response=nil) [:headers] = TYPE_HEADERS.merge [:headers] || {} @api_url = api_url || resource_url self.response = response super resource_url, , &method(:handle_response) end |
Instance Attribute Details
#api_url ⇒ Object (readonly)
Returns the value of attribute api_url.
10 11 12 |
# File 'lib/usergrid/core/resource.rb', line 10 def api_url @api_url end |
#current_user ⇒ Object (readonly)
Returns the value of attribute current_user.
10 11 12 |
# File 'lib/usergrid/core/resource.rb', line 10 def current_user @current_user end |
#response ⇒ Object
Returns the value of attribute response.
10 11 12 |
# File 'lib/usergrid/core/resource.rb', line 10 def response @response end |
Instance Method Details
#[](suburl, &new_block) ⇒ Object
overridden to ensure sub resources are instances of this class
83 84 85 86 87 88 89 90 |
# File 'lib/usergrid/core/resource.rb', line 83 def [](suburl, &new_block) case when block_given? then Resource.new(concat_urls(url, suburl), api_url, , &new_block) when block then Resource.new(concat_urls(url, suburl), api_url, , &block) else Resource.new(concat_urls(url, suburl), api_url, ) end end |
#api_resource(suburl) ⇒ Object
92 93 94 |
# File 'lib/usergrid/core/resource.rb', line 92 def api_resource(suburl) Resource.new(concat_urls(api_url, suburl), api_url, ) end |
#application(organization, application = 'sandbox') ⇒ Object
application defaults to sandbox if none provided
45 46 47 |
# File 'lib/usergrid/core/resource.rb', line 45 def application(organization, application='sandbox') Usergrid::Application.new concat_urls(api_url, "#{organization}/#{application}"), end |
#auth_token ⇒ Object
118 119 120 121 122 123 124 |
# File 'lib/usergrid/core/resource.rb', line 118 def auth_token begin @options[:headers][:Authorization].gsub 'Bearer ', '' rescue nil end end |
#auth_token=(auth_token) ⇒ Object
110 111 112 113 114 115 116 |
# File 'lib/usergrid/core/resource.rb', line 110 def auth_token=(auth_token) if auth_token @options[:headers].merge!({ Authorization: "Bearer #{auth_token}" }) else @options[:headers].delete :Authorization if @options end end |
#collection ⇒ Object
77 78 79 80 |
# File 'lib/usergrid/core/resource.rb', line 77 def collection get unless response Collection.new url, api_url, , response end |
#delete_query(query = nil, options = {}) ⇒ Object
options: ‘reversed’, ‘start’, ‘cursor’, ‘limit’, ‘permission’
62 63 64 65 |
# File 'lib/usergrid/core/resource.rb', line 62 def delete_query(query=nil, ={}) = .merge({ql: query}) if query delete({params: }) end |
#entities ⇒ Object
72 73 74 75 |
# File 'lib/usergrid/core/resource.rb', line 72 def entities get unless response response.entities end |
#entity ⇒ Object
67 68 69 70 |
# File 'lib/usergrid/core/resource.rb', line 67 def entity get unless response response.entity end |
#get(additional_headers = {}, &block) ⇒ Object
96 97 98 |
# File 'lib/usergrid/core/resource.rb', line 96 def get(additional_headers={}, &block) self.response = super additional_headers, &block end |
#logged_in? ⇒ Boolean
36 37 38 |
# File 'lib/usergrid/core/resource.rb', line 36 def logged_in? !!auth_token end |
#login(username, password) ⇒ Object
gets user token and automatically set auth header for future requests precondition: resource must already be set to the correct context (application or management)
21 22 23 24 25 26 27 |
# File 'lib/usergrid/core/resource.rb', line 21 def login(username, password) response = self['token'].post grant_type: 'password', username: username, password: password self.auth_token = response.data['access_token'] user_uuid = response.data['user']['uuid'] @current_user = self["/users/#{user_uuid}"].get.entity response end |
#logout ⇒ Object
remove auth header for future requests only affects self and derivative resources
31 32 33 34 |
# File 'lib/usergrid/core/resource.rb', line 31 def logout self.auth_token = nil @current_user = nil end |
#management ⇒ Object
40 41 42 |
# File 'lib/usergrid/core/resource.rb', line 40 def management Usergrid::Management.new api_url, end |
#post(payload, additional_headers = {}, &block) ⇒ Object
100 101 102 103 |
# File 'lib/usergrid/core/resource.rb', line 100 def post(payload, additional_headers={}, &block) payload = MultiJson.dump(payload) unless payload.is_a? String self.response = super payload, additional_headers, &block end |
#put(payload, additional_headers = {}, &block) ⇒ Object
105 106 107 108 |
# File 'lib/usergrid/core/resource.rb', line 105 def put(payload, additional_headers={}, &block) payload = MultiJson.dump(payload) unless payload.is_a? String self.response = super payload, additional_headers, &block end |
#query(query = nil, options = {}) ⇒ Object
options: ‘reversed’, ‘start’, ‘cursor’, ‘limit’, ‘permission’
50 51 52 53 |
# File 'lib/usergrid/core/resource.rb', line 50 def query(query=nil, ={}) = .merge({ql: query}) if query get({params: }) end |
#update_query(updates, query = nil, options = {}) ⇒ Object
options: ‘reversed’, ‘start’, ‘cursor’, ‘limit’, ‘permission’
56 57 58 59 |
# File 'lib/usergrid/core/resource.rb', line 56 def update_query(updates, query=nil, ={}) = .merge({ql: query}) if query put(updates, {params: }) end |