lib/trav3/response/response.rb in trav3-0.4.1 vs lib/trav3/response/response.rb in trav3-0.5.0
- old
+ new
@@ -1,19 +1,119 @@
# frozen_string_literal: true
require 'forwardable'
module Trav3
+ # The results from queries return either `Success` or `RequestError` which both
+ # repsond with Hash like query methods for the JSON data or the Net::HTTP resonse object methods.
+ #
+ # The `Response` classes `Success` and `RequestError` forward method calls for all of the instance
+ # methods of a `ResponseCollection` to the collection. And many of the methods calls for the Net::HTTP
+ # response are also available on this class and those method calls are forwarded to the response.
class Response
extend Forwardable
attr_reader :travis
- def_delegators :@collection, *ResponseCollection.instance_methods.-(Object.methods)
- def_delegators :@response, :code, :code_type, :uri, :message, :read_header,
- :header, :value, :entity, :response, :body, :decode_content,
- :msg, :reading_body, :read_body, :http_version,
- :connection_close?, :connection_keep_alive?,
- :initialize_http_header, :get_fields, :each_header
+ # @!macro [attach] def_delegators
+ # @!method []
+ # Forwards to $1
+ # @see ResponseCollection#[]
+ # @!method count
+ # Forwards to $1.
+ # @see ResponseCollection#count
+ # @!method dig
+ # Forwards to $1
+ # @see ResponseCollection#dig
+ # @!method each
+ # Forwards to $1
+ # @see ResponseCollection#each
+ # @!method empty?
+ # Forwards to $1.
+ # @see ResponseCollection#empty?
+ # @!method fetch
+ # Forwards to $1
+ # @see ResponseCollection#fetch
+ # @!method first
+ # Forwards to $1
+ # @see ResponseCollection#first
+ # @!method follow
+ # Forwards to $1
+ # @see ResponseCollection#follow
+ # @!method has_key?
+ # Forwards to $1.
+ # @see ResponseCollection#has_key?
+ # @!method hash?
+ # Forwards to $1
+ # @see ResponseCollection#hash?
+ # @!method key?
+ # Forwards to $1.
+ # @see ResponseCollection#key?
+ # @!method last
+ # Forwards to $1
+ # @see ResponseCollection#last
+ # @!method keys
+ # Forwards to $1.
+ # @see ResponseCollection#keys
+ # @!method values
+ # Forwards to $1.
+ # @see ResponseCollection#values
+ def_delegators :@collection, *ResponseCollection.instance_methods(false)
+ # @!macro [attach] def_delegators
+ # @!method body
+ # Forwards to $1
+ # @see Net::HTTPResponse#body
+ # @!method code
+ # Forwards to $1
+ # @see Net::HTTPResponse#code
+ # @!method code_type
+ # Forwards to $1
+ # @see Net::HTTPResponse#code_type
+ # @!method decode_content
+ # Forwards to $1
+ # @see Net::HTTPResponse#decode_content
+ # @!method each_header
+ # Forwards to $1
+ # @see Net::HTTPHeader#each_header
+ # @!method entity
+ # Forwards to $1
+ # @see Net::HTTPResponse#entity
+ # @!method get_fields
+ # Forwards to $1
+ # @see Net::HTTPHeader#get_fields
+ # @!method header
+ # Forwards to $1
+ # @see Net::HTTPResponse#header
+ # @!method http_version
+ # Forwards to $1
+ # @see Net::HTTPResponse#http_version
+ # @!method message
+ # Forwards to $1
+ # @see Net::HTTPResponse#message
+ # @!method msg
+ # Forwards to $1
+ # @see Net::HTTPResponse#msg
+ # @!method read_body
+ # Forwards to $1
+ # @see Net::HTTPResponse#read_body
+ # @!method read_header
+ # Forwards to $1
+ # @see Net::HTTPResponse#read_header
+ # @!method reading_body
+ # Forwards to $1
+ # @see Net::HTTPResponse#reading_body
+ # @!method response
+ # Forwards to $1
+ # @see Net::HTTPResponse#response
+ # @!method uri
+ # Forwards to $1
+ # @see Net::HTTPResponse#uri
+ # @!method value
+ # Forwards to $1
+ # @see Net::HTTPResponse#value
+ def_delegators :@response, :body, :code, :code_type, :decode_content,
+ :each_header, :entity, :get_fields, :header, :http_version,
+ :message, :msg, :read_body, :read_header, :reading_body, :response,
+ :uri, :value
def initialize(travis, response)
@travis = travis
@response = response
@collection = begin
result = JSON.parse(response&.body || '{}')
@@ -21,17 +121,20 @@
rescue JSON::ParserError
response.error!
end
end
+ # Class name and keys of response
def inspect
"<#{self.class} Response: keys = #{keys}>"
end
+ # @abstract
def success?
raise Unimplemented
end
+ # @abstract
def failure?
raise Unimplemented
end
private :travis
end