Module: Unchained::Request

Included in:
Client
Defined in:
lib/unchained/request.rb

Instance Method Summary collapse

Instance Method Details

#get(url, params = {}) ⇒ Object

Use RestClient to actually make the request to the API. If the response is a 200 (success), we will parse the response as JSON and return it. If the response is a known error (i.e. a 404), we will raise a custom Unchained error (found in error.rb). If the response is an unkonwn error, we will return it exactly as we found it.



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/unchained/request.rb', line 11

def get(url, params={})
  RestClient.get(url, build_params(params)) do |resp, req, res, &block|
    case resp.code
    when 200
      JSON.parse(resp)
    when 404
      raise Unchained::NotFound.new(res.message)
    else
      resp.return!(req, res, &block)
    end
  end
end

#get_resource(url, resource_class, params = {}) ⇒ Object

If an API endpoint returns a single resource, not an Array of resources, we want to use this.

Returns an instance of ‘resource_class`.



28
29
30
# File 'lib/unchained/request.rb', line 28

def get_resource(url, resource_class, params={})
  resource_class.from_hash(get(url, params), client: self)
end

#get_resources(url, resource_class, params = {}) ⇒ Object

If an API endpoint returns an Array of resources, we want to use this.

Returns an array of ‘resource_classes`.



35
36
37
38
39
# File 'lib/unchained/request.rb', line 35

def get_resources(url, resource_class, params={})
  get(url, params).map do |result|
    resource_class.from_hash(result, client: self)
  end
end