This repository is a storage provider plugin for Synapse, the Matrix homeserver, that stores media in S3-compatible object storage. It is a Python package installed as a module and loaded by Synapse at runtime. The core is a single module, s3_storage_provider.py, which implements Synapse's storage provider API and translates local media operations into S3 GET/PUT/HEAD/DELETE calls via boto3. It supports SSE-C encryption, custom S3 endpoints, and a local cache. A companion CLI script, s3_media_upload, migrates existing local media to S3. Architecturally, the system is a library/plugin rather than a standalone service. Synapse invokes the provider's methods to store and retrieve media; the provider uses background threads (_S3DownloadThread, _S3UploadThread) to perform asynchronous operations with backpressure. The code uses threading locks and events to coordinate concurrent access, and includes tests, CI workflows, and release automation. The primary entry point is the S3StorageProvider class instantiated by Synapse; the module can also be run as a script for maintenance, and scripts/s3_media_upload provides a CLI. External dependencies include boto3 for S3 access, Synapse as the host application, and Twisted for tests. The repository is actively maintained with recent commits, dependabot updates, and GitHub Actions for CI and releases.
WSO2 API Manager is an enterprise-grade API management platform. In production, it provides API publishing, a developer portal, a gateway for request mediation/security enforcement (authentication, rate limiting, threat protection), a key manager (OAuth2, JWT, API keys), and a traffic manager for analytics and throttling. The architecture is modular, with deployable profiles (all-in-one, control-plane, gateway, traffic-manager) built on the WSO2 Carbon kernel with Apache Synapse mediation. The codebase is primarily Java/Maven with Python-based recommendation engine components, extensive integration tests (both legacy TestNG and a modern Cucumber/Testcontainers parallel framework), and sample scenarios. Key entry points include REST APIs (Publisher, Developer Portal, Admin, Gateway), startup scripts (api-manager.sh), and deployment configuration (deployment.toml). External dependencies include WSO2 Identity Server for key management, databases (H2/PostgreSQL), MongoDB for recommendations, and various protocols (REST, GraphQL, WebSocket, SSE, WebSub, SOAP, MCP).