56 lines
1.1 KiB
Go
56 lines
1.1 KiB
Go
package blob
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"mime/multipart"
|
|
|
|
"forge.cadoles.com/arcad/edge/pkg/bus"
|
|
"forge.cadoles.com/arcad/edge/pkg/storage"
|
|
)
|
|
|
|
const (
|
|
AddressUpload bus.Address = "module/blob/upload"
|
|
AddressDownload bus.Address = "module/blob/download"
|
|
)
|
|
|
|
type UploadRequest struct {
|
|
Context context.Context
|
|
FileHeader *multipart.FileHeader
|
|
Metadata map[string]interface{}
|
|
}
|
|
|
|
func NewUploadRequestEnvelope(ctx context.Context, fileHeader *multipart.FileHeader, metadata map[string]interface{}) bus.Envelope {
|
|
return bus.NewEnvelope(AddressUpload, &UploadRequest{
|
|
Context: ctx,
|
|
FileHeader: fileHeader,
|
|
Metadata: metadata,
|
|
})
|
|
}
|
|
|
|
type UploadResponse struct {
|
|
Allow bool
|
|
Bucket string
|
|
BlobID storage.BlobID
|
|
}
|
|
|
|
type DownloadRequest struct {
|
|
Context context.Context
|
|
Bucket string
|
|
BlobID storage.BlobID
|
|
}
|
|
|
|
func NewDownloadRequestEnvelope(ctx context.Context, bucket string, blobID storage.BlobID) bus.Envelope {
|
|
return bus.NewEnvelope(AddressDownload, &DownloadRequest{
|
|
Context: ctx,
|
|
Bucket: bucket,
|
|
BlobID: blobID,
|
|
})
|
|
}
|
|
|
|
type DownloadResponse struct {
|
|
Allow bool
|
|
Blob io.ReadSeekCloser
|
|
BlobInfo storage.BlobInfo
|
|
}
|