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