lib/oauthio.rb in oauthio-0.1.0 vs lib/oauthio.rb in oauthio-0.9.0

- old
+ new

@@ -1,5 +1,77 @@ +# load standard ruby libraries +require 'logger' +require 'uri' +require 'json' +require "stringio" + +# load project files require "oauthio/version" +require "oauthio/client" +require "oauthio/util" module Oauthio - # Your code goes here... + @public_key = nil + @secret_key = nil + @csrf_tokens = [], + @oauthd_url = 'https://oauth.io', + @oauthd_base = '/auth' + + @log_level = nil + @logger = nil + + # map to the same values as the standard library's logger + LEVEL_DEBUG = Logger::DEBUG + LEVEL_ERROR = Logger::ERROR + LEVEL_INFO = Logger::INFO + + class << self + attr_accessor :csrf_tokens + + attr_reader :public_key, :secret_key, :log_level + end + + def self.set_credentials pk, sk + @public_key = pk + @secret_key = sk + end + + def self.auth_url provider, redirect_url, csrf_token + Util.log_debug "[oauthio] Redirect to #{@oauthd_url}#{@oauthd_base}/#{provider} with k=#{@public_key} and redirect_uri=#{redirect_url}" + + url = endpoint_url + '/' + provider + '?k=' + @public_key + + opts = {state: csrf_token}.to_json + url += '&opts=' + URI.escape("#{opts}", Regexp.new("[^#{URI::PATTERN::UNRESERVED}]")) + + url += '&redirect_type=server&redirect_uri=' + URI.escape(redirect_url, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]")) + + url + end + + def self.endpoint_url + @oauthd_url + @oauthd_base + end + + ##################### + # LOGGING # + ##################### + + def self.log_level + @log_level + end + + def self.log_level=(val) + if !val.nil? && ![LEVEL_DEBUG, LEVEL_ERROR, LEVEL_INFO].include?(val) + raise ArgumentError, "log_level should only be set to `Logger::DEBUG`, `Logger::ERROR` or `Logger::INFO`" + end + @log_level = val + end + + def self.logger + @logger + end + + def self.logger=(val) + @logger = val + end end