Module: Beyonic::AbstractApi::ClassMethods

Defined in:
lib/beyonic/abstract_api.rb

Instance Method Summary collapse

Instance Method Details

#create(payload = {}, header_overrides = {}) ⇒ Object



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

def create(payload = {}, header_overrides = {})
  # transform metadata from hash notation to dot notation
  if (payload.has_key?:metadata) &&  (!payload[:metadata].empty?)
    payload[:metadata].each do |key, value|
      payload["metadata.#{key}"] = value
    end
    payload.delete:metadata
  end
  resp = RestClient.post(@endpoint_url, payload, headers(header_overrides))
  self.new(Oj.load(resp))
rescue RestClient::BadRequest => e
  raise ApiError.new(Oj.load(e.response.body))
end

#delete(id) ⇒ Object



49
50
51
52
# File 'lib/beyonic/abstract_api.rb', line 49

def delete(id)
  resp = RestClient.delete("#{@endpoint_url}/#{id}", headers)
  return true if resp == ""
end

#get(id) ⇒ Object



37
38
39
40
# File 'lib/beyonic/abstract_api.rb', line 37

def get(id)
  resp = RestClient.get("#{@endpoint_url}/#{id}", headers)
  self.new(Oj.load(resp))
end

#list(payload = {}) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/beyonic/abstract_api.rb', line 25

def list(payload = {})
  # Turn payload into query parameters
  require "addressable/uri"
  uri = Addressable::URI.new
  uri.query_values = payload

  resp = RestClient.get(@endpoint_url + '?' + uri.query, headers)
  ret = self.new(Oj.load(resp))
  ret.results = ret.results.map { |obj_attrs| self.new(obj_attrs)}
  return ret
end

#set_endpoint_resource(resource) ⇒ Object



7
8
9
# File 'lib/beyonic/abstract_api.rb', line 7

def set_endpoint_resource(resource)
  @endpoint_url = Beyonic.endpoint_base + resource
end

#update(id, payload, header_overrides = {}) ⇒ Object



42
43
44
45
46
47
# File 'lib/beyonic/abstract_api.rb', line 42

def update(id, payload, header_overrides = {})
  resp = RestClient.patch("#{@endpoint_url}/#{id}", payload, headers(header_overrides))
  self.new(Oj.load(resp))
  rescue RestClient::BadRequest => e
    raise ApiError.new(Oj.load(e.response.body))
end