Class: Cyclid::Client::Api::Hmac
- Defined in:
- lib/cyclid/client/api/hmac.rb
Overview
HMAC signed HTTP methods
Instance Method Summary collapse
-
#authenticate_request(request, uri) ⇒ Object
Sign the request with HMAC.
Methods inherited from Base
#api_delete, #api_get, #api_json_post, #api_json_put, #api_raw_post, #api_request, #api_yaml_post, #initialize, #parse_response
Constructor Details
This class inherits a constructor from Cyclid::Client::Api::Base
Instance Method Details
#authenticate_request(request, uri) ⇒ Object
Sign the request with HMAC
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/cyclid/client/api/hmac.rb', line 27 def authenticate_request(request, uri) algorithm = 'sha256' signer = Cyclid::HMAC::Signer.new(algorithm) method = if request.is_a? Net::HTTP::Get 'GET' elsif request.is_a? Net::HTTP::Post 'POST' elsif request.is_a? Net::HTTP::Put 'PUT' elsif request.is_a? Net::HTTP::Delete 'DELETE' else raise "invalid request method #{request.inspect}" end nonce = SecureRandom.hex headers = signer.sign_request(uri.path, @config.secret, auth_header_format: '%<auth_scheme>s %<username>s:%<signature>s', # rubocop:disable Metrics/LineLength username: @config.username, nonce: nonce, method: method) headers[0].each do |k, v| request[k] = v end request['X-HMAC-Algorithm'] = algorithm return request end |