Sha256: 88055c5a9b513f2d095e44ba28c01b834aed6b7e459e169edf5568e9a3a01696
Contents?: true
Size: 1.27 KB
Versions: 1
Compression:
Stored size: 1.27 KB
Contents
# frozen_string_literal: true require 'api_signature' module ApiProxy class RequestOptionsBuilder attr_reader :env, :config delegate :api_key, :api_secret, :api_host, :api_port, :api_prefix, :url_scheme, :request_starts_with, to: :config def initialize(env, config) @env = env @config = config end def options { headers: headers, format: :json } end def url URI::Generic.build(scheme: url_scheme, host: api_host, port: api_port, path: path) end def request_method env['REQUEST_METHOD'].to_s.downcase end private def headers custom_headers = config.custom_headers.call(env) signature_builder.headers.merge(custom_headers) end def signature_builder @signature_builder ||= ApiSignature::Builder.new(request_params) end def request_params { access_key: api_key, secret: api_secret, request_method: request_method, scheme: url_scheme, host: api_host, port: api_port, path: path } end def path request_path = env['REQUEST_PATH'].gsub(request_starts_with, '') File.join(api_prefix, request_path) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
api_proxy-0.1.2 | lib/api_proxy/request_options_builder.rb |