Some checks failed
Docker Build and Push / setup (push) Successful in 54s
API Docs (Node.js Express) / test (20) (push) Failing after 3m4s
API Docs (Node.js Express) / build (push) Has been skipped
Integration Tests / integration-tests (push) Failing after 2m31s
Integration Tests / performance-tests (push) Has been skipped
API Gateway (Java Spring Boot) / test (21) (push) Failing after 4m18s
API Gateway (Java Spring Boot) / test (17) (push) Failing after 4m19s
API Gateway (Java Spring Boot) / build (push) Has been skipped
Service Adapters (Python FastAPI) / test (3.11) (push) Failing after 1m51s
Docker Build and Push / build-push-service-adapters (push) Successful in 1m15s
Service Adapters (Python FastAPI) / test (3.13) (push) Failing after 1m58s
Service Adapters (Python FastAPI) / test (3.12) (push) Failing after 3m17s
Service Adapters (Python FastAPI) / build (push) Has been skipped
Docker Build and Push / build-push-api-docs (push) Successful in 52s
Docker Build and Push / build-push-frontend (push) Successful in 45s
Docker Build and Push / build-push-api-gateway (push) Successful in 10m4s
71 lines
2.4 KiB
Markdown
71 lines
2.4 KiB
Markdown
# Service Adapters
|
|
|
|
Python FastAPI service for integrating with external homelab services.
|
|
|
|
## Purpose
|
|
- Integrate with Home Assistant, Frigate, Immich, n8n
|
|
- Transform external service data into standardized format
|
|
- Publish events to the message bus
|
|
- Provide unified API for service data
|
|
|
|
## Technology Stack
|
|
- **Language**: Python 3.11
|
|
- **Framework**: FastAPI
|
|
- **Port**: 8000
|
|
- **Message Bus**: Redis
|
|
- **Documentation**: OpenAPI/Swagger
|
|
|
|
## Features
|
|
- Home Assistant entity integration
|
|
- Frigate event processing
|
|
- Immich asset management
|
|
- n8n workflow triggers
|
|
- Event publishing to Redis
|
|
- Comprehensive OpenAPI documentation
|
|
- Modular architecture for maintainability
|
|
|
|
## Project Structure
|
|
```
|
|
service-adapters/
|
|
├── main.py # FastAPI application (40 lines)
|
|
├── models/
|
|
│ ├── schemas.py # Pydantic models
|
|
├── routes/
|
|
│ ├── general.py # Root, health, services
|
|
│ ├── home_assistant.py # HA integration
|
|
│ ├── frigate.py # Frigate integration
|
|
│ ├── immich.py # Immich integration
|
|
│ └── events.py # Event management
|
|
└── services/
|
|
├── config.py # Service configurations
|
|
└── redis_client.py # Redis connection
|
|
```
|
|
|
|
## API Endpoints
|
|
- `GET /` - API information
|
|
- `GET /health` - Health check
|
|
- `GET /services` - Service status
|
|
- `GET /home-assistant/entities` - HA entities
|
|
- `GET /frigate/events` - Frigate events
|
|
- `GET /immich/assets` - Immich assets
|
|
- `POST /publish-event` - Publish events
|
|
- `GET /events` - Retrieve events
|
|
|
|
## Development Status
|
|
✅ **Complete** - Core functionality implemented with modular architecture and comprehensive testing
|
|
|
|
## Testing
|
|
- **Unit Tests**: Comprehensive test coverage with pytest
|
|
- **Coverage**: HTML coverage reports in `htmlcov/`
|
|
- **Security**: Bandit and Safety security scanning
|
|
- **Quality**: Black, isort, flake8, mypy code quality checks
|
|
- **CI/CD**: Automated testing in Gitea Actions pipeline
|
|
|
|
## Clean Code Implementation
|
|
- **Modular Structure**: Separated concerns across models, routes, and services
|
|
- **Type Safety**: Pydantic models with comprehensive validation
|
|
- **Error Handling**: Consistent error responses and proper HTTP status codes
|
|
- **Documentation**: Auto-generated OpenAPI documentation
|
|
- **Testing**: Comprehensive test suite with high coverage
|
|
- **Code Quality**: Automated formatting and linting
|