Class: Mailosaur::Devices

Inherits:
Object
  • Object
show all
Defined in:
lib/Mailosaur/devices.rb

Overview

Operations for managing virtual security devices and retrieving their current one-time passwords (OTPs), used to automate testing of app-based multi-factor authentication. Accessed via client.devices.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(conn, handle_http_error) ⇒ Devices

Creates and initializes a new instance of the Devices class.

Parameters:

  • conn (Faraday::Connection)

    The client connection.

  • handle_http_error (Method)

    Callback used to convert HTTP error responses into errors.



11
12
13
14
# File 'lib/Mailosaur/devices.rb', line 11

def initialize(conn, handle_http_error)
  @conn = conn
  @handle_http_error = handle_http_error
end

Instance Attribute Details

#connConnection (readonly)

Returns the client connection.

Returns:

  • (Connection)

    the client connection.



17
18
19
# File 'lib/Mailosaur/devices.rb', line 17

def conn
  @conn
end

Instance Method Details

#create(device_create_options) ⇒ Mailosaur::Models::Device

Creates a new virtual security device.

Parameters:

Returns:



39
40
41
42
43
44
# File 'lib/Mailosaur/devices.rb', line 39

def create(device_create_options)
  response = conn.post 'api/devices', device_create_options.to_json
  @handle_http_error.call(response) unless response.status == 200
  model = JSON.parse(response.body)
  Mailosaur::Models::Device.new(model)
end

#delete(id) ⇒ nil

Permanently delete a virtual security device. This operation cannot be undone.

Parameters:

  • id (String)

    The unique identifier of the device.

Returns:

  • (nil)

    Once the device has been deleted.



78
79
80
81
82
# File 'lib/Mailosaur/devices.rb', line 78

def delete(id)
  response = conn.delete "api/devices/#{id}"
  @handle_http_error.call(response) unless response.status == 204
  nil
end

#listMailosaur::Models::DeviceListResult

Returns a list of your virtual security devices.

Returns:



24
25
26
27
28
29
# File 'lib/Mailosaur/devices.rb', line 24

def list
  response = conn.get 'api/devices'
  @handle_http_error.call(response) unless response.status == 200
  model = JSON.parse(response.body)
  Mailosaur::Models::DeviceListResult.new(model)
end

#otp(query) ⇒ Mailosaur::Models::OtpResult

Retrieves the current one-time password for a saved device, or given base32-encoded shared secret.

Parameters:

  • query (String)

    Either the unique identifier of the device, or a base32-encoded shared secret.

Returns:



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/Mailosaur/devices.rb', line 55

def otp(query)
  if query.include? '-'
    response = conn.get "api/devices/#{query}/otp"
    @handle_http_error.call(response) unless response.status == 200
    model = JSON.parse(response.body)
    return Mailosaur::Models::OtpResult.new(model)
  end

  options = Mailosaur::Models::DeviceCreateOptions.new
  options.shared_secret = query
  response = conn.post 'api/devices/otp', options.to_json
  @handle_http_error.call(response) unless response.status == 200
  model = JSON.parse(response.body)
  Mailosaur::Models::OtpResult.new(model)
end