38 lines
1.7 KiB
Python
Executable File
38 lines
1.7 KiB
Python
Executable File
#!/usr/bin/env python
|
|
import os
|
|
import requests
|
|
import json
|
|
from urllib.parse import urlencode
|
|
|
|
def generate_config(app_name, scopes):
|
|
#Define Session
|
|
session = requests.Session()
|
|
|
|
#Ensure Credentials
|
|
parent = os.path.dirname(os.path.realpath(__file__))
|
|
with open(os.path.join(parent, 'config_template.json'), 'r') as template:
|
|
config = json.load(template)
|
|
|
|
#Create app
|
|
instance = input('Please enter your instance: ')
|
|
if not instance[:4] == 'http':
|
|
instance = 'https://' + instance
|
|
|
|
response = session.post(instance + '/api/v1/apps', data={'client_name':app_name,'scopes':scopes, 'redirect_uris':'urn:ietf:wg:oauth:2.0:oob'}).json()
|
|
|
|
client_id = config['client_id'] = response['client_id']
|
|
client_secret = config['client_secret'] = response['client_secret']
|
|
config['instance'] = instance
|
|
|
|
#Log in to user account
|
|
|
|
print(instance + '/oauth/authorize?', urlencode({'response_type':'code', 'client_id':client_id, 'redirect_uri':'urn:ietf:wg:oauth:2.0:oob', 'scope':scopes}))
|
|
code = input("To generate a token to access your account, " + app_name + " needs an authorization code. Please authorize using the link above and enter the code it provides you \nCode: ")
|
|
response = session.post(instance + '/oauth/token', data={'grant_type':'authorization_code', 'code':code, 'client_id':client_id, 'client_secret':client_secret, 'redirect_uri':'urn:ietf:wg:oauth:2.0:oob', 'scope':scopes})
|
|
config['user_token'] = response.json()['access_token']
|
|
|
|
with open(os.path.join(parent, 'config.json'), 'w') as config_file:
|
|
config_file.write(json.dumps(config))
|
|
|
|
if __name__ == "__main__":
|
|
generate_config("test_app", "read write follow push") |