Class: Camo::Client
- Inherits:
-
Object
- Object
- Camo::Client
- Includes:
- HeadersUtils, MimeTypeUtils, Rack::Utils
- Defined in:
- lib/camo/client.rb
Constant Summary collapse
- ALLOWED_TRANSFERRED_HEADERS =
HeaderHash[%w[Host Accept Accept-Encoding]]
- KEEP_ALIVE =
["1", "true", true].include?(ENV.fetch("CAMORB_KEEP_ALIVE", false))
- MAX_REDIRECTS =
ENV.fetch("CAMORB_MAX_REDIRECTS", 4)
- SOCKET_TIMEOUT =
ENV.fetch("CAMORB_SOCKET_TIMEOUT", 10)
- CONTENT_LENGTH_LIMIT =
ENV.fetch("CAMORB_LENGTH_LIMIT", 5242880).to_i
Constants included from MimeTypeUtils
MimeTypeUtils::SUPPORTED_CONTENT_TYPES
Constants included from HeadersUtils
HeadersUtils::HOSTNAME, HeadersUtils::REQUEST_SECURITY_HEADERS, HeadersUtils::RESPONSE_SECURITY_HEADERS, HeadersUtils::TIMING_ALLOW_ORIGIN
Instance Attribute Summary collapse
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
Instance Method Summary collapse
- #get(url, transferred_headers = {}, remaining_redirects = MAX_REDIRECTS) ⇒ Object
-
#initialize(logger = Logger.stdio) ⇒ Client
constructor
A new instance of Client.
Methods included from HeadersUtils
#default_request_headers, #default_response_headers, user_agent, #user_agent
Constructor Details
Instance Attribute Details
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
15 16 17 |
# File 'lib/camo/client.rb', line 15 def logger @logger end |
Instance Method Details
#get(url, transferred_headers = {}, remaining_redirects = MAX_REDIRECTS) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/camo/client.rb', line 21 def get(url, transferred_headers = {}, remaining_redirects = MAX_REDIRECTS) logger.debug "Handling request to #{url}", {transferred_headers: transferred_headers, remaining_redirects: remaining_redirects} url = URI.parse(url) headers = build_request_headers(transferred_headers, url: url) response = get_request(url, headers, timeout: SOCKET_TIMEOUT) logger.debug "Request result", {status: response.status, headers: response.headers, body_bytesize: response.body.bytesize} case response.status when redirect? redirect(response, headers, remaining_redirects) when not_modified? [response.status, response.headers] else validate_response!(response) [response.status, response.headers, response.body] end end |