class BooticClient::Relation

Constants

GET
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