Skip to content
Snippets Groups Projects
Commit c8114f9b authored by Travis Ralston's avatar Travis Ralston
Browse files

Populate s3url on exports

parent 7447190b
No related branches found
No related tags found
No related merge requests found
...@@ -16,6 +16,7 @@ import ( ...@@ -16,6 +16,7 @@ import (
"github.com/turt2live/matrix-media-repo/common/config" "github.com/turt2live/matrix-media-repo/common/config"
"github.com/turt2live/matrix-media-repo/storage" "github.com/turt2live/matrix-media-repo/storage"
"github.com/turt2live/matrix-media-repo/storage/datastore" "github.com/turt2live/matrix-media-repo/storage/datastore"
"github.com/turt2live/matrix-media-repo/storage/datastore/ds_s3"
"github.com/turt2live/matrix-media-repo/templating" "github.com/turt2live/matrix-media-repo/templating"
"github.com/turt2live/matrix-media-repo/types" "github.com/turt2live/matrix-media-repo/types"
"github.com/turt2live/matrix-media-repo/util" "github.com/turt2live/matrix-media-repo/util"
...@@ -183,12 +184,16 @@ func StartUserExport(userId string, s3urls bool, includeData bool, log *logrus.E ...@@ -183,12 +184,16 @@ func StartUserExport(userId string, s3urls bool, includeData bool, log *logrus.E
} }
mediaManifest := make(map[string]*manifestRecord) mediaManifest := make(map[string]*manifestRecord)
for _, m := range media { for _, m := range media {
s3url, err := ds_s3.GetS3URL(m.DatastoreId, m.Location)
if err != nil {
log.Warn(err)
}
mediaManifest[m.MxcUri()] = &manifestRecord{ mediaManifest[m.MxcUri()] = &manifestRecord{
ArchivedName: archivedName(m), ArchivedName: archivedName(m),
FileName: m.UploadName, FileName: m.UploadName,
SizeBytes: m.SizeBytes, SizeBytes: m.SizeBytes,
ContentType: m.ContentType, ContentType: m.ContentType,
S3Url: "TODO", S3Url: s3url,
Sha256: m.Sha256Hash, Sha256: m.Sha256Hash,
Origin: m.Origin, Origin: m.Origin,
MediaId: m.MediaId, MediaId: m.MediaId,
......
...@@ -2,6 +2,7 @@ package ds_s3 ...@@ -2,6 +2,7 @@ package ds_s3
import ( import (
"context" "context"
"fmt"
"io" "io"
"io/ioutil" "io/ioutil"
"os" "os"
...@@ -64,6 +65,17 @@ func GetOrCreateS3Datastore(dsId string, conf config.DatastoreConfig) (*s3Datast ...@@ -64,6 +65,17 @@ func GetOrCreateS3Datastore(dsId string, conf config.DatastoreConfig) (*s3Datast
return s3ds, nil return s3ds, nil
} }
func GetS3URL(datastoreId string, location string) (string, error) {
var store *s3Datastore
var ok bool
if store, ok = stores[datastoreId]; !ok {
return "", errors.New("s3 datastore not found")
}
// HACK: Surely there's a better way...
return fmt.Sprintf("https://%s/%s/%s", store.conf.Options["endpoint"], store.bucket, location), nil
}
func (s *s3Datastore) EnsureBucketExists() error { func (s *s3Datastore) EnsureBucketExists() error {
found, err := s.client.BucketExists(s.bucket) found, err := s.client.BucketExists(s.bucket)
if err != nil { if err != nil {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment