Class: RouteNGNClient::Response
- Inherits:
-
Object
- Object
- RouteNGNClient::Response
- Defined in:
- lib/routengn_client/response.rb
Constant Summary collapse
- METADATA_KEYS =
[ :total_count, :current_page, :per_page, :offset, :total_pages ]
Instance Attribute Summary collapse
-
#faraday_response ⇒ Object
Returns the value of attribute faraday_response.
-
#request ⇒ Object
Returns the value of attribute request.
Instance Method Summary collapse
- #body ⇒ Object
- #build_model(collection_name, klass) ⇒ Object
- #build_models(collection_name, klass, &blk) ⇒ Object
- #current_page ⇒ Object
- #env ⇒ Object
- #error_status? ⇒ Boolean
-
#initialize(request, faraday_response) ⇒ Response
constructor
A new instance of Response.
- #metadata ⇒ Object
- #pages_left ⇒ Object
- #pages_left? ⇒ Boolean
- #status ⇒ Object
- #to_model ⇒ Object
- #to_models(&blk) ⇒ Object
- #total_pages ⇒ Object
Constructor Details
#initialize(request, faraday_response) ⇒ Response
Returns a new instance of Response.
14 15 16 17 |
# File 'lib/routengn_client/response.rb', line 14 def initialize(request, faraday_response) @request = request @faraday_response = faraday_response end |
Instance Attribute Details
#faraday_response ⇒ Object
Returns the value of attribute faraday_response.
12 13 14 |
# File 'lib/routengn_client/response.rb', line 12 def faraday_response @faraday_response end |
#request ⇒ Object
Returns the value of attribute request.
12 13 14 |
# File 'lib/routengn_client/response.rb', line 12 def request @request end |
Instance Method Details
#body ⇒ Object
31 32 33 |
# File 'lib/routengn_client/response.rb', line 31 def body self.env[:body] end |
#build_model(collection_name, klass) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/routengn_client/response.rb', line 94 def build_model(collection_name, klass) raise RouteNGNResponseException, 'could not create Model from Response' if self.error_status? model = nil if r = self.body[collection_name.singularize.to_sym] model = klass.send :from_hash, r model.request_account_id = @request.request_account_id end model end |
#build_models(collection_name, klass, &blk) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/routengn_client/response.rb', line 75 def build_models(collection_name, klass, &blk) raise RouteNGNResponseException, 'could not create Models from Response' if self.error_status? models = [] self.body[collection_name.to_sym].each do |h| if r = h[collection_name.singularize.to_sym] m = klass.send :from_hash, r m.request_account_id = @request.request_account_id models << m blk.call(m) if blk else next end end models end |
#current_page ⇒ Object
55 56 57 |
# File 'lib/routengn_client/response.rb', line 55 def current_page self.[:current_page] if self. end |
#env ⇒ Object
19 20 21 |
# File 'lib/routengn_client/response.rb', line 19 def env @faraday_response.env end |
#error_status? ⇒ Boolean
27 28 29 |
# File 'lib/routengn_client/response.rb', line 27 def error_status? (400...600).include? self.status end |
#metadata ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/routengn_client/response.rb', line 35 def return @metadata if defined?(@metadata) if status == 200 && self.body.kind_of?(Hash) @metadata = {}.with_indifferent_access METADATA_KEYS.each { |k| @metadata[k] = self.body[k] } @metadata end end |
#pages_left ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/routengn_client/response.rb', line 47 def pages_left if self. && self.[:current_page] && self.[:total_pages] self.[:total_pages] - self.[:current_page] else 0 end end |
#pages_left? ⇒ Boolean
63 64 65 |
# File 'lib/routengn_client/response.rb', line 63 def pages_left? self.current_page && self.total_pages ? (self.current_page < self.total_pages) : false end |
#status ⇒ Object
23 24 25 |
# File 'lib/routengn_client/response.rb', line 23 def status self.env[:status] end |
#to_model ⇒ Object
71 72 73 |
# File 'lib/routengn_client/response.rb', line 71 def to_model self.build_model(@request.resource_attributes[:collection_name], @request.klass) end |
#to_models(&blk) ⇒ Object
67 68 69 |
# File 'lib/routengn_client/response.rb', line 67 def to_models(&blk) self.build_models(@request.resource_attributes[:collection_name], @request.klass, &blk) end |
#total_pages ⇒ Object
59 60 61 |
# File 'lib/routengn_client/response.rb', line 59 def total_pages self.[:total_pages] if self. end |