dbp/relay-blob-connector-campusonline-dms-bundle
dbp/relay-blob-bundle). It fits well in architectures requiring external blob storage (e.g., DMS, media libraries) while abstracting vendor-specific APIs.spatie/laravel-symfony-components).dbp/relay-blob-bundle (Symfony) as a dependency, which may need adaptation for Laravel.Bundle system is incompatible; rewriting as a Laravel package (e.g., Service Provider + Filesystem Adapter) is likely necessary.Storage facade expects PSR-16/PSR-6 interfaces; the bundle’s API must align with these.Storage tests).| Risk Area | Severity | Mitigation Strategy |
|---|---|---|
| Symfony → Laravel Gap | High | Abstract core logic into a Laravel-compatible service. |
| API Stability | Medium | Mock CAMPUSonline API in tests; monitor deprecations. |
| Performance Overhead | Low | Benchmark against native Laravel Flysystem adapters. |
| License (AGPL-3.0) | Medium | Ensure compliance if distributing modified code. |
| Undocumented Features | High | Assume minimal functionality; validate requirements. |
Service Provider.config/filesystems.php.throw_if) must integrate with Relay’s error format.league/flysystem-*) that could replace this?
Illuminate\Support\ServiceProvider to bind the connector to Laravel’s Storage facade.League\Flysystem\FilesystemInterface for seamless integration.spatie/laravel-symfony-components and may introduce bloat.dbp/relay-blob-bundle → Extract core logic (HTTP client, API wrapper) into a standalone Laravel package.guzzlehttp/guzzle or symfony/http-client → Replace with Laravel’s Http client for consistency.config/filesystems.php:
'disks' => [
'campusonline' => [
'driver' => 'custom',
'adapter' => \App\Services\CampusonlineBlobAdapter::class,
'config' => [
'api_key' => env('CAMPUSONLINE_API_KEY'),
'endpoint' => env('CAMPUSONLINE_API_URL'),
],
],
],
put, get, delete) against a mock API.Flysystem adapter or Laravel Filesystem extension.config/filesystems.php and test with Laravel’s Storage facade.Storage tests, feature tests).dbp/relay-blob-bundle for breaking changes (though minimal interaction).config/filesystems.php).monolog integration for debuggable errors).catch (CampusonlineApiException $e) {
throw new \League\Flysystem\FileNotFoundException($e->getMessage());
}
Http client with connection pooling.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| CAMPUSonline API downtime | File operations fail | Fallback to local disk or S3. |
| Authentication failures | All operations blocked | Implement circuit breakers. |
| Rate limiting | Throttled requests | Exponential backoff + caching. |
| Large file uploads | Memory/timeouts | Stream files via Flysystem. |
| Laravel cache corruption | Config misread | Validate config on boot. |
Storage facade or Flysystem.Storage::disk('campusonline')->put(...)..env.How can I help you explore Laravel packages today?