Class: VeracodeApiSigning::Plugins::FaradayMiddleware

Inherits:
Faraday::Middleware
  • Object
show all
Includes:
Utils, Validation
Defined in:
lib/veracode_api_signing/plugins/faraday_middleware.rb

Constant Summary collapse

KEY =
"Authorization"

Constants included from Regions

Regions::REGIONS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Validation

#valid_hex?, #validate_api_key_id, #validate_api_key_secret, #validate_scheme

Methods included from Regions

#get_region_for_api_credential, #remove_prefix_from_api_credential

Methods included from Utils

#generate_nonce, #get_current_timestamp, #get_host_from_url, #get_path_and_params_from_url, #get_scheme_from_url, #parsed_url

Constructor Details

#initialize(app, api_key_id = nil, api_secret_key = nil) ⇒ FaradayMiddleware

Returns a new instance of FaradayMiddleware.

Parameters:

  • app (#call)
  • api_key_id (String) (defaults to: nil)

    the veracode api key

  • api_secret_key (String) (defaults to: nil)

    The user’s API secret key



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/veracode_api_signing/plugins/faraday_middleware.rb', line 23

def initialize(app, api_key_id = nil, api_secret_key = nil)
  if api_key_id && api_secret_key
    validate_credentials(api_key_id, api_secret_key)
    @api_key_id = api_key_id
    @api_secret_key = api_secret_key
  else
    api_key_id, api_secret_key = Credentials.new.get_credentials
    validate_credentials(api_key_id, api_secret_key)
    @api_key_id = api_key_id
    @api_secret_key = api_secret_key
  end

  super(app)
end

Instance Attribute Details

#api_key_idObject (readonly)

Returns the value of attribute api_key_id.



18
19
20
# File 'lib/veracode_api_signing/plugins/faraday_middleware.rb', line 18

def api_key_id
  @api_key_id
end

#api_secret_keyObject (readonly)

Returns the value of attribute api_secret_key.



18
19
20
# File 'lib/veracode_api_signing/plugins/faraday_middleware.rb', line 18

def api_secret_key
  @api_secret_key
end

Instance Method Details

#on_request(env) ⇒ Object

Parameters:

  • env (Faraday::Env)


39
40
41
42
43
44
45
46
47
48
# File 'lib/veracode_api_signing/plugins/faraday_middleware.rb', line 39

def on_request(env)
  return if env.request_headers[KEY]

  url = env.url
  host = get_host_from_url(url)
  path = get_path_and_params_from_url(url)
  method = env.method.to_s.upcase
  auth = HMACAuth.new.generate_veracode_hmac_header(host, path, method, api_key_id, api_secret_key)
  env.request_headers[KEY] = auth
end

#validate_credentials(key, secret) ⇒ Object



50
51
52
53
# File 'lib/veracode_api_signing/plugins/faraday_middleware.rb', line 50

def validate_credentials(key, secret)
  validate_api_key_id(key)
  validate_api_key_secret(secret)
end