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