class Rubeetup::RequestResponse
Packages a response, and provides for its validation
Attributes
parsed_body[R]
@return [Hash{Symbol=>…}] parsed_body
the JSON-parsed body of the response.
It is a Hash with all the keys as Symbols
request[R]
@return [Rubeetup::Request] the request which caused this response
response[R]
@return [Net::HTTPResponse] response the raw response from the sender
Public Class Methods
new(sender)
click to toggle source
@param [Net::HTTPResponse] raw_data the raw response from the sender
# File lib/rubeetup/request_response.rb, line 29 def initialize(sender) @response = sender.response_data @request = sender.request body = @response.body @parsed_body = blank?(body) ? [] : parse(body) end
Public Instance Methods
data()
click to toggle source
If the request was successful, then creates a collection of Rubeetup::ResponseWrapper
instances. @return [Array<Rubeetup::ResponseWrapper>] a collection containing the response’s data
# File lib/rubeetup/request_response.rb, line 41 def data fail error_class.new(self), error_message unless success? collection = collectionize(parsed_body) collection.map {|elem| wrapper_class.wrapperize!(elem)} end
Private Instance Methods
collectionize(data)
click to toggle source
# File lib/rubeetup/request_response.rb, line 66 def collectionize(data) return data if data.is_a? Array data[:results] || [data] end
error_class()
click to toggle source
# File lib/rubeetup/request_response.rb, line 58 def error_class Rubeetup::MeetupResponseError end
error_message()
click to toggle source
# File lib/rubeetup/request_response.rb, line 79 def error_message <<-DOC.gsub(/^ {8}/, '') An error was encountered while processing the following request: #{request} Here's some information to describe the error, and/or its causes: #{parsed_body} DOC end
parse(body)
click to toggle source
# File lib/rubeetup/request_response.rb, line 71 def parse(body) begin JSON.parse(body, symbolize_names: true) rescue body end end
success?()
click to toggle source
Consider implementing pagination
def prev; end def next; end def all; end # Calls next until no more and returns all the results at once
# File lib/rubeetup/request_response.rb, line 54 def success? response.is_a? Net::HTTPSuccess end
wrapper_class()
click to toggle source
# File lib/rubeetup/request_response.rb, line 62 def wrapper_class Rubeetup::ResponseWrapper end