53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
# File 'lib/api_frame/endpoint_methods.rb', line 53
def define_endpoint(name, method:, endpoint:, body: nil)
define_method(name) do |*args, **kwargs|
uri = endpoint.respond_to?(:call) ? ApiFrame::Utils.call_proc_without_unknown_keywords(endpoint, *args, **kwargs) : endpoint
request_body = body .respond_to?(:call) ? ApiFrame::Utils.call_proc_without_unknown_keywords(body, *args, **kwargs) : body
perform_request(method, uri, body: request_body, query: kwargs.key?(:query) ? kwargs.fetch(:query) : nil, headers: kwargs.key?(:headers) ? kwargs.fetch(:headers) : nil).then do |response|
if !kwargs.key?(:plain_response) || !kwargs.fetch(:plain_response)
if response.is_a?(Net::HTTPSuccess)
default_response_parser.call(response)
else
raise ApiFrame::NoSuccessError, response
end
else
response
end
end
end
end
|