40 lines
1003 B
Go
40 lines
1003 B
Go
package scriptorium
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
|
|
artifactadapter "gitea.maximumdirect.net/eric/scriptorium/internal/artifact"
|
|
"gitea.maximumdirect.net/eric/scriptorium/internal/domain"
|
|
)
|
|
|
|
var errNilArtifactReaderResponse = errors.New("artifact reader returned nil artifact without error")
|
|
|
|
type publicArtifactReaderAdapter struct {
|
|
reader ArtifactReader
|
|
}
|
|
|
|
var _ artifactadapter.Reader = publicArtifactReaderAdapter{}
|
|
|
|
func (a publicArtifactReaderAdapter) Read(ctx context.Context, ref domain.ArtifactRef) (*domain.Artifact, error) {
|
|
artifact, err := a.reader.Read(ctx, ArtifactRef{
|
|
Type: ArtifactRefType(ref.Type),
|
|
URI: ref.URI,
|
|
Body: ref.Body,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if artifact == nil {
|
|
return nil, errNilArtifactReaderResponse
|
|
}
|
|
return &domain.Artifact{
|
|
Name: artifact.Name,
|
|
ContentType: artifact.ContentType,
|
|
Body: copyBytes(artifact.Body),
|
|
URI: artifact.URI,
|
|
Size: artifact.Size,
|
|
Hash: artifact.Hash,
|
|
}, nil
|
|
}
|