Class: Google::Auth::ClientId

Inherits:
Object
  • Object
show all
Defined in:
lib/googleauth/client_id.rb

Overview

Representation of an application's identity for user authorization flows.

Constant Summary collapse

INSTALLED_APP =

Toplevel JSON key for the an installed app configuration. Must include client_id and client_secret subkeys if present.

"installed".freeze
WEB_APP =

Toplevel JSON key for the a webapp configuration. Must include client_id and client_secret subkeys if present.

"web".freeze
CLIENT_ID =

JSON key for the client ID within an app configuration.

"client_id".freeze
CLIENT_SECRET =

JSON key for the client secret within an app configuration.

"client_secret".freeze
MISSING_TOP_LEVEL_ELEMENT_ERROR =

An error message raised when none of the expected toplevel properties can be found.

"Expected top level property 'installed' or 'web' to be present.".freeze

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id, secret) ⇒ ClientId

Note:

Direct instantiation is discouraged to avoid embedding IDs and secrets in source. See #from_file to load from client_secrets.json files.

Initialize the Client ID. Both id and secret must be non-nil.

Parameters:

  • id (String)

    Text identifier of the client ID

  • secret (String)

    Secret associated with the client ID



66
67
68
69
70
71
# File 'lib/googleauth/client_id.rb', line 66

def initialize id, secret
  raise "Client id can not be nil" if id.nil?
  raise "Client secret can not be nil" if secret.nil?
  @id = id
  @secret = secret
end

Class Attribute Details

.defaultObject

Returns the value of attribute default.



52
53
54
# File 'lib/googleauth/client_id.rb', line 52

def default
  @default
end

Instance Attribute Details

#idString (readonly)

Text identifier of the client ID

Returns:

  • (String)


43
44
45
# File 'lib/googleauth/client_id.rb', line 43

def id
  @id
end

#secretString (readonly)

Secret associated with the client ID

Returns:

  • (String)


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

def secret
  @secret
end

Class Method Details

.from_file(file) ⇒ Google::Auth::ClientID

Constructs a Client ID from a JSON file downloaded from the Google Developers Console.

Parameters:

  • file (String, File)

    Path of file to read from

Returns:

  • (Google::Auth::ClientID)


81
82
83
84
85
86
87
88
# File 'lib/googleauth/client_id.rb', line 81

def self.from_file file
  raise "File can not be nil." if file.nil?
  File.open file.to_s do |f|
    json = f.read
    config = MultiJson.load json
    from_hash config
  end
end

.from_hash(config) ⇒ Google::Auth::ClientID

Constructs a Client ID from a previously loaded JSON file. The hash structure should match the expected JSON format.

Parameters:

  • config (hash)

    Parsed contents of the JSON file

Returns:

  • (Google::Auth::ClientID)

Raises:



98
99
100
101
102
103
# File 'lib/googleauth/client_id.rb', line 98

def self.from_hash config
  raise "Hash can not be nil." if config.nil?
  raw_detail = config[INSTALLED_APP] || config[WEB_APP]
  raise MISSING_TOP_LEVEL_ELEMENT_ERROR if raw_detail.nil?
  ClientId.new raw_detail[CLIENT_ID], raw_detail[CLIENT_SECRET]
end