module FastBound::API
Constants
- FILE_UPLOAD_ATTRS
- ROOT_URL
- USER_AGENT
Public Instance Methods
delete_request(client, endpoint)
click to toggle source
# File lib/fastbound-ruby/api.rb, line 34 def delete_request(client, endpoint) request = Net::HTTP::Delete.new(request_url(client, endpoint)) set_request_headers(client, request) submit_request(client, request) end
get_request(client, endpoint)
click to toggle source
# File lib/fastbound-ruby/api.rb, line 13 def get_request(client, endpoint) request = Net::HTTP::Get.new(request_url(client, endpoint)) set_request_headers(client, request) submit_request(client, request) end
post_file_request(client, endpoint, file_data)
click to toggle source
# File lib/fastbound-ruby/api.rb, line 41 def post_file_request(client, endpoint, file_data) request = Net::HTTP::Post.new(request_url(client, endpoint)) set_request_headers(client, request) submit_file_request(client, request, file_data) end
post_request(client, endpoint, data = {})
click to toggle source
# File lib/fastbound-ruby/api.rb, line 20 def post_request(client, endpoint, data = {}) request = Net::HTTP::Post.new(request_url(client, endpoint)) set_request_headers(client, request, 'application/json') submit_request(client, request, data) end
put_request(client, endpoint, data = {})
click to toggle source
# File lib/fastbound-ruby/api.rb, line 27 def put_request(client, endpoint, data = {}) request = Net::HTTP::Put.new(request_url(client, endpoint)) set_request_headers(client, request, 'application/json') submit_request(client, request, data) end
Private Instance Methods
build_multipart_request_body(request, file_data, boundary)
click to toggle source
# File lib/fastbound-ruby/api.rb, line 77 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
convert_params_to_request_query(params)
click to toggle source
# File lib/fastbound-ruby/api.rb, line 121 def convert_params_to_request_query(params) params&.map { |k, v| [k.to_s.camelize(:lower), v].join('=') }&.join('&') end
process_request(request)
click to toggle source
# File lib/fastbound-ruby/api.rb, line 65 def process_request(request) uri = URI(request.path) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.set_debug_output($stdout) if FastBound.config.full_debug? response = http.start { |_http| _http.request(request) } FastBound::Response.new(response) end
request_url(client, endpoint)
click to toggle source
# File lib/fastbound-ruby/api.rb, line 101 def request_url(client, endpoint) [ROOT_URL, client.account_number, 'api', endpoint].join('/') end
set_request_headers(client, request, content_type = nil)
click to toggle source
# File lib/fastbound-ruby/api.rb, line 94 def set_request_headers(client, request, content_type = nil) request['User-Agent'] = USER_AGENT request['Authorization'] = ['Basic', Base64.strict_encode64(client.api_key + ':')].join(' ') request['X-AuditUser'] = client.account_email request['Content-Type'] = content_type if content_type.present? end
standardize_body_data(submitted_data, permitted_data_attrs)
click to toggle source
# File lib/fastbound-ruby/api.rb, line 105 def standardize_body_data(submitted_data, permitted_data_attrs) protected_attr_prefixes = %w( acquire destroyed dispose location theftLoss ) _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 do |k| transformed_key = k.to_s.camelize(:lower) if index_for_underscore = protected_attr_prefixes.find { |x| transformed_key.index(x) == 0 }&.length transformed_key.insert(index_for_underscore, '_') else transformed_key end end end
submit_file_request(client, request, file_data)
click to toggle source
# File lib/fastbound-ruby/api.rb, line 56 def submit_file_request(client, request, file_data) boundary = ::SecureRandom.hex(15) headers.merge!(content_type_header("multipart/form-data; boundary=#{boundary}")) build_multipart_request_body(request, file_data, boundary) process_request(request) end
submit_request(client, request, data = {})
click to toggle source
# File lib/fastbound-ruby/api.rb, line 50 def submit_request(client, request, data = {}) request.body = data.is_a?(Hash) ? data.to_json : data process_request(request) end