Module: Braque::Model::ClassMethods

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

Instance Method Summary collapse

Instance Method Details

#clientObject



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

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



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

def collection_method_name
  name.tableize
end

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



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

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



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

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

#instance_method_nameObject



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

def instance_method_name
  collection_method_name.singularize
end

#list(options = {}) ⇒ Object



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

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