Class: Pwned::HashedPassword

Inherits:
Object
  • Object
show all
Includes:
PasswordBase
Defined in:
lib/pwned/hashed_password.rb

Overview

This class represents a hashed password. It does all the work of talking to the Pwned Passwords API to find out if the password has been pwned.

Constant Summary

Constants included from PasswordBase

PasswordBase::API_URL, PasswordBase::DEFAULT_REQUEST_HEADERS, PasswordBase::HASH_PREFIX_LENGTH, PasswordBase::SHA1_LENGTH

Instance Attribute Summary

Attributes included from PasswordBase

#hashed_password

Instance Method Summary collapse

Methods included from PasswordBase

#pwned?, #pwned_count

Constructor Details

#initialize(hashed_password, request_options = {}) ⇒ HashedPassword

Creates a new hashed password object.

Examples:

A simple password with the default request options

password = Pwned::HashedPassword.new("ABC123")

Setting the user agent and the read timeout of the request

password = Pwned::HashedPassword.new("ABC123", headers: { "User-Agent" => "My user agent" }, read_timout: 10)

Parameters:

  • hashed_password (String)

    The hash of the password you want to check against the API.

  • request_options (Hash) (defaults to: {})

    Options that can be passed to Net::HTTP.start when calling the API. This overrides any keys specified in Pwned.default_request_options.

Options Hash (request_options):

  • :headers (Symbol) — default: { "User-Agent" => "Ruby Pwned::Password #{Pwned::VERSION}" }

    HTTP headers to include in the request

  • :ignore_env_proxy (Symbol) — default: false

    The library will try to infer an HTTP proxy from the ‘http_proxy` environment variable. If you do not want this behaviour, set this option to true.

Raises:

  • (TypeError)

    if the password is not a string.

Since:

  • 2.1.0



33
34
35
36
37
38
39
40
41
# File 'lib/pwned/hashed_password.rb', line 33

def initialize(hashed_password, request_options={})
  raise TypeError, "hashed_password must be of type String" unless hashed_password.is_a? String
  @hashed_password = hashed_password.upcase
  @request_options = Pwned.default_request_options.deep_merge(request_options)
  @request_headers = Hash(@request_options.delete(:headers))
  @request_headers = DEFAULT_REQUEST_HEADERS.merge(@request_headers)
  @request_proxy = URI(@request_options.delete(:proxy)) if @request_options.key?(:proxy)
  @ignore_env_proxy = @request_options.delete(:ignore_env_proxy) || false
end