Class: Pwned::Password

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

Overview

This class represents a 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

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

Instance Attribute Summary collapse

Attributes included from PasswordBase

#hashed_password

Instance Method Summary collapse

Methods included from PasswordBase

#pwned?, #pwned_count

Constructor Details

#initialize(password, request_options = {}) ⇒ Password

Creates a new password object.

Examples:

A simple password with the default request options

password = Pwned::Password.new("password")

Setting the user agent and the read timeout of the request

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

Parameters:

  • password (String)

    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:

  • 1.1.0



37
38
39
40
41
42
43
44
45
46
# File 'lib/pwned/password.rb', line 37

def initialize(password, request_options={})
  raise TypeError, "password must be of type String" unless password.is_a? String
  @password = password
  @hashed_password = Pwned.hash_password(password)
  @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

Instance Attribute Details

#passwordString (readonly)

Returns the password that is being checked.

Returns:

  • (String)

    the password that is being checked.

Since:

  • 1.0.0



17
18
19
# File 'lib/pwned/password.rb', line 17

def password
  @password
end