module JSONModel::Client
Public Class Methods
included(base)
click to toggle source
# File lib/aspace_client/jsonmodel_client.rb, line 283 def self.included(base) base.extend(ClassMethods) end
Public Instance Methods
add_error(field, message)
click to toggle source
# File lib/aspace_client/jsonmodel_client.rb, line 395 def add_error(field, message) @errors ||= {} @errors[field.to_s] ||= [] @errors[field.to_s] << message end
delete()
click to toggle source
# File lib/aspace_client/jsonmodel_client.rb, line 354 def delete response = JSONModel::HTTP.delete_request(self.class.my_url(self.id)) if response.code == '200' true elsif response.code == '403' raise AccessDeniedException.new elsif response.code == '404' nil elsif response.code == '409' err = ASUtils.json_parse(response.body) raise ConflictException.new(err["error"]) else raise Exception.new("Unknown response: #{response}") end end
refetch()
click to toggle source
# File lib/aspace_client/jsonmodel_client.rb, line 343 def refetch # if a new object, nothing to fetch return self if self.id.nil? obj = (self.instance_data.has_key? :find_opts) ? self.class.find(self.id, self.instance_data[:find_opts]) : self.class.find(self.id) self.reset_from(obj) if not obj.nil? end
save(opts = {}, whole_body = false)
click to toggle source
Validate this JSONModel
instance, produce a JSON
string, and send an update to the backend.
# File lib/aspace_client/jsonmodel_client.rb, line 290 def save(opts = {}, whole_body = false) clear_errors type = self.class.record_type response = JSONModel::HTTP.post_json(self.class.my_url(self.id, opts), self.to_json) if response.code == '200' response = ASUtils.json_parse(response.body) self.uri = self.class.uri_for(response["id"], opts) # If we were able to save successfully, increment our local version # number to match the version on the server. self.lock_version = response["lock_version"] # Ensure object is up to date if response["stale"] self.refetch end return whole_body ? response : response["id"] elsif response.code == '403' raise AccessDeniedException.new elsif response.code == '409' err = ASUtils.json_parse(response.body) raise ConflictException.new(err["error"]) elsif response.code == '404' raise RecordNotFound.new elsif response.code =~ /^4/ err = ASUtils.json_parse(response.body) if err["error"].is_a?(Hash) err["error"].each do |field, errors| errors.each do |msg| add_error(field, msg) end end end raise ValidationException.new(:invalid_object => self, :errors => err["error"]) else raise Exception.new("Unknown response: #{response.body} (code: #{response.code})") end end
set_suppressed(val)
click to toggle source
Mark the suppression status of this record
# File lib/aspace_client/jsonmodel_client.rb, line 372 def set_suppressed(val) response = JSONModel::HTTP.post_form("#{self.uri}/suppressed", :suppressed => val) if response.code == '403' raise AccessDeniedException.new("Permission denied when setting suppression status") elsif response.code != '200' raise "Error when setting suppression status for #{self}: #{response.code} -- #{response.body}" end self["suppressed"] = ASUtils.json_parse(response.body)["suppressed_state"] end
suppress()
click to toggle source
# File lib/aspace_client/jsonmodel_client.rb, line 385 def suppress set_suppressed(true) end
unsuppress()
click to toggle source
# File lib/aspace_client/jsonmodel_client.rb, line 390 def unsuppress set_suppressed(false) end