Module: ApiFrame::EndpointMethods::ClassMethods

Defined in:
lib/api_frame/endpoint_methods.rb

Instance Method Summary collapse

Instance Method Details

#define_endpoint(name, method:, endpoint:, body: nil) ⇒ Object



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