class PQSDK::RemoteObject

The RemoteObject class is an abstraction for common API utilities like .get and save.

Attributes

endpoint[R]

Public Class Methods

all() click to toggle source
# File lib/pqsdk/remote_object.rb, line 15
def self.all
  res = RestLayer.get(@endpoint)
  if res[0] == 200
    res[1].map { |entry| from_hash(entry) }
  else
    raise "Unexpected HTTP status code #{res[0]}, #{res[1]}"
  end
end
from_hash(json) click to toggle source
# File lib/pqsdk/remote_object.rb, line 35
def self.from_hash(json)
  result = new
  json.each do |k, v|
    result.send("#{k}=", v) if result.respond_to?("#{k}=")
  end

  result
end
get(id) click to toggle source
# File lib/pqsdk/remote_object.rb, line 24
def self.get(id)
  res = RestLayer.get("#{@endpoint}/#{id}")
  if res[0] == 200
    from_hash res[1]
  elsif res[0] == 404
    nil
  else
    raise "Unexpected HTTP status code #{res[0]}, #{res[1]}"
  end
end

Public Instance Methods

create() click to toggle source
# File lib/pqsdk/remote_object.rb, line 52
def create
  res = RestLayer.post(self.class.endpoint, serializable_hash, 'Authorization' => "Bearer #{Token.access_token}")
  if [201, 202].include? res[0]
    self.id = res[1]['id']
    true
  else
    raise "Unexpected HTTP status code #{res[0]}, #{res[1]}"
    # false
  end
end
create!() click to toggle source
# File lib/pqsdk/remote_object.rb, line 77
def create!
  create
end
persisted?() click to toggle source
# File lib/pqsdk/remote_object.rb, line 85
def persisted?
  !id.nil?
end
save() click to toggle source
# File lib/pqsdk/remote_object.rb, line 44
def save
  if valid?
    persisted? ? update! : create!
  else
    false
  end
end
save!() click to toggle source
# File lib/pqsdk/remote_object.rb, line 73
def save!
  save || raise('Save failed')
end
update() click to toggle source
# File lib/pqsdk/remote_object.rb, line 63
def update
  res = RestLayer.put("#{self.class.endpoint}/#{id}", serializable_hash, 'Authorization' => "Bearer #{Token.access_token}")
  if res[0] == 200
    true
  else
    raise "Unexpected HTTP status code #{res[0]}, #{res[1]}"
    # false
  end
end
update!() click to toggle source
# File lib/pqsdk/remote_object.rb, line 81
def update!
  update
end