Sha256: 9f26b25142f81e6e4ee7a8684c5b5b8014226a79373365809c767696ed682e1d
Contents?: true
Size: 1.8 KB
Versions: 1
Compression:
Stored size: 1.8 KB
Contents
require 'faraday' require 'uri' require 'json' module HyperResource::Modules::HTTP ## Loads and returns the resource pointed to by +href+. The returned ## resource will be blessed into its "proper" class, if ## +self.class.namespace != nil+. def get self.response = faraday_connection.get(self.href || '') finish_up end ## Returns a per-thread Faraday connection for this object. def faraday_connection(url=nil) url ||= self.root key = "faraday_connection_#{url}" return Thread.current[key] if Thread.current[key] fc = Faraday.new(: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 private def finish_up begin self.response_object = self.adapter.deserialize(self.response.body) rescue Exception => e raise HyperResource::ResponseError.new( "Error when deserializing response body", :response => self.response, :cause => e ) end self.adapter.apply(self.response_object, self) self.loaded = true status = self.response.status if status / 100 == 2 return self.to_response_class elsif status / 100 == 3 ## TODO redirect logic? elsif status / 100 == 4 raise HyperResource::ClientError.new(status.to_s, :response => self.response) elsif status / 100 == 5 raise HyperResource::ServerError.new(status.to_s, :response => self.response) else ## 1xx? really? raise HyperResource::ResponseError.new("Got status #{status}, wtf?", :response => self.response) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hyperresource-0.1.9.2 | lib/hyper_resource/modules/http.rb |