Module: Braque::Model::ClassMethods

Includes:
Collection, Relations
Defined in:
lib/braque/model.rb

Instance Method Summary collapse

Methods included from Relations

#belongs_to, #has_many

Instance Method Details

#clientObject



112
113
114
115
116
117
118
119
# File 'lib/braque/model.rb', line 112

def client
  fail 'Please define api_root for all Braque::Model classes' unless config[:api_root_url]
  Hyperclient.new(config[:api_root_url]) do |client|
    client.headers['Http-Authorization'] = config[:http_authorization_header] if config[:http_authorization_header]
    client.headers['Authorization'] = config[:authorization_header] if config[:authorization_header]
    client.headers['Accept'] = config[:accept_header] if config[:accept_header]
  end
end

#collection_method_nameObject



104
105
106
# File 'lib/braque/model.rb', line 104

def collection_method_name
  name.tableize
end

#create(resource_params = {}, options = {}) ⇒ Object



94
95
96
97
98
99
100
101
102
# File 'lib/braque/model.rb', line 94

def create(resource_params = {}, options = {})
  response = client.method(collection_method_name)
             .call
             ._post(
               { "#{instance_method_name}" => resource_params }
                .merge(options)
             )
  new response
end

#find(options = {}) ⇒ Object



89
90
91
92
# File 'lib/braque/model.rb', line 89

def find(options = {})
  response = client.method(instance_method_name).call(options)
  new response
end

#instance_method_nameObject



108
109
110
# File 'lib/braque/model.rb', line 108

def instance_method_name
  collection_method_name.singularize
end

#list(options = {}) ⇒ Object



83
84
85
86
87
# File 'lib/braque/model.rb', line 83

def list(options = {})
  options = Hash[options.map { |k, v| [CGI.escape(k.to_s), v] }]
  response = client.method(collection_method_name).call(options)
  LinkedArray.new response, self
end