module Rack::OAuth2::Util

Public Class Methods

base64_encode(text) click to toggle source
# File lib/rack/oauth2/util.rb, line 11
def base64_encode(text)
  Base64.encode64(text).gsub(/\n/, '')
end
compact_hash(hash) click to toggle source
# File lib/rack/oauth2/util.rb, line 15
def compact_hash(hash)
  hash.reject do |key, value|
    value.blank?
  end
end
parse_uri(uri) click to toggle source
# File lib/rack/oauth2/util.rb, line 21
def parse_uri(uri)
  case uri
  when URI::Generic
    uri
  when String
    URI.parse(uri)
  else
    raise "Invalid format of URI is given."
  end
end
redirect_uri(base_uri, location, params) click to toggle source
# File lib/rack/oauth2/util.rb, line 32
def redirect_uri(base_uri, location, params)
  redirect_uri = parse_uri base_uri
  case location
  when :query
    redirect_uri.query = [redirect_uri.query, Util.compact_hash(params).to_query].compact.join('&')
  when :fragment
    redirect_uri.fragment = Util.compact_hash(params).to_query
  end
  redirect_uri.to_s
end
rfc3986_encode(text) click to toggle source
# File lib/rack/oauth2/util.rb, line 7
def rfc3986_encode(text)
  URI.encode(text, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
end
uri_match?(base, given) click to toggle source
# File lib/rack/oauth2/util.rb, line 43
def uri_match?(base, given)
  base = parse_uri(base)
  given = parse_uri(given)
  base.path = '/' if base.path.blank?
  given.path = '/' if given.path.blank?
  [:scheme, :host, :port].all? do |key|
    base.send(key) == given.send(key)
  end && !!(/^#{base.path}/ =~ given.path)
rescue
  false
end