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

Raises:



68
69
70
71
72
73
# File 'lib/googleauth/client_id.rb', line 68

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

Class Attribute Details

.defaultObject

Returns the value of attribute default.



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

def default
  @default
end

Instance Attribute Details

#idString (readonly)

Text identifier of the client ID

Returns:

  • (String)


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

def id
  @id
end

#secretString (readonly)

Secret associated with the client ID

Returns:

  • (String)


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

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)

Raises:



84
85
86
87
88
89
90
91
# File 'lib/googleauth/client_id.rb', line 84

def self.from_file file
  raise InitializationError, "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:



102
103
104
105
106
107
# File 'lib/googleauth/client_id.rb', line 102

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