Skip to content

Worked extension examples

These developer-facing recipes are kept beside the package contract. Replace the example values with the site-specific records and data objects used by the calling workflow.

<?php
declare(strict_types=1);
final class ExampleImageDoctorImplementation implements \Capell\MediaAI\Contracts\ImageDoctor
{
public function doctor(\Capell\Core\Models\Media $media, \Capell\MediaAI\Data\ImageDoctorRequest $request): \Capell\MediaAI\Data\ImageDoctorResult
{
throw new LogicException('Implement this package contract for the calling site.');
}
}
app()->bind(\Capell\MediaAI\Contracts\ImageDoctor::class, ExampleImageDoctorImplementation::class);
<?php
declare(strict_types=1);
final class ExampleWebsiteMediaAcquisitionProviderImplementation implements \Capell\MediaAI\Contracts\WebsiteMediaAcquisitionProvider
{
public function available(): bool
{
throw new LogicException('Implement this package contract for the calling site.');
}
public function acquire(\Capell\MediaAI\Data\WebsiteMediaRequestData $request, \Capell\AIOrchestrator\Data\Ai\ProviderCallAuthorizationData $authorization, \DateTimeImmutable $now): \Capell\MediaAI\Data\WebsiteMediaProviderResponseData
{
throw new LogicException('Implement this package contract for the calling site.');
}
}
app()->bind(\Capell\MediaAI\Contracts\WebsiteMediaAcquisitionProvider::class, ExampleWebsiteMediaAcquisitionProviderImplementation::class);
<?php
declare(strict_types=1);
final class ExampleWebsiteMediaAssetRepositoryImplementation implements \Capell\MediaAI\Contracts\WebsiteMediaAssetRepository
{
public function available(?\DateTimeImmutable $now = null): bool
{
throw new LogicException('Implement this package contract for the calling site.');
}
public function persist(\Capell\MediaAI\Data\WebsiteMediaRequestData $request, \Capell\AIOrchestrator\Data\Ai\ProviderCallAuthorizationData $authorization, \Capell\AIOrchestrator\Data\Ai\ProviderExecutionResultData $execution, \Capell\MediaAI\Data\WebsiteMediaAssetCandidateData $asset, \DateTimeImmutable $now): \Capell\MediaAI\Data\WebsiteMediaAssetReceiptData
{
throw new LogicException('Implement this package contract for the calling site.');
}
public function verify(\Capell\MediaAI\Data\WebsiteMediaAssetReceiptData $receipt, \DateTimeImmutable $now): bool
{
throw new LogicException('Implement this package contract for the calling site.');
}
public function load(string $receiptReference, \Capell\MediaAI\Data\WebsiteMediaRequestData $request, \Capell\AIOrchestrator\Data\Ai\ProviderCallAuthorizationData $authorization, \Capell\MediaAI\Contracts\WebsiteMediaProviderAttestationVerifier $attestationVerifier, \DateTimeImmutable $now): ?\Capell\MediaAI\Data\WebsiteMediaAssetReceiptData
{
throw new LogicException('Implement this package contract for the calling site.');
}
}
app()->bind(\Capell\MediaAI\Contracts\WebsiteMediaAssetRepository::class, ExampleWebsiteMediaAssetRepositoryImplementation::class);
<?php
declare(strict_types=1);
final class ExampleWebsiteMediaProviderAttestationVerifierImplementation implements \Capell\MediaAI\Contracts\WebsiteMediaProviderAttestationVerifier
{
public function verify(\Capell\MediaAI\Data\WebsiteMediaRequestData $request, \Capell\AIOrchestrator\Data\Ai\ProviderCallAuthorizationData $authorization, \Capell\MediaAI\Data\WebsiteMediaAssetCandidateData|\Capell\MediaAI\Data\WebsiteMediaAssetEvidenceData $asset, \DateTimeImmutable $now): bool
{
throw new LogicException('Implement this package contract for the calling site.');
}
}
app()->bind(\Capell\MediaAI\Contracts\WebsiteMediaProviderAttestationVerifier::class, ExampleWebsiteMediaProviderAttestationVerifierImplementation::class);