32 lines
1.7 KiB
Markdown
32 lines
1.7 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Overview
|
|
|
|
This is `lthn/php-plug-cdn`, a Composer library providing CDN provider integrations for the Plug framework. It depends on `lthn/php` (the core Plug framework) which supplies `Core\Plug\Response`, `BuildsResponse`, and `UsesHttp` traits. Licensed under EUPL-1.2.
|
|
|
|
## Architecture
|
|
|
|
**Driver-based manager pattern.** `CdnManager` is the entry point — it resolves CDN provider operations by driver name (default: `bunny`, configurable via `cdn.driver`).
|
|
|
|
Each driver registers two operation classes keyed by contract interface:
|
|
- `Purgeable` — cache purging (single URL, bulk, full zone, tag-based)
|
|
- `HasStats` — statistics and bandwidth reporting
|
|
|
|
New providers are added by: (1) creating classes implementing the contracts under `src/{Provider}/`, (2) registering them in `CdnManager::$drivers` or via `CdnManager::extend()`.
|
|
|
|
**Bunny CDN implementation** (`src/Bunny/`) uses the Bunny.net REST API. Config keys: `cdn.bunny.api_key`, `cdn.bunny.pull_zone_id`. Both classes use the `UsesHttp` and `BuildsResponse` traits from `lthn/php`.
|
|
|
|
## Conventions
|
|
|
|
- PHP 8.2+ with `declare(strict_types=1)` on all files
|
|
- PSR-4 autoloading: `Core\Plug\Cdn\` → `src/`
|
|
- Contracts live in `src/Contract/`; provider implementations in `src/{ProviderName}/`
|
|
- All public methods return `Core\Plug\Response` (from the parent `lthn/php` package)
|
|
- Configuration accessed via Laravel's `config()` helper
|
|
- Errors logged via `Illuminate\Support\Facades\Log` before returning error responses
|
|
|
|
## Development
|
|
|
|
No tests, linting, or build commands exist in this package yet. It is installed as a dependency via Composer into a Laravel-based application.
|