Update dashboard, memory, root +2 more (+3 ~5)
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
# Copyright (C) 2017 Google Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
"""Command-line tool for obtaining authorization and credentials from a user.
|
||||
|
||||
This tool uses the OAuth 2.0 Authorization Code grant as described in
|
||||
`section 1.3.1 of RFC6749`_ and implemeted by
|
||||
:class:`google_auth_oauthlib.flow.Flow`.
|
||||
|
||||
This tool is intended for assist developers in obtaining credentials
|
||||
for testing applications where it may not be possible or easy to run a
|
||||
complete OAuth 2.0 authorization flow, especially in the case of code
|
||||
samples or embedded devices without input / display capabilities.
|
||||
|
||||
This is not intended for production use where a combination of
|
||||
companion and on-device applications should complete the OAuth 2.0
|
||||
authorization flow to get authorization from the users.
|
||||
|
||||
.. _section 1.3.1 of RFC6749: https://tools.ietf.org/html/rfc6749#section-1.3.1
|
||||
"""
|
||||
|
||||
import json
|
||||
import os
|
||||
import os.path
|
||||
|
||||
import click
|
||||
|
||||
import google_auth_oauthlib.flow
|
||||
|
||||
|
||||
APP_NAME = "google-oauthlib-tool"
|
||||
DEFAULT_CREDENTIALS_FILENAME = "credentials.json"
|
||||
|
||||
|
||||
@click.command()
|
||||
@click.option(
|
||||
"--client-secrets",
|
||||
metavar="<client_secret_json_file>",
|
||||
required=True,
|
||||
help="Path to OAuth2 client secret JSON file.",
|
||||
)
|
||||
@click.option(
|
||||
"--scope",
|
||||
multiple=True,
|
||||
metavar="<oauth2 scope>",
|
||||
required=True,
|
||||
help="API scopes to authorize access for.",
|
||||
)
|
||||
@click.option(
|
||||
"--save",
|
||||
is_flag=True,
|
||||
metavar="<save_mode>",
|
||||
show_default=True,
|
||||
default=False,
|
||||
help="Save the credentials to file.",
|
||||
)
|
||||
@click.option(
|
||||
"--credentials",
|
||||
metavar="<oauth2_credentials>",
|
||||
show_default=True,
|
||||
default=os.path.join(click.get_app_dir(APP_NAME), DEFAULT_CREDENTIALS_FILENAME),
|
||||
help="Path to store OAuth2 credentials.",
|
||||
)
|
||||
def main(client_secrets, scope, save, credentials):
|
||||
"""Command-line tool for obtaining authorization and credentials from a user.
|
||||
|
||||
This tool uses the OAuth 2.0 Authorization Code grant as described
|
||||
in section 1.3.1 of RFC6749:
|
||||
https://tools.ietf.org/html/rfc6749#section-1.3.1
|
||||
|
||||
This tool is intended for assist developers in obtaining credentials
|
||||
for testing applications or samples.
|
||||
|
||||
This is not intended for production use where a combination of
|
||||
companion and on-device applications should complete the OAuth 2.0
|
||||
authorization flow to get authorization from the users.
|
||||
|
||||
"""
|
||||
|
||||
flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
|
||||
client_secrets, scopes=scope
|
||||
)
|
||||
|
||||
creds = flow.run_local_server()
|
||||
|
||||
creds_data = {
|
||||
"token": creds.token,
|
||||
"refresh_token": creds.refresh_token,
|
||||
"token_uri": creds.token_uri,
|
||||
"client_id": creds.client_id,
|
||||
"client_secret": creds.client_secret,
|
||||
"scopes": creds.scopes,
|
||||
}
|
||||
|
||||
if save:
|
||||
del creds_data["token"]
|
||||
|
||||
config_path = os.path.dirname(credentials)
|
||||
if config_path and not os.path.isdir(config_path):
|
||||
os.makedirs(config_path)
|
||||
|
||||
with open(credentials, "w") as outfile:
|
||||
json.dump(creds_data, outfile)
|
||||
|
||||
click.echo("credentials saved: %s" % credentials)
|
||||
|
||||
else:
|
||||
click.echo(json.dumps(creds_data))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# pylint doesn't realize that click has changed the function signature.
|
||||
main() # pylint: disable=no-value-for-parameter
|
||||
Reference in New Issue
Block a user