Module: HyperResource::Modules::HTTP

Included in:
HyperResource
Defined in:
lib/hyper_resource/modules/http.rb

Instance Method Summary collapse

Instance Method Details

#create(*args) ⇒ Object

By default, calls post with the given arguments. Override to change this behavior.



19
20
21
# File 'lib/hyper_resource/modules/http.rb', line 19

def create(*args)
  post(*args)
end

#deleteObject

DELETEs this resource’s href, and returns the response resource.



61
62
63
64
# File 'lib/hyper_resource/modules/http.rb', line 61

def delete
  self.response = faraday_connection.delete
  finish_up
end

#faraday_connection(url = nil) ⇒ Object

Returns a raw Faraday connection to this resource’s URL, with proper headers (including auth). Threadsafe.



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/hyper_resource/modules/http.rb', line 68

def faraday_connection(url=nil)
  url ||= URI.join(self.root, self.href)
  key = Digest::MD5.hexdigest({
    'faraday_connection' => {
      'url' => url,
      'headers' => self.headers,
      'ba' => self.auth[:basic]
    }
  }.to_json)
  return Thread.current[key] if Thread.current[key]

  fc = Faraday.new(self.faraday_options.merge(:url => url))
  fc.headers.merge!('User-Agent' => "HyperResource #{HyperResource::VERSION}")
  fc.headers.merge!(self.headers || {})
  if ba=self.auth[:basic]
    fc.basic_auth(*ba)
  end
  Thread.current[key] = fc
end

#getObject

Loads and returns the resource pointed to by href. The returned resource will be blessed into its “proper” class, if self.class.namespace != nil.



12
13
14
15
# File 'lib/hyper_resource/modules/http.rb', line 12

def get
  self.response = faraday_connection.get(self.href || '')
  finish_up
end

#patch(attrs = nil) ⇒ Object

PATCHes this resource’s changed attributes to this resource’s href, and returns the response resource. If attributes are given, patch uses those instead.



52
53
54
55
56
57
58
# File 'lib/hyper_resource/modules/http.rb', line 52

def patch(attrs=nil)
  attrs ||= self.attributes.changed_attributes
  self.response = faraday_connection.patch do |req|
    req.body = adapter.serialize(attrs)
  end
  finish_up
end

#post(attrs) ⇒ Object

POSTs the given attributes to this resource’s href, and returns the response resource.



25
26
27
28
29
30
# File 'lib/hyper_resource/modules/http.rb', line 25

def post(attrs)
  self.response = faraday_connection.post do |req|
    req.body = adapter.serialize(attrs)
  end
  finish_up
end

#put(attrs = nil) ⇒ Object

PUTs this resource’s attributes to this resource’s href, and returns the response resource. If attributes are given, put uses those instead.



41
42
43
44
45
46
47
# File 'lib/hyper_resource/modules/http.rb', line 41

def put(attrs=nil)
  attrs ||= self.attributes
  self.response = faraday_connection.put do |req|
    req.body = adapter.serialize(attrs)
  end
  finish_up
end

#update(*args) ⇒ Object

By default, calls put with the given arguments. Override to change this behavior.



34
35
36
# File 'lib/hyper_resource/modules/http.rb', line 34

def update(*args)
  put(*args)
end