From 54bc9013aa0463962a1cfd67fa278de3d401d85a Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 30 Apr 2026 12:45:18 +0300 Subject: ja: implement public share landing page and improve error mapping - Add web/share.html with a minimal HTML5 video player, theme variables, centered layout, play overlay, and Back to Home link. - Update handleSharePage to return HTML for browser Accept headers (text/html or empty) and JSON for application/json. Return 410 Gone for expired shares. - Update handleShareStream to map service errors to distinct HTTP codes: ErrShareExpired -> 410, ErrShareNotFound/ErrMediaNotFound -> 404. - Improve ValidateShareToken and StreamSharedMedia to return sentinel errors (ErrShareNotFound, ErrShareExpired, ErrMediaNotFound) instead of generic string errors. - Update and add tests for share page HTML/JSON negotiation and share stream 404/410 responses. --- internal/service/no_rows_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'internal/service/no_rows_test.go') diff --git a/internal/service/no_rows_test.go b/internal/service/no_rows_test.go index 3606b63..9200668 100644 --- a/internal/service/no_rows_test.go +++ b/internal/service/no_rows_test.go @@ -135,8 +135,8 @@ func TestService_NoRows_ReturnsNil(t *testing.T) { } svc := NewMediaService(store, newMockClock(), "/tmp/media") sh, err := svc.ValidateShareToken(ctx, "nope") - if err != nil { - t.Fatalf("expected no error, got %v", err) + if !errors.Is(err, ErrShareNotFound) { + t.Fatalf("expected ErrShareNotFound, got %v", err) } if sh != nil { t.Fatalf("expected nil share, got %+v", sh) @@ -153,8 +153,8 @@ func TestService_NoRows_ReturnsNil(t *testing.T) { } svc := NewMediaService(store, newMockClock(), "/tmp/media") _, err := svc.StreamSharedMedia(ctx, "nope") - if err == nil { - t.Fatal("expected error for missing share") + if !errors.Is(err, ErrShareNotFound) { + t.Fatalf("expected ErrShareNotFound, got %v", err) } }) -- cgit v1.2.3