6e6481e09a
Parallel package-type PRs conflict because every type edits the same shared lines (README tables, provider.go, server.go imports, the package type list, UI maps, the e2e caching table). A new type now only adds files.
- move per-type README sections into docs/<type>/{remote,local,virtual}.md
- split provider.go capability and metadata types into cap_*.go and metadata_*.go
- import providers via internal/provider/all, one file per type
- declare each package type in package_type_<type>.go, registered via init()
- split the e2e caching cases and UI colours/snippets into per-type files
Reviewed-on: #150
Co-authored-by: unkin-agent <unkin-agent@unkin.net>
Co-committed-by: unkin-agent <unkin-agent@unkin.net>
26 lines
938 B
Go
26 lines
938 B
Go
package provider
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"git.unkin.net/unkin/artifactapi/pkg/models"
|
|
)
|
|
|
|
// RemoteServer lets a remote provider fully answer a request itself instead of
|
|
// going through the byte-proxy engine. It is the remote-side analog of
|
|
// LocalIndexer: a metadata-only remote (e.g. github_rpm) uses it to synthesize
|
|
// repodata from derived per-asset metadata and to redirect package downloads to
|
|
// a backend remote, without ever precaching the packages. Returning false lets
|
|
// the normal proxy path take over.
|
|
type RemoteServer interface {
|
|
ServeRemote(w http.ResponseWriter, r *http.Request, remote models.Remote, path, proxyBaseURL string, store RemoteMetadataStore) bool
|
|
}
|
|
|
|
// RemoteMetadataStore is the persistence surface a RemoteServer needs to cache
|
|
// and read the metadata it derives per upstream asset. *database.DB satisfies it.
|
|
type RemoteMetadataStore interface {
|
|
RPMMetadataReader
|
|
MetadataStore
|
|
MetadataDeleter
|
|
}
|