# Module: loader_http_client ## Purpose HTTP client for downloading and uploading model files (and other binary resources) via an external Loader microservice. ## Public Interface ### Class: LoadResult Simple result wrapper. | Field | Type | Description | |-------|------|-------------| | `err` | str or None | Error message if operation failed | | `data` | bytes or None | Response payload on success | ### Class: LoaderHttpClient | Method | Signature | Description | |--------|-----------|-------------| | `__init__` | `(str base_url)` | Stores base URL, strips trailing slash | | `load_big_small_resource` | `(str filename, str directory) -> LoadResult` | POST to `/load/{filename}` with JSON body `{filename, folder}`, returns raw bytes | | `upload_big_small_resource` | `(bytes content, str filename, str directory) -> LoadResult` | POST to `/upload/{filename}` with multipart file + form data `{folder}` | | `stop` | `() -> None` | No-op placeholder | ## Internal Logic Both load/upload methods wrap all exceptions into `LoadResult(err=str(e))`. Errors are logged via loguru but never raised. ## Dependencies - **External**: `requests`, `loguru` - **Internal**: none (leaf module) ## Consumers - `inference` — downloads ONNX/TensorRT models, uploads converted TensorRT engines - `main` — instantiates client with `LOADER_URL` ## Data Models - `LoadResult` — operation result with error-or-data semantics ## Configuration - `base_url` — provided at construction time, sourced from `LOADER_URL` environment variable in `main.py` ## External Integrations | Integration | Protocol | Endpoint Pattern | |-------------|----------|-----------------| | Loader service | HTTP POST | `/load/{filename}` (download), `/upload/{filename}` (upload) | ## Security None (no auth headers sent to loader). ## Tests None found.