class WCC::API::RestClient::AbstractResponse
Attributes
client[R]
raw_body[R]
raw_response[R]
request[R]
Public Class Methods
new(client, request, raw_response)
click to toggle source
# File lib/wcc/api/rest_client/response.rb, line 24 def initialize(client, request, raw_response) @client = client @request = request @raw_response = raw_response @raw_body = raw_response.body.to_s end
Public Instance Methods
assert_ok!()
click to toggle source
# File lib/wcc/api/rest_client/response.rb, line 74 def assert_ok! return self if code >= 200 && code < 300 raise ApiError[code], self end
body()
click to toggle source
# File lib/wcc/api/rest_client/response.rb, line 19 def body @body ||= ::JSON.parse(raw_body) end
Also aliased as: to_json
collection_response?()
click to toggle source
# File lib/wcc/api/rest_client/response.rb, line 39 def collection_response? page_items.nil? ? false : true end
count()
click to toggle source
# File lib/wcc/api/rest_client/response.rb, line 35 def count throw new NotImplementedError, 'Please implement "count" parsing in response class' end
each_page(&block)
click to toggle source
This method has a bit of complexity that is better kept in one location
# File lib/wcc/api/rest_client/response.rb, line 81 def each_page(&block) raise ArgumentError, 'Not a collection response' unless collection_response? ret = PaginatingEnumerable.new(self) if block_given? ret.map(&block) else ret.lazy end end
error_message()
click to toggle source
# File lib/wcc/api/rest_client/response.rb, line 47 def error_message parsed_message = begin body.dig('error', 'message') || body.dig('message') rescue ::JSON::ParserError nil end parsed_message || "#{code}: #{raw_response.body}" end
first()
click to toggle source
# File lib/wcc/api/rest_client/response.rb, line 99 def first raise ArgumentError, 'Not a collection response' unless collection_response? page_items.first end
items()
click to toggle source
# File lib/wcc/api/rest_client/response.rb, line 93 def items return unless collection_response? each_page.flat_map(&:page_items) end
next_page()
click to toggle source
# File lib/wcc/api/rest_client/response.rb, line 64 def next_page return unless next_page? next_page ||= @client.get( @request[:url], (@request[:query] || {}).merge(next_page_query) ) next_page.assert_ok! end
next_page?()
click to toggle source
# File lib/wcc/api/rest_client/response.rb, line 57 def next_page? return false unless collection_response? return false if count.nil? page_items.length + skip < count end
next_page_query()
click to toggle source
# File lib/wcc/api/rest_client/response.rb, line 105 def next_page_query return unless collection_response? { skip: page_items.length + skip } end
page_items()
click to toggle source
# File lib/wcc/api/rest_client/response.rb, line 43 def page_items throw new NotImplementedError, 'Please implement "page_items" parsing in response class' end
skip()
click to toggle source
# File lib/wcc/api/rest_client/response.rb, line 31 def skip throw new NotImplementedError, 'Please implement "skip" parsing in response class' end