Class: Infobip::Twofactor::API
- Inherits:
-
Object
- Object
- Infobip::Twofactor::API
- Defined in:
- lib/infobip/twofactor/api.rb
Instance Attribute Summary collapse
-
#api_key ⇒ Object
readonly
Returns the value of attribute api_key.
-
#application_id ⇒ Object
readonly
Returns the value of attribute application_id.
-
#message_id ⇒ Object
readonly
Returns the value of attribute message_id.
Instance Method Summary collapse
-
#initialize(username, password, url, message_id, application_id) ⇒ API
constructor
A new instance of API.
- #send_pin(phone) ⇒ Object
- #verify_pin(pin_id, pin) ⇒ Object
Constructor Details
#initialize(username, password, url, message_id, application_id) ⇒ API
Returns a new instance of API.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/infobip/twofactor/api.rb', line 12 def initialize(username, password, url, , application_id) raise "Missing message_id" unless raise "Missing application_id" unless application_id #send auth reqest @authorization_string = Base64.strict_encode64("#{username}:#{password}") @message_id = @application_id = application_id @auth = Crib.api(url) do |http| http.headers[:authorization] = "Basic #{@authorization_string}" end #get and save api key @api_key = @auth.send("api-key")._post.gsub('"','') @api = Crib.api(url) do |http| http.headers[:authorization] = "App #{@api_key}" http.headers["content-type"] = "application/json" end end |
Instance Attribute Details
#api_key ⇒ Object (readonly)
Returns the value of attribute api_key.
8 9 10 |
# File 'lib/infobip/twofactor/api.rb', line 8 def api_key @api_key end |
#application_id ⇒ Object (readonly)
Returns the value of attribute application_id.
9 10 11 |
# File 'lib/infobip/twofactor/api.rb', line 9 def application_id @application_id end |
#message_id ⇒ Object (readonly)
Returns the value of attribute message_id.
10 11 12 |
# File 'lib/infobip/twofactor/api.rb', line 10 def @message_id end |
Instance Method Details
#send_pin(phone) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/infobip/twofactor/api.rb', line 34 def send_pin(phone) raise "Missing phone number" unless phone raise "Missing message_id" unless @message_id raise "Missing application_id" unless @application_id response = @api.pin._post(applicationId: @application_id, messageId: @message_id, to: phone) raise "Malformed two factor API response - no sms status field" unless (response.respond_to?(:smsStatus)) raise "Malformed two factor API response - no pin Id field" unless (response.respond_to?(:pinId)) raise "SMS not sent" unless (response.smsStatus == "MESSAGE_SENT") @pin_id = response[:pinId] response end |
#verify_pin(pin_id, pin) ⇒ Object
46 47 48 49 50 51 |
# File 'lib/infobip/twofactor/api.rb', line 46 def verify_pin(pin_id, pin) raise "Missing pin id" unless pin_id response = @api.pin(pin_id).verify._post(pin: pin) raise "Malformed two factor API response - no verified field" unless (response.respond_to?(:verified)) response end |