External API Caller with comprehensive logging
Project description
LDC-XAC - External API Caller
A Python package for making external API calls with comprehensive logging capabilities.
Features
- Comprehensive Logging: Log all external API requests, responses, and errors in a structured format
- Request Tracking: Track request duration and performance metrics
- Error Handling: Detailed error logging with exception information
- Data Truncation: Automatic truncation of large request/response data for logging
- Flexible Configuration: Customizable API codes, system identifiers, and logging parameters
Installation
pip install ldc-xac
Quick Start
from xac import make_external_api_request
# Make a simple GET request
response = make_external_api_request(
url="https://api.example.com/data",
method="GET",
api_code="EXAMPLE_API",
system="MY_SYSTEM"
)
print(response.status_code)
print(response.json())
# For testing with self-signed certificates or SSL issues
response = make_external_api_request(
url="https://api.example.com/data",
method="GET",
api_code="EXAMPLE_API",
system="MY_SYSTEM",
verify=False # Disable SSL verification
)
Advanced Usage
from xac import ExternalAPICaller
# Log a request manually
start_time = ExternalAPICaller.log_external_api_request(
url="https://api.example.com/users",
method="POST",
api_code="CREATE_USER",
system="USER_MANAGEMENT"
)
# Make your request
import requests
response = requests.post(
"https://api.example.com/users",
json={"name": "John Doe", "email": "john@example.com"}
)
# Log the response
ExternalAPICaller.log_external_api_response(
url="https://api.example.com/users",
response=response,
start_time=start_time,
api_code="CREATE_USER",
system="USER_MANAGEMENT"
)
Configuration
The package uses the following default configuration:
- MAX_REQUEST_BODY_SIZE: 10,000 characters (configurable in
xac.config)
Logging Format
The package logs in JSON format with the following structure:
Request Log
{
"descr": "External API Request",
"system": "EXTERNAL",
"api_code": "API_CALL",
"request_method": "GET",
"request_url": "https://api.example.com/data"
}
Response Log
{
"descr": "External API Response",
"system": "EXTERNAL",
"api_code": "API_CALL",
"response_code": 200,
"response_for_request": "https://api.example.com/data",
"time_taken_ms": 150.25
}
Error Log
{
"descr": "External API Error",
"system": "EXTERNAL",
"api_code": "API_CALL",
"response_code": null,
"response_for_request": "https://api.example.com/data",
"time_taken_ms": 5000.0,
"error_message": "Connection timeout",
"error_type": "ConnectTimeout"
}
API Reference
make_external_api_request()
Make an external API request with automatic logging.
Parameters:
url(str): The API endpoint URLmethod(str): HTTP method (default: "GET")headers(dict, optional): Request headersparams(dict, optional): Query parameterstimeout(int, optional): Request timeout in seconds (default: 300)api_code(str, optional): Custom API code identifiersystem(str, optional): System identifierverify(bool, optional): SSL certificate verification (default: True)**kwargs: Additional arguments passed torequests.request()
Returns:
requests.Response: The response object
ExternalAPICaller
Main class for logging external API calls.
Methods:
log_external_api_request(): Log request detailslog_external_api_response(): Log response detailslog_external_api_error(): Log error details_truncate_large_data(): Truncate large data for logging
Development
Setup Development Environment
git clone https://github.com/ayushsonar-lendenclub/ldc-xac
cd xac
pip install -e ".[dev]"
Running Tests
pytest
Code Formatting
black xac/
Type Checking
mypy xac/
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for your changes
- Run the test suite
- Submit a pull request
Support
For support and questions, please open an issue on GitHub.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ldc_xac-1.0.1.tar.gz.
File metadata
- Download URL: ldc_xac-1.0.1.tar.gz
- Upload date:
- Size: 7.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
651df5393010f430ed6fb3fa47c47853092d8b69eac99ef41a813d2535dc202f
|
|
| MD5 |
46736e71cbfb59c8e886910be94c67a9
|
|
| BLAKE2b-256 |
650d07527bd2dc5c892489144fe7e43e9ccd3a8ea245dfb4cd0abc6ac0150853
|
File details
Details for the file ldc_xac-1.0.1-py3-none-any.whl.
File metadata
- Download URL: ldc_xac-1.0.1-py3-none-any.whl
- Upload date:
- Size: 7.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a669e954c433490cd1c3f500869bab3971a3e373d3882bbd1a21abdcf9421d7
|
|
| MD5 |
03bca9f9d65f7fb48fa54dcff1dd6e23
|
|
| BLAKE2b-256 |
39c237c923d70357306664bdd15c74a034f6ee0553ac20c10a8a8c935e0fefea
|