class OneID
Public Class Methods
new(api_id = nil, api_key = nil, server = "")
click to toggle source
# File lib/oneid.rb, line 5 def initialize(api_id = nil, api_key = nil, server = "") @api_id = api_id @api_key = api_key @keychain_server = sprintf("https://keychain%s.oneid.com", server) @repo_server = sprintf("https://account%s.oneid.com/repo", server) end
Public Instance Methods
confirm(uid, token, message)
click to toggle source
# File lib/oneid.rb, line 43 def confirm(uid, token, message) result = post(@repo_server, "send_2fa", { "two_factor_token" => token, "message" => message }) result["uid"] = uid self.validate(result) end
make_nonce()
click to toggle source
# File lib/oneid.rb, line 16 def make_nonce() post(@keychain_server, "make_nonce") end
register()
click to toggle source
# File lib/oneid.rb, line 12 def register() post(@keychain_server, "register") end
success?(response)
click to toggle source
# File lib/oneid.rb, line 39 def success?(response) response.has_key?("errorcode") ? response["errorcode"] == 0 : false end
validate(payload)
click to toggle source
# File lib/oneid.rb, line 20 def validate(payload) if payload.is_a? String payload = JSON.parse(payload) end data = { "nonces" => payload["nonces"], "uid" => payload["uid"] } if payload.has_key?("attr_claim_tokens") data["attr_claim_tokens"] = payload["attr_claim_tokens"] end response = post(@keychain_server, "validate", data) response["valid"] = self.success?(response) payload.merge!(response) end
Private Instance Methods
post(server, method, data = {})
click to toggle source
# File lib/oneid.rb, line 53 def post(server, method, data = {}) url = URI.parse(sprintf("%s/%s", server, method)) req = Net::HTTP::Post.new(url.path) if @api_id && @api_key req.basic_auth @api_id, @api_key end req.body = JSON.generate(data) req.add_field("Content-Type", "application/json") sock = Net::HTTP.new(url.host, url.port) sock.use_ssl = true response = sock.start { |http| http.request(req) } JSON.parse(response.body) end