Sha256: 40e409b9a680d99fe9e93ef30cc16ebdf74e40d414303298ad978687b60856a1

Contents?: true

Size: 1.71 KB

Versions: 1

Compression:

Stored size: 1.71 KB

Contents

# 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
  @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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
oauthio-0.9.0 lib/oauthio.rb