Class: Instant2fa::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/instant2fa/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config = Instant2fa.config.dup, options = {}) ⇒ Client

Returns a new instance of Client.



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/instant2fa/client.rb', line 13

def initialize(config=Instant2fa.config.dup, options={})
  @config = config

  Resources::Base.site = @config.api_base
  Resources::Base.connection(true) do |connection|
    # hack because it currently doesn't raise for 422
    connection.use Middleware::UnprocessableEntityStatus
    connection.use FaradayMiddleware::FollowRedirects
    connection.use Faraday::Request::BasicAuthentication, @config.access_key, @config.access_secret
  end
end

Instance Attribute Details

#configObject

Returns the value of attribute config.



11
12
13
# File 'lib/instant2fa/client.rb', line 11

def config
  @config
end

Instance Method Details

#confirm_verification(distinct_id, token, options = {}) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/instant2fa/client.rb', line 46

def confirm_verification(distinct_id, token, options = {})
  raise Errors::BadDistinctID, "distinct_id cannot be nil" unless distinct_id

  verification_response_result_set = Resources::VerificationResponseToken.find(token)
  verification_response = verification_response_result_set[0]

  if verification_response.distinct_id != distinct_id.to_s
    raise Errors::VerificationMismatch, "The distinctID passed back from the request didn't match the one passed into this function. Are you passing in the right value for distinctID?"
  end

  if verification_response.status != 'succeeded'
    raise Errors::VerificationFailed, "The verification did not pass. The status was: #{verification_response.status}."
  end

  true
end

#create_settings(distinct_id, options = {}) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/instant2fa/client.rb', line 25

def create_settings(distinct_id, options = {})
  raise Errors::BadDistinctID, "distinct_id cannot be nil" unless distinct_id

  user_access_token = Resources::UserAccessToken.create(distinct_id: distinct_id.to_s)
  raise_if_errors(user_access_token)
  return user_access_token.hosted_page_url
end

#create_verification(distinct_id, options = {}) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/instant2fa/client.rb', line 33

def create_verification(distinct_id, options = {})
  raise Errors::BadDistinctID, "distinct_id cannot be nil" unless distinct_id

  begin
    verification_request = Resources::VerificationRequest.create(distinct_id: distinct_id.to_s)
    raise_if_errors(verification_request)
  rescue JsonApiClient::Errors::UnprocessableEntity
    raise Errors::MFANotEnabled.new, "User has not enabled an MFA device on their account."
  end

  return verification_request.hosted_page_url
end