adds Constants for Authorization_uri, Token_credentials_uri
extracts authorize extracts credentials_hash
This commit is contained in:
parent
bbb24a5d2e
commit
bd7cf179f3
|
@ -23,8 +23,12 @@ module Google
|
|||
# http://google-api-python-client.googlecode.com/hg/docs/epy/oauth2client.file.Storage-class.html
|
||||
#
|
||||
class FileStorage
|
||||
|
||||
AUTHORIZATION_URI = 'https://accounts.google.com/o/oauth2/auth'
|
||||
TOKEN_CREDENTIAL_URI = 'https://accounts.google.com/o/oauth2/token'
|
||||
|
||||
# @return [String] Path to the credentials file.
|
||||
attr_reader :path
|
||||
attr_accessor :path
|
||||
|
||||
# @return [Signet::OAuth2::Client] Path to the credentials file.
|
||||
attr_reader :authorization
|
||||
|
@ -35,22 +39,26 @@ module Google
|
|||
# @param [String] path
|
||||
# Path to the credentials file.
|
||||
def initialize(path)
|
||||
self.path= path
|
||||
self.load_credentials
|
||||
@path= path
|
||||
self.authorize
|
||||
end
|
||||
|
||||
##
|
||||
# Attempt to read in credentials from the specified file.
|
||||
def load_credentials
|
||||
cached_credentials = JSON.load(path)
|
||||
@authorization = Signet::OAuth2::Client.new(cached_credentials)
|
||||
@authorization.issued_at = Time.at(cached_credentials['issued_at'])
|
||||
self.refresh_authorization if @authorization.expired?
|
||||
if File.exists?(@path) && File.readable?(@path) && File.writable?(@path)
|
||||
credentials = File.open(path, 'r') { |f| JSON.parse(f.read) }
|
||||
end
|
||||
credentials
|
||||
end
|
||||
|
||||
def path=(value)
|
||||
@path=value
|
||||
raise "Credentials on path #{path} not accessible" unless File.exists?(@path) && File.readable?(@path) && File.writable?(@path)
|
||||
def authorize
|
||||
if load_credentials
|
||||
cached_credentials = load_credentials
|
||||
@authorization = Signet::OAuth2::Client.new(cached_credentials)
|
||||
@authorization.issued_at = Time.at(cached_credentials['issued_at'].to_i)
|
||||
self.refresh_authorization if @authorization.expired?
|
||||
end
|
||||
end
|
||||
|
||||
##
|
||||
|
@ -60,6 +68,19 @@ module Google
|
|||
self.write_credentials(@authorization)
|
||||
end
|
||||
|
||||
def credentials_hash
|
||||
{
|
||||
:access_token => @authorization.access_token,
|
||||
:authorization_uri => AUTHORIZATION_URI,
|
||||
:client_id => @authorization.client_id,
|
||||
:client_secret => @authorization.client_secret,
|
||||
:expires_in => @authorization.expires_in,
|
||||
:refresh_token => @authorization.refresh_token,
|
||||
:token_credential_uri => TOKEN_CREDENTIAL_URI,
|
||||
:issued_at => @authorization.issued_at.to_i
|
||||
}
|
||||
end
|
||||
|
||||
##
|
||||
# Write the credentials to the specified file.
|
||||
#
|
||||
|
@ -69,18 +90,7 @@ module Google
|
|||
def write_credentials(authorization=nil)
|
||||
@authorization = authorization if authorization
|
||||
if @authorization.refresh_token
|
||||
|
||||
credentials_hash = {
|
||||
:access_token => @authorization.access_token,
|
||||
:authorization_uri => @authorization.authorization_uri,
|
||||
:client_id => @authorization.client_id,
|
||||
:client_secret => @authorization.client_secret,
|
||||
:expires_in => @authorization.expires_in,
|
||||
:refresh_token => @authorization.refresh_token,
|
||||
:token_credential_uri => @authorization.token_credential_uri
|
||||
}
|
||||
|
||||
File.open(self.path, 'w', 0600) do |file|
|
||||
File.open(self.path, 'w') do |file|
|
||||
file.write(credentials_hash.to_json)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue