Module: Rack::OAuth2::Util

Defined in:
lib/rack/oauth2/util.rb

Class Method Summary collapse

Class Method Details

.base64_encode(text) ⇒ Object



11
12
13
# File 'lib/rack/oauth2/util.rb', line 11

def base64_encode(text)
  Base64.encode64(text).delete("\n")
end

.compact_hash(hash) ⇒ Object



19
20
21
22
23
# File 'lib/rack/oauth2/util.rb', line 19

def compact_hash(hash)
  hash.reject do |key, value|
    value.blank?
  end
end

.parse_uri(uri) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/rack/oauth2/util.rb', line 25

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) ⇒ Object



36
37
38
39
40
41
42
43
44
45
# File 'lib/rack/oauth2/util.rb', line 36

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) ⇒ Object



7
8
9
# 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) ⇒ Boolean

Returns:

  • (Boolean)


47
48
49
50
51
52
53
54
55
56
57
# File 'lib/rack/oauth2/util.rb', line 47

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

.urlsafe_base64_encode(text) ⇒ Object



15
16
17
# File 'lib/rack/oauth2/util.rb', line 15

def urlsafe_base64_encode(text)
  Base64.urlsafe_encode64(text).delete('=')
end