class PassByME2FAClient
Constants
- VERSION
Public Class Methods
new(http_options)
click to toggle source
# File lib/passbyme2fa-client.rb, line 35 def initialize(http_options) if !http_options.include? :key or !http_options.include? :cert raise ArgumentError.new("SSL key or certificate is missing!") end url = (http_options.include?(:address) ? http_options[:address] : "auth-sp.passbyme.com") http_options.delete :address @http = Net::HTTP.start(url, http_options.merge({ :use_ssl => true, :verify_mode => OpenSSL::SSL::VERIFY_PEER, :ca_file => File.expand_path("../passbyme2fa-client/truststore.pem", __FILE__), })) end
Public Instance Methods
cancel_message(message_id)
click to toggle source
# File lib/passbyme2fa-client.rb, line 86 def cancel_message(message_id) handle_existing_message(message_id, Net::HTTP::Delete) end
send_message(params)
click to toggle source
# File lib/passbyme2fa-client.rb, line 48 def send_message(params) recipients = params[:recipients] subject = params[:subject] body = params[:body] availability = params[:availability] type = params[:type] callbackUrl = params[:callbackUrl] if recipients.nil? or recipients.length == 0 raise ArgumentError.new("Missing recipients!") end availability = availability.to_i if availability < 1 raise ArgumentError.new("Availability must be an integer greater than 0.") end raise ArgumentError.new("Invalid message type #{type}.") unless MessageType.constants.index { |ct| MessageType.const_get(ct) == type } req = Net::HTTP::Post.new("/frontend/messages", "Content-Type" => "application/json") req.body = { :recipients => recipients, :subject => subject, :body => body, :availability => availability, :type => type, :callbackUrl => callbackUrl }.to_json SessionInfo.new(JSON.parse(do_https(req)), self) end
track_message(message_id)
click to toggle source
# File lib/passbyme2fa-client.rb, line 82 def track_message(message_id) handle_existing_message(message_id, Net::HTTP::Get) end
Private Instance Methods
do_https(req)
click to toggle source
# File lib/passbyme2fa-client.rb, line 118 def do_https(req) req.add_field("X-PBM-API-VERSION", "1") res = @http.request(req) raise HTTPError.new(res) unless res.body if res.code !~ /\A2..\z/ if res.code == "420" raise PassByMEError.new(JSON.parse(res.body)) else raise HTTPError.new(res) end end res.body end
handle_existing_message(message_id, net_http_class)
click to toggle source
# File lib/passbyme2fa-client.rb, line 92 def handle_existing_message(message_id, net_http_class) message_handle = nil if message_id.is_a? Hash message_id = message_id[:messageId] end if message_id.is_a? SessionInfo message_handle = message_id message_id = message_id.message_id end if message_id.nil? or message_id == "" raise ArgumentError.new("Empty message id!") end req = net_http_class.new("/frontend/messages/#{message_id}") json = JSON.parse(do_https(req)) if message_handle.nil? message_handle = SessionInfo.new(json, self) else message_handle.re_initialize(json) end message_handle end