class BooticClient::Relation
Constants
- GET
- HEAD
- OPTIONS
Attributes
complain_on_undeclared_params[W]
attrs[R]
client[R]
complain_on_undeclared_params[R]
Public Class Methods
complain_on_undeclared_params()
click to toggle source
# File lib/bootic_client/relation.rb, line 17 def complain_on_undeclared_params return true unless instance_variable_defined?('@complain_on_undeclared_params') @complain_on_undeclared_params end
expand(href, opts = {})
click to toggle source
# File lib/bootic_client/relation.rb, line 82 def self.expand(href, opts = {}) WhinyURI.new(href).expand(opts) end
new(attrs, client, complain_on_undeclared_params: self.class.complain_on_undeclared_params)
click to toggle source
# File lib/bootic_client/relation.rb, line 23 def initialize(attrs, client, complain_on_undeclared_params: self.class.complain_on_undeclared_params) @attrs, @client = attrs, client @complain_on_undeclared_params = complain_on_undeclared_params end
Public Instance Methods
docs()
click to toggle source
# File lib/bootic_client/relation.rb, line 56 def docs attrs['docs'] end
href()
click to toggle source
# File lib/bootic_client/relation.rb, line 32 def href attrs['href'] end
inspect()
click to toggle source
# File lib/bootic_client/relation.rb, line 28 def inspect %(#<#{self.class.name} #{attrs.inspect}>) end
name()
click to toggle source
# File lib/bootic_client/relation.rb, line 44 def name attrs['name'] end
parameters()
click to toggle source
# File lib/bootic_client/relation.rb, line 40 def parameters @parameters ||= templated? ? uri.variables : [] end
run(opts = {})
click to toggle source
# File lib/bootic_client/relation.rb, line 68 def run(opts = {}) if templated? uri_vars = uri.variables payload = opts.each_with_object({}) do |(k,v),memo| memo[k] = v unless uri_vars.include?(k.to_s) end # remove payload vars from URI opts if destructive action opts = opts.reject{|k, v| !uri_vars.include?(k.to_s) } if destructive? client.request_and_wrap transport_method.to_sym, uri.expand(opts), payload else client.request_and_wrap transport_method.to_sym, href, opts end end
templated?()
click to toggle source
# File lib/bootic_client/relation.rb, line 36 def templated? !!attrs['templated'] end
title()
click to toggle source
# File lib/bootic_client/relation.rb, line 48 def title attrs['title'] end
to_hash()
click to toggle source
# File lib/bootic_client/relation.rb, line 60 def to_hash attrs end
transport_method()
click to toggle source
# File lib/bootic_client/relation.rb, line 64 def transport_method @transport_method ||= attrs.key?('method') ? attrs['method'].to_s.downcase : GET end
type()
click to toggle source
# File lib/bootic_client/relation.rb, line 52 def type attrs['type'] end
Protected Instance Methods
destructive?()
click to toggle source
# File lib/bootic_client/relation.rb, line 93 def destructive? ![GET, OPTIONS, HEAD].include? transport_method end
uri()
click to toggle source
# File lib/bootic_client/relation.rb, line 89 def uri @uri ||= WhinyURI.new(href, complain_on_undeclared_params) end