Class: TusClient::HttpService
Overview
Provides basic http calls (head, patch, post), with detailed logging
Class Method Summary collapse
- ._log_request(http_request, logger) ⇒ Object
- ._log_response(http_method, http_response, logger) ⇒ Object
- ._perform(http_request:, logger:) ⇒ Object
- .head(uri:, headers:, logger:) ⇒ Object
- .options(uri:, headers:, logger:) ⇒ Object
- .patch(uri:, headers:, body:, logger:) ⇒ Object
- .post(uri:, headers:, body: nil, logger:) ⇒ Object
Class Method Details
._log_request(http_request, logger) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/http_service.rb', line 29 def self._log_request(http_request, logger) logger.info do uri = http_request.uri header_info = {} http_request.each_header do |key, value| header_info[key] = value end request_info = { uri: uri.to_s, header: header_info } request_body = http_request.body.to_s request_info[:body_md5] = Digest::MD5.hexdigest(request_body) unless request_body.blank? request_info[:body_size] = request_body.size unless request_body.blank? formatted_body = case request_body.encoding when Encoding::ASCII_8BIT request_body.encoding.inspect else request_body.truncate_middle(60) end request_info[:body] = formatted_body [ "TUS #{http_request.method}", { request: request_info }, TusClient.log_info, ] end end |
._log_response(http_method, http_response, logger) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/http_service.rb', line 59 def self._log_response(http_method, http_response, logger) header_info = {} http_response.each_header do |key, value| header_info[key] = value end logger.info do [ "TUS #{http_method}", { response: { status: http_response.code, header: header_info, body: http_response.body.to_s.truncate_middle(60) }}, TusClient.log_info, ] end end |
._perform(http_request:, logger:) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/http_service.rb', line 77 def self._perform(http_request:, logger:) _log_request(http_request, logger) uri = http_request.uri http_response = Net::HTTP.start( uri.host, uri.port, use_ssl: uri.scheme == 'https' ) do |http| http.request http_request end _log_response(http_request.method, http_response, logger) http_response end |
.head(uri:, headers:, logger:) ⇒ Object
7 8 9 10 |
# File 'lib/http_service.rb', line 7 def self.head(uri:, headers:, logger:) request = Net::HTTP::Head.new(uri, headers) _perform(http_request: request, logger: logger) end |
.options(uri:, headers:, logger:) ⇒ Object
12 13 14 15 |
# File 'lib/http_service.rb', line 12 def self.(uri:, headers:, logger:) request = Net::HTTP::Options.new(uri, headers) _perform(http_request: request, logger: logger) end |
.patch(uri:, headers:, body:, logger:) ⇒ Object
17 18 19 20 21 |
# File 'lib/http_service.rb', line 17 def self.patch(uri:, headers:, body:, logger:) request = Net::HTTP::Patch.new(uri, headers) request.body = body _perform(http_request: request, logger: logger) end |
.post(uri:, headers:, body: nil, logger:) ⇒ Object
23 24 25 26 27 |
# File 'lib/http_service.rb', line 23 def self.post(uri:, headers:, body: nil, logger:) request = Net::HTTP::Post.new(uri, headers) request.body = body _perform(http_request: request, logger: logger) end |