module Credova::API
Constants
- API_VERSION
- DEVELOPMENT_URL
- FILE_UPLOAD_ATTRS
- PRODUCTION_URL
- USER_AGENT
Public Instance Methods
get_request(endpoint, headers = {})
click to toggle source
# File lib/credova/api.rb, line 17 def get_request(endpoint, headers = {}) request = Net::HTTP::Get.new(request_url(endpoint)) submit_request(request, {}, headers) end
post_file_request(endpoint, file_data, headers = {})
click to toggle source
# File lib/credova/api.rb, line 29 def post_file_request(endpoint, file_data, headers = {}) request = Net::HTTP::Post.new(request_url(endpoint)) submit_file_request(request, file_data, headers) end
post_request(endpoint, data = {}, headers = {})
click to toggle source
# File lib/credova/api.rb, line 23 def post_request(endpoint, data = {}, headers = {}) request = Net::HTTP::Post.new(request_url(endpoint)) submit_request(request, data, headers) end
Private Instance Methods
auth_header(token)
click to toggle source
# File lib/credova/api.rb, line 88 def auth_header(token) { 'Authorization' => ['Bearer', token].join(' ') } end
build_multipart_request_body(request, file_data, boundary)
click to toggle source
# File lib/credova/api.rb, line 65 def build_multipart_request_body(request, file_data, boundary) file_type = file_data[:file_type] file_contents = file_data[:file_contents] file_name = file_data[:file_name] || "ffl-document.#{file_type}" content_type = "application/#{file_data[:file_type]}" body = [] body << "--#{boundary}\r\n" body << "Content-Disposition: form-data; name=\"file\"; filename=\"#{file_name}\"\r\n" body << "Content-Type: #{content_type}\r\n" body << "\r\n" body << "#{file_contents}\r\n" body << "--#{boundary}--\r\n" request.body = body.join end
content_type_header(type)
click to toggle source
# File lib/credova/api.rb, line 92 def content_type_header(type) { 'Content-Type' => type } end
process_request(request)
click to toggle source
# File lib/credova/api.rb, line 55 def process_request(request) uri = URI(request.path) response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http| http.request(request) end Credova::Response.new(response) end
request_url(endpoint)
click to toggle source
# File lib/credova/api.rb, line 96 def request_url(endpoint) [ (Credova.sandbox? ? DEVELOPMENT_URL : PRODUCTION_URL), API_VERSION, endpoint, ].join('/') end
set_request_headers(request, headers)
click to toggle source
# File lib/credova/api.rb, line 82 def set_request_headers(request, headers) request['User-Agent'] = USER_AGENT headers.each { |header, value| request[header] = value } end
standardize_body_data(submitted_data, permitted_data_attrs)
click to toggle source
# File lib/credova/api.rb, line 104 def standardize_body_data(submitted_data, permitted_data_attrs) _submitted_data = submitted_data.deep_transform_keys(&:to_sym) permitted_data = (_submitted_data.select! { |k, v| permitted_data_attrs.include?(k) } || _submitted_data) permitted_data.deep_transform_keys { |k| k.to_s.camelize(:lower) } end
submit_file_request(request, file_data, headers)
click to toggle source
# File lib/credova/api.rb, line 45 def submit_file_request(request, file_data, headers) boundary = ::SecureRandom.hex(15) headers.merge!(content_type_header("multipart/form-data; boundary=#{boundary}")) build_multipart_request_body(request, file_data, boundary) set_request_headers(request, headers) process_request(request) end
submit_request(request, data, headers)
click to toggle source
# File lib/credova/api.rb, line 37 def submit_request(request, data, headers) set_request_headers(request, headers) request.body = data.is_a?(Hash) ? data.to_json : data process_request(request) end