Class: Github::ResponseWrapper
- Inherits:
-
Object
- Object
- Github::ResponseWrapper
- Extended by:
- Forwardable
- Includes:
- Enumerable, Pagination
- Defined in:
- lib/github_api2/response_wrapper.rb
Overview
A class responsible for proxing to faraday response
Constant Summary
Constants included from Constants
Constants::ACCEPT, Constants::ACCEPTED_OAUTH_SCOPES, Constants::ACCEPT_CHARSET, Constants::CACHE_CONTROL, Constants::CONTENT_LENGTH, Constants::CONTENT_TYPE, Constants::DATE, Constants::ETAG, Constants::HEADER_LAST, Constants::HEADER_LINK, Constants::HEADER_NEXT, Constants::LOCATION, Constants::META_FIRST, Constants::META_LAST, Constants::META_NEXT, Constants::META_PREV, Constants::META_REL, Constants::OAUTH_SCOPES, Constants::PARAM_PAGE, Constants::PARAM_PER_PAGE, Constants::PARAM_START_PAGE, Constants::RATELIMIT_LIMIT, Constants::RATELIMIT_REMAINING, Constants::RATELIMIT_RESET, Constants::SERVER, Constants::USER_AGENT
Instance Attribute Summary collapse
-
#current_api ⇒ Object
readonly
Returns the value of attribute current_api.
-
#env ⇒ Object
readonly
Returns the value of attribute env.
-
#response ⇒ Object
readonly
Returns the value of attribute response.
Instance Method Summary collapse
-
#==(other) ⇒ Object
(also: #eql?)
Compare the wrapper with other wrapper for equality.
-
#[](key) ⇒ Object
Lookup an attribute from the body if hash, otherwise behave like array index.
-
#body ⇒ Object
Response raw body.
- #body=(value) ⇒ Object
- #client_error? ⇒ Boolean
-
#each ⇒ Object
Iterate over each resource inside the body.
-
#has_key?(key) ⇒ Boolean
Check if body has an attribute.
-
#headers ⇒ Object
Return response headers.
-
#initialize(response, current_api) ⇒ ResponseWrapper
constructor
A new instance of ResponseWrapper.
-
#inspect ⇒ Object
Print only response body.
-
#method_missing(method_name, *args, &block) ⇒ Object
Coerce any method calls for body attributes.
- #redirect? ⇒ Boolean
-
#respond_to?(method_name, include_all = false) ⇒ Boolean
Check if method is defined on the body.
- #server_error? ⇒ Boolean
-
#status ⇒ Object
Response status.
- #success? ⇒ Boolean
-
#to_ary ⇒ Object
Convert the ResponseWrapper into an Array.
-
#to_hash ⇒ Object
Convert the ResponseWrapper into a Hash.
-
#to_s ⇒ Object
Return response body as string.
-
#url ⇒ Object
Request url.
Methods included from Pagination
#auto_paginate, #count_pages, #each_page, #first_page, #has_next_page?, #last_page, #links, #next_page, #page, per_page_as_param, #prev_page
Constructor Details
#initialize(response, current_api) ⇒ ResponseWrapper
Returns a new instance of ResponseWrapper.
22 23 24 25 26 27 |
# File 'lib/github_api2/response_wrapper.rb', line 22 def initialize(response, current_api) @response = response @current_api = current_api @env = response.env @body = nil end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args, &block) ⇒ Object
Coerce any method calls for body attributes
127 128 129 130 131 132 133 |
# File 'lib/github_api2/response_wrapper.rb', line 127 def method_missing(method_name, *args, &block) if self.has_key?(method_name.to_s) self.[](method_name, &block) else super end end |
Instance Attribute Details
#current_api ⇒ Object (readonly)
Returns the value of attribute current_api.
16 17 18 |
# File 'lib/github_api2/response_wrapper.rb', line 16 def current_api @current_api end |
#env ⇒ Object (readonly)
Returns the value of attribute env.
18 19 20 |
# File 'lib/github_api2/response_wrapper.rb', line 18 def env @env end |
#response ⇒ Object (readonly)
Returns the value of attribute response.
14 15 16 |
# File 'lib/github_api2/response_wrapper.rb', line 14 def response @response end |
Instance Method Details
#==(other) ⇒ Object Also known as: eql?
Compare the wrapper with other wrapper for equality
153 154 155 156 157 |
# File 'lib/github_api2/response_wrapper.rb', line 153 def ==(other) return false unless other.is_a?(self.class) return false unless (other.respond_to?(:env) && other.respond_to?(:body)) self.env == other.env && self.body == other.body end |
#[](key) ⇒ Object
Lookup an attribute from the body if hash, otherwise behave like array index. Convert any key to string before calling.
85 86 87 88 89 90 91 |
# File 'lib/github_api2/response_wrapper.rb', line 85 def [](key) if self.body.is_a?(Array) self.body[key] else self.body.send(:"#{key}") end end |
#body ⇒ Object
Response raw body
50 51 52 |
# File 'lib/github_api2/response_wrapper.rb', line 50 def body @body ? @body : response.body end |
#body=(value) ⇒ Object
43 44 45 46 |
# File 'lib/github_api2/response_wrapper.rb', line 43 def body=(value) @body = value @env[:body] = value end |
#client_error? ⇒ Boolean
68 69 70 |
# File 'lib/github_api2/response_wrapper.rb', line 68 def client_error? status.to_i >= 400 && status.to_i < 500 end |
#each ⇒ Object
Iterate over each resource inside the body
113 114 115 116 117 |
# File 'lib/github_api2/response_wrapper.rb', line 113 def each body_parts = self.body.respond_to?(:each) ? self.body : [self.body] return body_parts.to_enum unless block_given? body_parts.each { |part| yield(part) } end |
#has_key?(key) ⇒ Boolean
Check if body has an attribute
121 122 123 |
# File 'lib/github_api2/response_wrapper.rb', line 121 def has_key?(key) self.body.is_a?(Hash) && self.body.has_key?(key) end |
#headers ⇒ Object
Return response headers
78 79 80 |
# File 'lib/github_api2/response_wrapper.rb', line 78 def headers Github::Response::Header.new(env) end |
#inspect ⇒ Object
Print only response body
147 148 149 |
# File 'lib/github_api2/response_wrapper.rb', line 147 def inspect "#<#{self.class.name} @body=\"#{self.body}\">" end |
#redirect? ⇒ Boolean
64 65 66 |
# File 'lib/github_api2/response_wrapper.rb', line 64 def redirect? status.to_i >= 300 && status.to_i < 400 end |
#respond_to?(method_name, include_all = false) ⇒ Boolean
Check if method is defined on the body
137 138 139 140 141 142 143 |
# File 'lib/github_api2/response_wrapper.rb', line 137 def respond_to?(method_name, include_all = false) if self.has_key?(method_name.to_s) true else super end end |
#server_error? ⇒ Boolean
72 73 74 |
# File 'lib/github_api2/response_wrapper.rb', line 72 def server_error? status.to_i >= 500 && status.to_i < 600 end |
#status ⇒ Object
Response status
56 57 58 |
# File 'lib/github_api2/response_wrapper.rb', line 56 def status response.status end |
#success? ⇒ Boolean
60 61 62 |
# File 'lib/github_api2/response_wrapper.rb', line 60 def success? response.success? end |
#to_ary ⇒ Object
Convert the ResponseWrapper into an Array
107 108 109 |
# File 'lib/github_api2/response_wrapper.rb', line 107 def to_ary body.to_ary end |
#to_hash ⇒ Object
Convert the ResponseWrapper into a Hash
101 102 103 |
# File 'lib/github_api2/response_wrapper.rb', line 101 def to_hash body.to_hash end |
#to_s ⇒ Object
Return response body as string
95 96 97 |
# File 'lib/github_api2/response_wrapper.rb', line 95 def to_s body.to_s end |
#url ⇒ Object
Request url
39 40 41 |
# File 'lib/github_api2/response_wrapper.rb', line 39 def url response.env[:url].to_s end |