summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/service/share.go10
-rw-r--r--internal/service/share_test.go53
2 files changed, 61 insertions, 2 deletions
diff --git a/internal/service/share.go b/internal/service/share.go
index 2b917f7..9032f8c 100644
--- a/internal/service/share.go
+++ b/internal/service/share.go
@@ -147,6 +147,12 @@ func (s *shareService) GetSharedMedia(ctx context.Context, token string) (*GetSh
return nil, ErrMediaNotFound
}
+ hasThumb := media.ThumbnailPath != ""
+ thumbURL := ""
+ if hasThumb {
+ thumbURL = fmt.Sprintf("/s/%s/thumbnail", token)
+ }
+
return &GetSharedMediaResult{
Media: &SharedMediaView{
ID: media.ID,
@@ -158,10 +164,10 @@ func (s *shareService) GetSharedMedia(ctx context.Context, token string) (*GetSh
Bitrate: media.Bitrate,
FileSizeBytes: media.FileSizeBytes,
},
- HasThumb: media.ThumbnailPath != "",
+ HasThumb: hasThumb,
StreamURL: fmt.Sprintf("/s/%s/stream", token),
DownloadURL: fmt.Sprintf("/s/%s/download", token),
- ThumbURL: fmt.Sprintf("/s/%s/thumbnail", token),
+ ThumbURL: thumbURL,
}, nil
}
diff --git a/internal/service/share_test.go b/internal/service/share_test.go
index a37b62f..ab76414 100644
--- a/internal/service/share_test.go
+++ b/internal/service/share_test.go
@@ -74,6 +74,59 @@ func TestShareService_GetSharedThumbnail(t *testing.T) {
}
}
+func TestShareService_GetSharedMedia_ThumbnailURL(t *testing.T) {
+ ctx := context.Background()
+ now := newMockClock().T
+
+ tests := []struct {
+ name string
+ thumbnail string
+ wantHasThumb bool
+ wantThumbURL string
+ }{
+ {
+ name: "with thumbnail",
+ thumbnail: "/tmp/thumb.jpg",
+ wantHasThumb: true,
+ wantThumbURL: "/s/abc/thumbnail",
+ },
+ {
+ name: "without thumbnail",
+ thumbnail: "",
+ wantHasThumb: false,
+ wantThumbURL: "",
+ },
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ store := &repository.MockStore{
+ ShareRepo: repository.MockShareRepo{
+ GetShareByTokenFunc: func(ctx context.Context, token string) (*model.Share, error) {
+ return &model.Share{Token: "abc", MediaID: 1, ExpiresAt: now.Add(time.Hour)}, nil
+ },
+ },
+ MediaRepo: repository.MockMediaRepo{
+ GetMediaByIDFunc: func(ctx context.Context, id int64) (*model.Media, error) {
+ return &model.Media{ID: 1, ThumbnailPath: tt.thumbnail}, nil
+ },
+ },
+ }
+ svc := NewShareService(store, newMockClock(), &accessHelper{store: store})
+ got, err := svc.GetSharedMedia(ctx, "abc")
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ if got.HasThumb != tt.wantHasThumb {
+ t.Fatalf("HasThumb = %v, want %v", got.HasThumb, tt.wantHasThumb)
+ }
+ if got.ThumbURL != tt.wantThumbURL {
+ t.Fatalf("ThumbURL = %q, want %q", got.ThumbURL, tt.wantThumbURL)
+ }
+ })
+ }
+}
+
func TestShareService_ListMyShares(t *testing.T) {
ctx := context.Background()
now := newMockClock().T