Initial
This commit is contained in:
111
generate_sample.py
Normal file
111
generate_sample.py
Normal file
@@ -0,0 +1,111 @@
|
||||
import os
|
||||
import json
|
||||
import requests
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# Load environment variables from .env file
|
||||
load_dotenv()
|
||||
|
||||
def get_bearer_token():
|
||||
"""Request a bearer token using credentials from environment variables."""
|
||||
url = "https://identity.filevine.com/connect/token"
|
||||
data = {
|
||||
"client_id": os.environ.get("FILEVINE_CLIENT_ID"),
|
||||
"client_secret": os.environ.get("FILEVINE_CLIENT_SECRET"),
|
||||
"grant_type": "personal_access_token",
|
||||
"scope": "fv.api.gateway.access tenant filevine.v2.api.* email openid fv.auth.tenant.read",
|
||||
"token": os.environ.get("FILEVINE_PERSONAL_ACCESS_TOKEN"),
|
||||
}
|
||||
headers = {"Accept": "application/json"}
|
||||
response = requests.post(url, data=data, headers=headers)
|
||||
response.raise_for_status()
|
||||
return response.json().get("access_token")
|
||||
|
||||
# Define the collection of request/response pairs
|
||||
# User can add more tuples following the same pattern
|
||||
SAMPLE_PROJECT_ID = 15905506
|
||||
REQUESTS = [
|
||||
(
|
||||
{
|
||||
"url": "https://api.filevineapp.com/fv-app/v2/projects",
|
||||
"headers": {
|
||||
"Accept": "application/json",
|
||||
"Authorization": f"Bearer {get_bearer_token()}",
|
||||
"x-fv-orgid": os.environ.get("FILEVINE_ORG_ID"),
|
||||
"x-fv-userid": os.environ.get("FILEVINE_USER_ID"),
|
||||
},
|
||||
"params": {},
|
||||
"method": "GET"
|
||||
|
||||
},
|
||||
"examples/project_list.json"
|
||||
),
|
||||
(
|
||||
{
|
||||
"url": f"https://api.filevineapp.com/fv-app/v2/Projects/{SAMPLE_PROJECT_ID}/contacts",
|
||||
"headers": {
|
||||
"Accept": "application/json",
|
||||
"Authorization": f"Bearer {get_bearer_token()}",
|
||||
"x-fv-orgid": os.environ.get("FILEVINE_ORG_ID"),
|
||||
"x-fv-userid": os.environ.get("FILEVINE_USER_ID"),
|
||||
},
|
||||
"params": {},
|
||||
"method": "GET"
|
||||
|
||||
},
|
||||
"examples/project_contacts.json"
|
||||
),
|
||||
(
|
||||
{
|
||||
"url": f"https://api.filevineapp.com/fv-app/v2/contacts/43125866",
|
||||
"headers": {
|
||||
"Accept": "application/json",
|
||||
"Authorization": f"Bearer {get_bearer_token()}",
|
||||
"x-fv-orgid": os.environ.get("FILEVINE_ORG_ID"),
|
||||
"x-fv-userid": os.environ.get("FILEVINE_USER_ID"),
|
||||
},
|
||||
"params": {},
|
||||
"method": "GET"
|
||||
|
||||
},
|
||||
"examples/client.json"
|
||||
)
|
||||
]
|
||||
|
||||
def generate_sample_request_response(request_config):
|
||||
"""Generate a sample request/response pair using the provided request configuration."""
|
||||
# Make the request
|
||||
response = requests.request(**request_config)
|
||||
|
||||
# Create structured output
|
||||
result = {
|
||||
"sample_request": request_config,
|
||||
"sample_response": {
|
||||
"status_code": response.status_code,
|
||||
"json": response.json() if response.content else None,
|
||||
"headers": dict(response.headers)
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
# Ensure examples directory exists
|
||||
os.makedirs("examples", exist_ok=True)
|
||||
|
||||
# Process each request/response pair
|
||||
for request_config, output_path in REQUESTS:
|
||||
# Regenerate bearer token for each request (tokens may expire)
|
||||
request_config["headers"]["Authorization"] = f"Bearer {get_bearer_token()}"
|
||||
|
||||
result = generate_sample_request_response(request_config)
|
||||
|
||||
# Save pretty printed JSON to file
|
||||
with open(output_path, 'w') as f:
|
||||
json.dump(result, f, indent=2)
|
||||
|
||||
print(f"Generated {len(REQUESTS)} sample request/response pairs")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error: {e}")
|
||||
Reference in New Issue
Block a user