Skip to content

Instantly share code, notes, and snippets.

@manning-ncsa
Last active January 3, 2023 15:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save manning-ncsa/09df85d606ee6f1e2f474dc6591f7f0e to your computer and use it in GitHub Desktop.
Save manning-ncsa/09df85d606ee6f1e2f474dc6591f7f0e to your computer and use it in GitHub Desktop.

DESaccess login API

Run the desaccess_api_test.py script to test your credentials via the DESaccess login API:

$ python desaccess_api_test.py

# Create a file to define the environment variables as shown below and source it prior to executing this script.

cat <<EOF > $HOME/.desaccess-credentials

#!/bin/sh

export DESACCESS_API_BASE_URL=https://des.ncsa.illinois.edu/desaccess/api
export DESACCESS_FILES_BASE_URL=https://des.ncsa.illinois.edu/files-desaccess
export DESACCESS_DATABASE=desdr
export DESACCESS_USERNAME=your_username
export DESACCESS_PASSWORD=your_password

EOF

source $HOME/.desaccess-credentials

api_examples.py


$ source $HOME/.desaccess-credentials

$ python api_examples.py
Logging in as user "manninga" ("desdr") and storing auth token...
Login succeeded!
#!/usr/bin/env python3
import os
import sys
import requests
try:
# Import credentials and config from environment variables
config = {
'auth_token': '',
'apiBaseUrl': os.environ['DESACCESS_API_BASE_URL'],
'filesBaseUrl': os.environ['DESACCESS_FILES_BASE_URL'],
'database': os.environ['DESACCESS_DATABASE'],
'username': os.environ['DESACCESS_USERNAME'],
'password': os.environ['DESACCESS_PASSWORD'],
}
except:
print('''
# Create a file to define the environment variables as shown below and source it prior to executing this script.
cat <<EOF > $HOME/.desaccess-credentials
#!/bin/sh
export DESACCESS_API_BASE_URL=https://des.ncsa.illinois.edu/desaccess/api
export DESACCESS_FILES_BASE_URL=https://des.ncsa.illinois.edu/files-desaccess
export DESACCESS_DATABASE=desdr
export DESACCESS_USERNAME=your_username
export DESACCESS_PASSWORD=your_password
EOF
source $HOME/.desaccess-credentials
{}
'''.format(sys.argv[0])
)
sys.exit(1)
def login():
"""Obtains an auth token using the username and password credentials for a given database.
"""
# Login to obtain an auth token
r = requests.post(
'{}/login'.format(config['apiBaseUrl']),
data={
'username': config['username'],
'password': config['password'],
'database': config['database']
}
)
# Store the JWT auth token
config['auth_token'] = r.json()['token']
return config['auth_token']
if __name__ == '__main__':
# Authenticate and store the auth token for subsequent API calls
try:
print('Logging in as user "{}" ("{}") and storing auth token...'.format(config['username'], config['database']))
login()
print('Login succeeded!')
except:
print('Login failed.')
sys.exit(1)
sys.exit(0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment