Module: Google::Auth::ScopeUtil

Defined in:
lib/googleauth/scope_util.rb

Overview

Small utility for normalizing scopes into canonical form.

The canonical form of scopes is as an array of strings, each in the form of a full URL. This utility converts space-delimited scope strings into this form, and handles a small number of common aliases.

This is used by UserRefreshCredentials to verify that a credential grants a requested scope.

Constant Summary collapse

ALIASES =

Aliases understood by this utility

{
  "email"   => "https://www.googleapis.com/auth/userinfo.email",
  "profile" => "https://www.googleapis.com/auth/userinfo.profile",
  "openid"  => "https://www.googleapis.com/auth/plus.me"
}.freeze

Class Method Summary collapse

Class Method Details

.as_array(scope) ⇒ Array<String>

Ensure the input is an array. If a single string is passed in, splits it via whitespace. Does not interpret aliases.

Parameters:

  • scope (String, Array<String>)

    Input scope(s)

Returns:

  • (Array<String>)

    Always an array of strings

Raises:

  • ArgumentError If the input is not a string or array of strings



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/googleauth/scope_util.rb', line 62

def self.as_array scope
  case scope
  when Array
    scope.each do |item|
      unless item.is_a? String
        raise ArgumentError, "Invalid scope value: #{item.inspect}. Must be string or array"
      end
    end
    scope
  when String
    scope.split
  else
    raise ArgumentError, "Invalid scope value: #{scope.inspect}. Must be string or array"
  end
end

.normalize(scope) ⇒ Array<String>

Normalize the input, which may be an array of scopes or a whitespace- delimited scope string. The output is always an array, even if a single scope is input.

Parameters:

  • scope (String, Array<String>)

    Input scope(s)

Returns:

  • (Array<String>)

    An array of scopes in canonical form.



49
50
51
52
# File 'lib/googleauth/scope_util.rb', line 49

def self.normalize scope
  list = as_array scope
  list.map { |item| ALIASES[item] || item }
end