class Pluct::Resource
Attributes
data[R]
response[R]
schema[R]
uri[R]
Public Class Methods
new(uri, response = nil)
click to toggle source
# File lib/pluct/resource.rb, line 7 def initialize(uri, response = nil) @uri = uri @response = response || get(@uri) @data ||= (JSON.is_json?(@response.body) ? JSON.parse(@response.body, {symbolize_names: true}) : {}) @schema = Schema.from_header(@response.headers) Resource.create_methods(@schema.links) if @schema end
Private Class Methods
create_methods(links=[])
click to toggle source
# File lib/pluct/resource.rb, line 22 def self.create_methods(links=[]) links.each do |link| ldo = Pluct::LinkDescriptionObject.new(link) define_method "rel_#{link["rel"]}" do |*args| params, *options = *args params ||= {} method = link["method"] || "GET" mapping = params.dup mapping.merge!(@data) uri = ldo.expand_href(mapping) payload = ldo.unused_mapping(params) options.unshift(payload) response = send(method.downcase, uri, *options) Resource.new(uri, response) end end end
Public Instance Methods
method_missing(method, *args)
click to toggle source
Calls superclass method
# File lib/pluct/resource.rb, line 16 def method_missing(method, *args) @data[method] || super end