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