diff --git a/.travis.yml b/.travis.yml index c020b355..42861c3d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -141,6 +141,8 @@ script: - if [ "$e2e" = true ]; then openssl aes-256-cbc -K $encrypted_ab10ec38326e_key -iv $encrypted_ab10ec38326e_iv -in travis/oauth2service.json.enc -out $gampath/oauth2service.json -d; fi - if [ "$e2e" = true ]; then cat travis/cfg_template.json | python travis/svars-write.py &> /dev/null; fi - if [ "$e2e" = true ]; then $gam info domain; fi +- if [ "$e2e" = true ]; then $gam oauth info; fi +- if [ "$e2e" = true ]; then $gam oauth refresh; fi - if [ "$e2e" = true ]; then $gam info user; fi - if [ "$e2e" = true ]; then export tstamp=$(date +%s%3N); export newbase=travis-test-$jid-$tstamp; diff --git a/src/gam.py b/src/gam.py index 91695c7b..6e390e17 100755 --- a/src/gam.py +++ b/src/gam.py @@ -1220,10 +1220,10 @@ def getOauth2TxtStorageCredentials(): GC_Values[GC_DECODED_ID_TOKEN] = oauth_data.get('decoded_id_token', '') return creds -def getValidOauth2TxtCredentials(): +def getValidOauth2TxtCredentials(force_refresh=False): """Gets OAuth2 credentials which are guaranteed to be fresh and valid.""" credentials = getOauth2TxtStorageCredentials() - if credentials and credentials.expired: + if (credentials and credentials.expired) or force_refresh: try: credentials.refresh(google_auth_httplib2.Request(httplib2.Http())) writeCredentials(credentials) @@ -13973,6 +13973,12 @@ def ProcessGAMCommand(args): OAuthInfo() elif argument in ['delete', 'revoke']: doDeleteOAuth() + elif argument in ['refresh']: + creds = getValidOauth2TxtCredentials(force_refresh=True) + if not creds: + systemErrorExit(5, 'Credential refresh failed') + else: + print('Credenials refreshed') else: systemErrorExit(2, '%s is not a valid argument for "gam oauth"' % argument) sys.exit(0)