class RouteNGNClient::Response
Constants
- METADATA_KEYS
Attributes
faraday_response[RW]
request[RW]
Public Class Methods
new(request, faraday_response)
click to toggle source
# File lib/routengn_client/response.rb, line 14 def initialize(request, faraday_response) @request = request @faraday_response = faraday_response end
Public Instance Methods
body()
click to toggle source
# File lib/routengn_client/response.rb, line 31 def body self.env[:body] end
build_model(collection_name, klass)
click to toggle source
# 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)
click to toggle source
# 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()
click to toggle source
# File lib/routengn_client/response.rb, line 55 def current_page self.metadata[:current_page] if self.metadata end
env()
click to toggle source
# File lib/routengn_client/response.rb, line 19 def env @faraday_response.env end
error_status?()
click to toggle source
# File lib/routengn_client/response.rb, line 27 def error_status? (400...600).include? self.status end
metadata()
click to toggle source
# File lib/routengn_client/response.rb, line 35 def metadata 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()
click to toggle source
# File lib/routengn_client/response.rb, line 47 def pages_left if self.metadata && self.metadata[:current_page] && self.metadata[:total_pages] self.metadata[:total_pages] - self.metadata[:current_page] else 0 end end
pages_left?()
click to toggle source
# 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()
click to toggle source
# File lib/routengn_client/response.rb, line 23 def status self.env[:status] end
to_model()
click to toggle source
# 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)
click to toggle source
# 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()
click to toggle source
# File lib/routengn_client/response.rb, line 59 def total_pages self.metadata[:total_pages] if self.metadata end