class MyTargetApi::Request
Requests
Attributes
logger[R]
Public Class Methods
new(logger: NilLogger)
click to toggle source
# File lib/my_target_api/request.rb, line 12 def initialize(logger: NilLogger) @logger = logger end
Public Instance Methods
delete(url, params = {}, headers = {})
click to toggle source
# File lib/my_target_api/request.rb, line 32 def delete(url, params = {}, headers = {}) response = with_exception_handling('DELETE', url, params) do NetClient.delete(url, headers.merge(query(params))) end process_response(response) end
get(url, params = {}, headers = {})
click to toggle source
# File lib/my_target_api/request.rb, line 16 def get(url, params = {}, headers = {}) response = with_exception_handling('GET', url, params) do NetClient.get(url, headers.merge(query(params))) end process_response(response) end
post(url, params = {}, headers = {})
click to toggle source
# File lib/my_target_api/request.rb, line 24 def post(url, params = {}, headers = {}) response = with_exception_handling('POST', url, params) do NetClient.post(url, params, headers) end process_response(response) end
upload(url, content, params = {}, headers = {})
click to toggle source
# File lib/my_target_api/request.rb, line 40 def upload(url, content, params = {}, headers = {}) response = with_exception_handling('POST', url, params, content: content) do NetClient.post( url, content, { 'Content-Type' => 'application/octet-stream' } .merge(headers) .merge(query(params)) ) end process_response(response) end
Private Instance Methods
log_response(response)
click to toggle source
# File lib/my_target_api/request.rb, line 83 def log_response(response) logger << ResponseFormatter.new(response).format end
process_response(response)
click to toggle source
# File lib/my_target_api/request.rb, line 62 def process_response(response) JSON.parse(response.body) rescue JSON::ParserError response.body end
query(params)
click to toggle source
# File lib/my_target_api/request.rb, line 58 def query(params) { params: params } end
raise_with_params(method:, url:, params:, response: nil, content:, original_exception: nil)
click to toggle source
# File lib/my_target_api/request.rb, line 87 def raise_with_params(method:, url:, params:, response: nil, content:, original_exception: nil) result = MyTargetApi::RequestError.new(original_exception: original_exception) result.set_request_info(method: method, url: url, request_body: content, params: params) result.set_response_info(response: response) result.set_backtrace(caller) raise result end
with_exception_handling(method, url, params, content: nil) { || ... }
click to toggle source
# File lib/my_target_api/request.rb, line 68 def with_exception_handling(method, url, params, content: nil) response = yield log_response(response) if response.code >= 400 raise_with_params(method: method, url: url, params: params, response: response, content: content) end response rescue NetClient::Exception => e original_exception = e.original_exception logger << "#{original_exception.class.name} #{original_exception.message}" raise_with_params(method: method, url: url, params: params, content: content, original_exception: original_exception) end