bandwidth-sdk 5.0.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/bandwidth/configuration.rb +1 -1
- data/lib/bandwidth/messaging_lib/messaging.rb +1 -0
- data/lib/bandwidth/messaging_lib/messaging/models/bandwidth_message.rb +11 -2
- data/lib/bandwidth/messaging_lib/messaging/models/message_request.rb +13 -2
- data/lib/bandwidth/messaging_lib/messaging/models/priority_enum.rb +19 -0
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth.rb +4 -2
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/client.rb +4 -4
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/controllers/{api_controller.rb → mfa_controller.rb} +62 -11
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/exceptions/error_with_request_exception.rb +34 -0
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/exceptions/{invalid_request_exception.rb → forbidden_request_exception.rb} +5 -5
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/exceptions/unauthorized_request_exception.rb +29 -0
- metadata +7 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e18aadfe51bc80e15e60e4bc4d67b175f10a6c5675c25eadccd4f8a878253dbb
|
|
4
|
+
data.tar.gz: 10f37b0a59cb13126b410b549372a54ab7aac33ae3bd236ecb058692a981bbe4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 52c78cc210f261df7338ef3fea73c6a1ac7e1b15ed247fc7631db68ea9caaf7b9b09465e9694dfd4de83fd5d4ed53d9a57d421a0dfc66da71109911024d01490
|
|
7
|
+
data.tar.gz: 06404ecbc6c77c435ccb96b56369916120d25d7124ef57850231f59f92ee16d8b7520042d838614a126bca4fec1829f21d5d05d57f9fe28066126060a911b71f
|
|
@@ -156,7 +156,7 @@ module Bandwidth
|
|
|
156
156
|
Environment::PRODUCTION => {
|
|
157
157
|
Server::DEFAULT => 'api.bandwidth.com',
|
|
158
158
|
Server::MESSAGINGDEFAULT => 'https://messaging.bandwidth.com/api/v2',
|
|
159
|
-
Server::TWOFACTORAUTHDEFAULT => 'https://mfa.bandwidth.com/api/v1
|
|
159
|
+
Server::TWOFACTORAUTHDEFAULT => 'https://mfa.bandwidth.com/api/v1',
|
|
160
160
|
Server::VOICEDEFAULT => 'https://voice.bandwidth.com',
|
|
161
161
|
Server::WEBRTCDEFAULT => 'https://api.webrtc.bandwidth.com/v1'
|
|
162
162
|
},
|
|
@@ -16,6 +16,7 @@ require_relative 'messaging/models/deferred_result.rb'
|
|
|
16
16
|
require_relative 'messaging/models/bandwidth_callback_message.rb'
|
|
17
17
|
require_relative 'messaging/models/bandwidth_message.rb'
|
|
18
18
|
require_relative 'messaging/models/message_request.rb'
|
|
19
|
+
require_relative 'messaging/models/priority_enum.rb'
|
|
19
20
|
|
|
20
21
|
# Exceptions
|
|
21
22
|
require_relative 'messaging/exceptions/messaging_exception.rb'
|
|
@@ -51,6 +51,10 @@ module Bandwidth
|
|
|
51
51
|
# @return [String]
|
|
52
52
|
attr_accessor :tag
|
|
53
53
|
|
|
54
|
+
# The priority specified by the user
|
|
55
|
+
# @return [String]
|
|
56
|
+
attr_accessor :priority
|
|
57
|
+
|
|
54
58
|
# A mapping from model property names to API property names.
|
|
55
59
|
def self.names
|
|
56
60
|
@_hash = {} if @_hash.nil?
|
|
@@ -65,6 +69,7 @@ module Bandwidth
|
|
|
65
69
|
@_hash['media'] = 'media'
|
|
66
70
|
@_hash['text'] = 'text'
|
|
67
71
|
@_hash['tag'] = 'tag'
|
|
72
|
+
@_hash['priority'] = 'priority'
|
|
68
73
|
@_hash
|
|
69
74
|
end
|
|
70
75
|
|
|
@@ -78,7 +83,8 @@ module Bandwidth
|
|
|
78
83
|
from = nil,
|
|
79
84
|
media = nil,
|
|
80
85
|
text = nil,
|
|
81
|
-
tag = nil
|
|
86
|
+
tag = nil,
|
|
87
|
+
priority = nil)
|
|
82
88
|
@id = id
|
|
83
89
|
@owner = owner
|
|
84
90
|
@application_id = application_id
|
|
@@ -90,6 +96,7 @@ module Bandwidth
|
|
|
90
96
|
@media = media
|
|
91
97
|
@text = text
|
|
92
98
|
@tag = tag
|
|
99
|
+
@priority = priority
|
|
93
100
|
end
|
|
94
101
|
|
|
95
102
|
# Creates an instance of the object from a hash.
|
|
@@ -108,6 +115,7 @@ module Bandwidth
|
|
|
108
115
|
media = hash['media']
|
|
109
116
|
text = hash['text']
|
|
110
117
|
tag = hash['tag']
|
|
118
|
+
priority = hash['priority']
|
|
111
119
|
|
|
112
120
|
# Create object from extracted values.
|
|
113
121
|
BandwidthMessage.new(id,
|
|
@@ -120,7 +128,8 @@ module Bandwidth
|
|
|
120
128
|
from,
|
|
121
129
|
media,
|
|
122
130
|
text,
|
|
123
|
-
tag
|
|
131
|
+
tag,
|
|
132
|
+
priority)
|
|
124
133
|
end
|
|
125
134
|
end
|
|
126
135
|
end
|
|
@@ -32,6 +32,12 @@ module Bandwidth
|
|
|
32
32
|
# @return [String]
|
|
33
33
|
attr_accessor :tag
|
|
34
34
|
|
|
35
|
+
# The message's priority, currently for toll-free or short code SMS only.
|
|
36
|
+
# Messages with a priority value of `"high"` are given preference over your
|
|
37
|
+
# other traffic.
|
|
38
|
+
# @return [PriorityEnum]
|
|
39
|
+
attr_accessor :priority
|
|
40
|
+
|
|
35
41
|
# A mapping from model property names to API property names.
|
|
36
42
|
def self.names
|
|
37
43
|
@_hash = {} if @_hash.nil?
|
|
@@ -41,6 +47,7 @@ module Bandwidth
|
|
|
41
47
|
@_hash['text'] = 'text'
|
|
42
48
|
@_hash['media'] = 'media'
|
|
43
49
|
@_hash['tag'] = 'tag'
|
|
50
|
+
@_hash['priority'] = 'priority'
|
|
44
51
|
@_hash
|
|
45
52
|
end
|
|
46
53
|
|
|
@@ -49,13 +56,15 @@ module Bandwidth
|
|
|
49
56
|
from = nil,
|
|
50
57
|
text = nil,
|
|
51
58
|
media = nil,
|
|
52
|
-
tag = nil
|
|
59
|
+
tag = nil,
|
|
60
|
+
priority = nil)
|
|
53
61
|
@application_id = application_id
|
|
54
62
|
@to = to
|
|
55
63
|
@from = from
|
|
56
64
|
@text = text
|
|
57
65
|
@media = media
|
|
58
66
|
@tag = tag
|
|
67
|
+
@priority = priority
|
|
59
68
|
end
|
|
60
69
|
|
|
61
70
|
# Creates an instance of the object from a hash.
|
|
@@ -69,6 +78,7 @@ module Bandwidth
|
|
|
69
78
|
text = hash['text']
|
|
70
79
|
media = hash['media']
|
|
71
80
|
tag = hash['tag']
|
|
81
|
+
priority = hash['priority']
|
|
72
82
|
|
|
73
83
|
# Create object from extracted values.
|
|
74
84
|
MessageRequest.new(application_id,
|
|
@@ -76,7 +86,8 @@ module Bandwidth
|
|
|
76
86
|
from,
|
|
77
87
|
text,
|
|
78
88
|
media,
|
|
79
|
-
tag
|
|
89
|
+
tag,
|
|
90
|
+
priority)
|
|
80
91
|
end
|
|
81
92
|
end
|
|
82
93
|
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# bandwidth
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
|
4
|
+
# ( https://apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module Bandwidth
|
|
7
|
+
# The message's priority, currently for toll-free or short code SMS only.
|
|
8
|
+
# Messages with a priority value of `"high"` are given preference over your
|
|
9
|
+
# other traffic.
|
|
10
|
+
class PriorityEnum
|
|
11
|
+
PRIORITY_ENUM = [
|
|
12
|
+
# TODO: Write general description for DEFAULT
|
|
13
|
+
DEFAULT = 'default'.freeze,
|
|
14
|
+
|
|
15
|
+
# TODO: Write general description for HIGH
|
|
16
|
+
HIGH = 'high'.freeze
|
|
17
|
+
].freeze
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -14,7 +14,9 @@ require_relative 'two_factor_auth/models/two_factor_verify_request_schema.rb'
|
|
|
14
14
|
require_relative 'two_factor_auth/models/two_factor_verify_code_response.rb'
|
|
15
15
|
|
|
16
16
|
# Exceptions
|
|
17
|
-
require_relative 'two_factor_auth/exceptions/
|
|
17
|
+
require_relative 'two_factor_auth/exceptions/error_with_request_exception.rb'
|
|
18
|
+
require_relative 'two_factor_auth/exceptions/unauthorized_request_exception.rb'
|
|
19
|
+
require_relative 'two_factor_auth/exceptions/forbidden_request_exception.rb'
|
|
18
20
|
# Controllers
|
|
19
21
|
require_relative 'two_factor_auth/controllers/base_controller.rb'
|
|
20
|
-
require_relative 'two_factor_auth/controllers/
|
|
22
|
+
require_relative 'two_factor_auth/controllers/mfa_controller.rb'
|
|
@@ -9,10 +9,10 @@ module Bandwidth
|
|
|
9
9
|
class Client
|
|
10
10
|
attr_reader :config
|
|
11
11
|
|
|
12
|
-
# Access to
|
|
13
|
-
# @return [
|
|
14
|
-
def
|
|
15
|
-
@
|
|
12
|
+
# Access to mfa controller.
|
|
13
|
+
# @return [MFAController] Returns the controller instance.
|
|
14
|
+
def mfa
|
|
15
|
+
@mfa ||= MFAController.new config
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def initialize(timeout: 60, max_retries: 0, retry_interval: 1,
|
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
|
|
6
6
|
module Bandwidth
|
|
7
7
|
module TwoFactorAuth
|
|
8
|
-
#
|
|
9
|
-
class
|
|
8
|
+
# MFAController
|
|
9
|
+
class MFAController < BaseController
|
|
10
10
|
def initialize(config, http_call_back: nil)
|
|
11
11
|
super(config, http_call_back: http_call_back)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
#
|
|
14
|
+
# Allows a user to send a MFA code through a phone call
|
|
15
15
|
# @param [String] account_id Required parameter: Bandwidth Account ID with
|
|
16
16
|
# Voice service enabled
|
|
17
17
|
# @param [TwoFactorCodeRequestSchema] body Required parameter: Example:
|
|
@@ -44,8 +44,23 @@ module TwoFactorAuth
|
|
|
44
44
|
|
|
45
45
|
# Validate response against endpoint and global error codes.
|
|
46
46
|
if _response.status_code == 400
|
|
47
|
-
raise
|
|
48
|
-
'
|
|
47
|
+
raise ErrorWithRequestException.new(
|
|
48
|
+
'If there is any issue with values passed in by the user',
|
|
49
|
+
_response
|
|
50
|
+
)
|
|
51
|
+
elsif _response.status_code == 401
|
|
52
|
+
raise UnauthorizedRequestException.new(
|
|
53
|
+
'Authentication is either incorrect or not present',
|
|
54
|
+
_response
|
|
55
|
+
)
|
|
56
|
+
elsif _response.status_code == 403
|
|
57
|
+
raise ForbiddenRequestException.new(
|
|
58
|
+
'The user is not authorized to access this resource',
|
|
59
|
+
_response
|
|
60
|
+
)
|
|
61
|
+
elsif _response.status_code == 500
|
|
62
|
+
raise ErrorWithRequestException.new(
|
|
63
|
+
'An internal server error occurred',
|
|
49
64
|
_response
|
|
50
65
|
)
|
|
51
66
|
end
|
|
@@ -58,7 +73,7 @@ module TwoFactorAuth
|
|
|
58
73
|
)
|
|
59
74
|
end
|
|
60
75
|
|
|
61
|
-
#
|
|
76
|
+
# Allows a user to send a MFA code through a text message (SMS)
|
|
62
77
|
# @param [String] account_id Required parameter: Bandwidth Account ID with
|
|
63
78
|
# Messaging service enabled
|
|
64
79
|
# @param [TwoFactorCodeRequestSchema] body Required parameter: Example:
|
|
@@ -91,8 +106,23 @@ module TwoFactorAuth
|
|
|
91
106
|
|
|
92
107
|
# Validate response against endpoint and global error codes.
|
|
93
108
|
if _response.status_code == 400
|
|
94
|
-
raise
|
|
95
|
-
'
|
|
109
|
+
raise ErrorWithRequestException.new(
|
|
110
|
+
'If there is any issue with values passed in by the user',
|
|
111
|
+
_response
|
|
112
|
+
)
|
|
113
|
+
elsif _response.status_code == 401
|
|
114
|
+
raise UnauthorizedRequestException.new(
|
|
115
|
+
'Authentication is either incorrect or not present',
|
|
116
|
+
_response
|
|
117
|
+
)
|
|
118
|
+
elsif _response.status_code == 403
|
|
119
|
+
raise ForbiddenRequestException.new(
|
|
120
|
+
'The user is not authorized to access this resource',
|
|
121
|
+
_response
|
|
122
|
+
)
|
|
123
|
+
elsif _response.status_code == 500
|
|
124
|
+
raise ErrorWithRequestException.new(
|
|
125
|
+
'An internal server error occurred',
|
|
96
126
|
_response
|
|
97
127
|
)
|
|
98
128
|
end
|
|
@@ -106,7 +136,7 @@ module TwoFactorAuth
|
|
|
106
136
|
)
|
|
107
137
|
end
|
|
108
138
|
|
|
109
|
-
#
|
|
139
|
+
# Allows a user to verify an MFA code
|
|
110
140
|
# @param [String] account_id Required parameter: Bandwidth Account ID with
|
|
111
141
|
# Two-Factor enabled
|
|
112
142
|
# @param [TwoFactorVerifyRequestSchema] body Required parameter: Example:
|
|
@@ -139,8 +169,29 @@ module TwoFactorAuth
|
|
|
139
169
|
|
|
140
170
|
# Validate response against endpoint and global error codes.
|
|
141
171
|
if _response.status_code == 400
|
|
142
|
-
raise
|
|
143
|
-
'
|
|
172
|
+
raise ErrorWithRequestException.new(
|
|
173
|
+
'If there is any issue with values passed in by the user',
|
|
174
|
+
_response
|
|
175
|
+
)
|
|
176
|
+
elsif _response.status_code == 401
|
|
177
|
+
raise UnauthorizedRequestException.new(
|
|
178
|
+
'Authentication is either incorrect or not present',
|
|
179
|
+
_response
|
|
180
|
+
)
|
|
181
|
+
elsif _response.status_code == 403
|
|
182
|
+
raise ForbiddenRequestException.new(
|
|
183
|
+
'The user is not authorized to access this resource',
|
|
184
|
+
_response
|
|
185
|
+
)
|
|
186
|
+
elsif _response.status_code == 429
|
|
187
|
+
raise ErrorWithRequestException.new(
|
|
188
|
+
'The user has made too many bad requests and is temporarily locked' \
|
|
189
|
+
' out',
|
|
190
|
+
_response
|
|
191
|
+
)
|
|
192
|
+
elsif _response.status_code == 500
|
|
193
|
+
raise ErrorWithRequestException.new(
|
|
194
|
+
'An internal server error occurred',
|
|
144
195
|
_response
|
|
145
196
|
)
|
|
146
197
|
end
|
data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/exceptions/error_with_request_exception.rb
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# bandwidth
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
|
4
|
+
# ( https://apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module Bandwidth
|
|
7
|
+
# ErrorWithRequest class.
|
|
8
|
+
class ErrorWithRequestException < APIException
|
|
9
|
+
# An error message pertaining to what the issue could be
|
|
10
|
+
# @return [String]
|
|
11
|
+
attr_accessor :error
|
|
12
|
+
|
|
13
|
+
# The associated requestId from AWS
|
|
14
|
+
# @return [String]
|
|
15
|
+
attr_accessor :request_id
|
|
16
|
+
|
|
17
|
+
# The constructor.
|
|
18
|
+
# @param [String] The reason for raising an exception.
|
|
19
|
+
# @param [HttpResponse] The HttpReponse of the API call.
|
|
20
|
+
def initialize(reason, response)
|
|
21
|
+
super(reason, response)
|
|
22
|
+
hash = APIHelper.json_deserialize(@response.raw_body)
|
|
23
|
+
unbox(hash)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Populates this object by extracting properties from a hash.
|
|
27
|
+
# @param [Hash] The deserialized response sent by the server in the
|
|
28
|
+
# response body.
|
|
29
|
+
def unbox(hash)
|
|
30
|
+
@error = hash['error']
|
|
31
|
+
@request_id = hash['requestId']
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
# ( https://apimatic.io ).
|
|
5
5
|
|
|
6
6
|
module Bandwidth
|
|
7
|
-
#
|
|
8
|
-
class
|
|
9
|
-
#
|
|
7
|
+
# ForbiddenRequest class.
|
|
8
|
+
class ForbiddenRequestException < APIException
|
|
9
|
+
# The message containing the reason behind the request being forbidden
|
|
10
10
|
# @return [String]
|
|
11
|
-
attr_accessor :
|
|
11
|
+
attr_accessor :message
|
|
12
12
|
|
|
13
13
|
# The constructor.
|
|
14
14
|
# @param [String] The reason for raising an exception.
|
|
@@ -23,7 +23,7 @@ module Bandwidth
|
|
|
23
23
|
# @param [Hash] The deserialized response sent by the server in the
|
|
24
24
|
# response body.
|
|
25
25
|
def unbox(hash)
|
|
26
|
-
@
|
|
26
|
+
@message = hash['Message']
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
end
|
data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/exceptions/unauthorized_request_exception.rb
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# bandwidth
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
|
4
|
+
# ( https://apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module Bandwidth
|
|
7
|
+
# UnauthorizedRequest class.
|
|
8
|
+
class UnauthorizedRequestException < APIException
|
|
9
|
+
# The message containing the reason behind the request being unauthorized
|
|
10
|
+
# @return [String]
|
|
11
|
+
attr_accessor :message
|
|
12
|
+
|
|
13
|
+
# The constructor.
|
|
14
|
+
# @param [String] The reason for raising an exception.
|
|
15
|
+
# @param [HttpResponse] The HttpReponse of the API call.
|
|
16
|
+
def initialize(reason, response)
|
|
17
|
+
super(reason, response)
|
|
18
|
+
hash = APIHelper.json_deserialize(@response.raw_body)
|
|
19
|
+
unbox(hash)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Populates this object by extracting properties from a hash.
|
|
23
|
+
# @param [Hash] The deserialized response sent by the server in the
|
|
24
|
+
# response body.
|
|
25
|
+
def unbox(hash)
|
|
26
|
+
@message = hash['message']
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bandwidth-sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 6.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- APIMatic SDK Generator
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-02-
|
|
11
|
+
date: 2021-02-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: logging
|
|
@@ -177,13 +177,16 @@ files:
|
|
|
177
177
|
- lib/bandwidth/messaging_lib/messaging/models/media.rb
|
|
178
178
|
- lib/bandwidth/messaging_lib/messaging/models/message_request.rb
|
|
179
179
|
- lib/bandwidth/messaging_lib/messaging/models/page_info.rb
|
|
180
|
+
- lib/bandwidth/messaging_lib/messaging/models/priority_enum.rb
|
|
180
181
|
- lib/bandwidth/messaging_lib/messaging/models/tag.rb
|
|
181
182
|
- lib/bandwidth/models/base_model.rb
|
|
182
183
|
- lib/bandwidth/two_factor_auth_lib/two_factor_auth.rb
|
|
183
184
|
- lib/bandwidth/two_factor_auth_lib/two_factor_auth/client.rb
|
|
184
|
-
- lib/bandwidth/two_factor_auth_lib/two_factor_auth/controllers/api_controller.rb
|
|
185
185
|
- lib/bandwidth/two_factor_auth_lib/two_factor_auth/controllers/base_controller.rb
|
|
186
|
-
- lib/bandwidth/two_factor_auth_lib/two_factor_auth/
|
|
186
|
+
- lib/bandwidth/two_factor_auth_lib/two_factor_auth/controllers/mfa_controller.rb
|
|
187
|
+
- lib/bandwidth/two_factor_auth_lib/two_factor_auth/exceptions/error_with_request_exception.rb
|
|
188
|
+
- lib/bandwidth/two_factor_auth_lib/two_factor_auth/exceptions/forbidden_request_exception.rb
|
|
189
|
+
- lib/bandwidth/two_factor_auth_lib/two_factor_auth/exceptions/unauthorized_request_exception.rb
|
|
187
190
|
- lib/bandwidth/two_factor_auth_lib/two_factor_auth/models/two_factor_code_request_schema.rb
|
|
188
191
|
- lib/bandwidth/two_factor_auth_lib/two_factor_auth/models/two_factor_messaging_response.rb
|
|
189
192
|
- lib/bandwidth/two_factor_auth_lib/two_factor_auth/models/two_factor_verify_code_response.rb
|