module Ecluse.Core.Registry.Adapter.Capability (
AdapterMetadata (..),
ManifestFetch,
AdapterArtifact (..),
AdapterPublish (..),
ProjectName,
AdapterMaintenance (..),
StoreListing (..),
VersionDelete (..),
) where
import Data.JsonStream.Parser qualified as J
import Network.HTTP.Client (Request)
import Ecluse.Core.Credential (ClientCredential)
import Ecluse.Core.Package (InvalidEntry, PackageName)
import Ecluse.Core.Package.Merge (MergePlan, SourceId)
import Ecluse.Core.Registry (
FetchFault,
PublishRelayResponse,
RegistryResponse,
UrlFormationError,
)
import Ecluse.Core.Registry.CachedDocument (CachedDoc)
import Ecluse.Core.Registry.Maintenance (StoreRefusal)
import Ecluse.Core.Registry.Maintenance.NameSpace (NameAlphabet)
import Ecluse.Core.Registry.Metadata (Manifest, MetadataError)
import Ecluse.Core.Registry.Origin (OriginClient, OriginFor)
import Ecluse.Core.Registry.Publish (PublishCodec)
import Ecluse.Core.Registry.ServedDocument (RenderRefused)
import Ecluse.Core.Server.Admission.Types (ChargeFactors)
import Ecluse.Core.Server.Metadata (MetadataReads)
import Ecluse.Core.Snapshot (Snapshot)
import Ecluse.Core.Telemetry.Record (MetricsPort)
import Ecluse.Core.Telemetry.Span (TracingPort)
import Ecluse.Core.Version (Version)
type ProjectName = Text -> Maybe PackageName
data AdapterMetadata = AdapterMetadata
{ AdapterMetadata
-> forall posture.
TracingPort
-> MetricsPort
-> (PackageName -> MetadataError -> IO ())
-> (PackageName -> [InvalidEntry] -> IO ())
-> (PackageName -> IO ())
-> OriginFor posture
-> MetadataReads posture
metadataNewReads ::
forall posture.
TracingPort ->
MetricsPort ->
(PackageName -> MetadataError -> IO ()) ->
(PackageName -> [InvalidEntry] -> IO ()) ->
(PackageName -> IO ()) ->
OriginFor posture ->
MetadataReads posture
, AdapterMetadata
-> Text
-> Map SourceId (Snapshot CachedDoc)
-> MergePlan
-> Maybe CachedDoc
-> CachedDoc
metadataAssemble :: Text -> Map SourceId (Snapshot CachedDoc) -> MergePlan -> Maybe CachedDoc -> CachedDoc
, AdapterMetadata -> CachedDoc -> Either RenderRefused LByteString
metadataSerialise :: CachedDoc -> Either RenderRefused LByteString
, AdapterMetadata -> ManifestFetch
metadataFetchManifest :: ManifestFetch
, AdapterMetadata -> ChargeFactors
metadataChargeFactors :: ChargeFactors
}
type ManifestFetch = TracingPort -> OriginClient -> PackageName -> IO (Either MetadataError Manifest)
data AdapterArtifact = AdapterArtifact
{ AdapterArtifact
-> OriginClient
-> PackageName
-> Text
-> Either UrlFormationError Request
artifactByFile :: OriginClient -> PackageName -> Text -> Either UrlFormationError Request
, AdapterArtifact
-> Maybe ClientCredential
-> Text
-> Either UrlFormationError Request
artifactByUrl :: Maybe ClientCredential -> Text -> Either UrlFormationError Request
, AdapterArtifact -> [Text]
artifactHosts :: [Text]
}
data AdapterPublish = AdapterPublish
{ AdapterPublish
-> OriginClient
-> PackageName
-> ByteString
-> IO (Either FetchFault PublishRelayResponse)
publishRelay :: OriginClient -> PackageName -> ByteString -> IO (Either FetchFault PublishRelayResponse)
, AdapterPublish -> LByteString -> [Text]
publishDeclaredNames :: LByteString -> [Text]
, AdapterPublish -> PublishCodec
publishCodec :: PublishCodec
}
data AdapterMaintenance = AdapterMaintenance
{ AdapterMaintenance -> Maybe StoreListing
maintenanceListing :: Maybe StoreListing
, AdapterMaintenance -> Maybe VersionDelete
maintenanceVersionDelete :: Maybe VersionDelete
, AdapterMaintenance -> NameAlphabet
maintenanceAlphabet :: NameAlphabet
}
data StoreListing = StoreListing
{ StoreListing -> OriginClient -> Either UrlFormationError Request
listingRequest :: OriginClient -> Either UrlFormationError Request
, StoreListing -> Parser [PackageName]
listingParser :: J.Parser [PackageName]
}
data VersionDelete = VersionDelete
{ VersionDelete
-> OriginClient -> PackageName -> Either UrlFormationError Request
deleteDocumentRequest :: OriginClient -> PackageName -> Either UrlFormationError Request
, VersionDelete
-> OriginClient
-> PackageName
-> Version
-> RegistryResponse
-> Either StoreRefusal (NonEmpty Request)
deleteRequests ::
OriginClient ->
PackageName ->
Version ->
RegistryResponse ->
Either StoreRefusal (NonEmpty Request)
}