module Persona::Verifier

Constants

DEFAULT_VERIFIER_URI

Public Class Methods

verify_assertion(assertion, audience, verifier_uri: nil) click to toggle source
# File lib/sinatra_persona/verifier.rb, line 10
def self.verify_assertion(assertion, audience, verifier_uri: nil)
  verifier_uri ||= DEFAULT_VERIFIER_URI
  Net::HTTP.start(verifier_uri.host, verifier_uri.port, use_ssl: true) do |conn|
    params = {assertion: assertion, audience: audience}
    verifier_uri.query = URI.encode_www_form(params)
    request = Net::HTTP::Post.new verifier_uri
    response = conn.request request
    if not response.code == '200' or response.body.nil? then
      return nil
    end
    parsed = JSON.parse response.body
    if parsed['status'] == 'okay' then
      parsed['email']
    else
      nil
    end
  end
end