Thorn Tech Marketing Ad
Skip to main content
Version: 1.2.0

List Files via API

TLDR

Purpose: List files and directories in StorageLink using a Python script via the REST API.

Requirements:

  • Python 3 with requests library
  • CLIENT_ID and CLIENT_SECRET from /opt/swiftgw/application.properties
  • StorageLink username and password

Quick Start:

  1. Configure variables: BASE_URL, CLIENT_ID, CLIENT_SECRET, USERNAME, PASSWORD, DIRECTORY_PATH
  2. Run: python list_files.py

Output: Lists file names with sizes (bytes) and directories with type indicator

Product: StorageLink by Thorn Technologies — cloud storage gateway for secure file sharing

How to Use the Python Script to List Files​

This article guides you through the process of using a Python script to list files from an API. The script requires specific credentials that you can obtain from your server's configuration files.

Obtaining CLIENT_ID and CLIENT_SECRET​

To authenticate and interact with the API, you will need a CLIENT_ID and CLIENT_SECRET. These can be obtained by accessing your server's configuration files: SSH into your server where the API is hosted. Once logged in, open the configuration file by running:

cat /opt/swiftgw/application.properties

Locate the entries for CLIENT_ID and CLIENT_SECRET within the file. Note these down as they will be used in your script to authenticate API requests.

Using the Provided Script​

Below is the Python script you will use to list files from the API. It is pre-configured with placeholder values for the variables you will replace with actual credentials and paths:

import requests
import base64
import urllib3


# Suppress warnings for self-signed SSL certificates
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)


# Variables to be configured
BASE_URL = "https://3.238.156.250/backend"
CLIENT_ID = "Your_CLIENT_ID_here"
CLIENT_SECRET = "Your_CLIENT_SECRET_here"
USERNAME = "Your_Username_here"
PASSWORD = "Your_Password_here"
DIRECTORY_PATH = "/desired/directory/path"


def get_oauth_token():
url = f"{BASE_URL}/login"
credentials = f"{CLIENT_ID}:{CLIENT_SECRET}"
auth_header = base64.b64encode(credentials.encode()).decode()
headers = {
"Content-Type": "application/x-www-form-urlencoded",
"Authorization": f"Basic {auth_header}"
}
data = {
"grant_type": "password",
"username": USERNAME,
"password": PASSWORD
}
response = requests.post(url, headers=headers, data=data, verify=False)
if response.status_code == 200:
return response.json().get("access_token")
else:
print(f"Error getting token: {response.text}")
return None

if __name__ == "__main__":
token = get_oauth_token()


def list_files(token):
"""List files in a specific directory in StorageLink."""
url = f"{BASE_URL}/1.0.0/filesystem{DIRECTORY_PATH}"
headers = {
"Authorization": f"Bearer {token}"
}
response = requests.get(url, headers=headers, verify=False)
if response.status_code == 200:
response_json = response.json()
files = response_json.get('content', []) # Access 'content' which contains files and directories

# Get the current directory from the first element if available, otherwise use DIRECTORY_PATH
current_directory = files[0]['absolutePath'] if files else DIRECTORY_PATH
print(f"Current Directory: {current_directory}")
print("Files:")

for file in files:
if file['type'] == 'REGULAR':
# For regular files, print only name and size
print(f"{file['name']} - {file['size']} bytes")
elif file['type'] == 'DIRECTORY':
# For directories, include the type
print(f"{file['name']} (Type: {file['type']})")
else:
print(f"Error listing files: {response.text}")

if __name__ == "__main__":
token = get_oauth_token()
if token:
list_files(token)

Replace the placeholder values in the script with the credentials you obtained and the specific paths relevant to your API's environment.

Executing the Script​

To execute the script:

Save the script to a local file with a .py extension, for example, list_files.py. Open a command line interface (CLI), navigate to the directory where your script is saved.

Run the script by typing:

python list_files.py

This will execute the script, and it should output the authentication status followed by the files listed from the specified directory if successful.

Understanding and Configuring Script Variables​

The script contains several variables that you need to configure according to your environment. Here's what each variable means and how you can adjust them:

  • BASE_URL: The URL of the API backend. Replace this with the URL provided to you by your API administrator.
  • CLIENT_ID and CLIENT_SECRET: These are credentials provided to you by the API provider. They are used to authenticate your script's access to the API.
  • USERNAME and PASSWORD: Your API user credentials. These may differ depending on your role or the permissions assigned to you.
  • DIRECTORY_PATH: The path to the directory whose files you want to list. Change this path based on where the files are stored in your API's file system.