infra: add logging wrapping
Resolves issues with gcp cloud logging quirks such as field names
This commit is contained in:
@@ -3,12 +3,14 @@ package particle
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/flowy-live/llink/internal/utils/flog"
|
||||
|
||||
"cloud.google.com/go/firestore"
|
||||
|
||||
"github.com/flowy-live/llink/internal/depot"
|
||||
"github.com/flowy-live/llink/internal/media"
|
||||
)
|
||||
@@ -44,17 +46,17 @@ type TranscodeResult struct {
|
||||
func Transcode(ctx context.Context, depotSvc depot.Service, doc *firestore.DocumentSnapshot) TranscodeResult {
|
||||
var mp FirestoreMediaParticle
|
||||
if err := doc.DataTo(&mp); err != nil {
|
||||
slog.Error("transcode: unable to marshal particle data", "error", err)
|
||||
flog.Error("transcode: unable to marshal particle data", "error", err)
|
||||
return TranscodeResult{Err: fmt.Errorf("unmarshal particle: %w", err)}
|
||||
}
|
||||
|
||||
particleType, err := ParseParticleType(mp.Type)
|
||||
if err != nil {
|
||||
slog.Error("transcode: invalid particle type", "error", err)
|
||||
flog.Error("transcode: invalid particle type", "error", err)
|
||||
return TranscodeResult{Err: fmt.Errorf("parse type: %w", err)}
|
||||
}
|
||||
if particleType != TypeMedia {
|
||||
slog.Info("transcode: particle is not of type media")
|
||||
flog.Info("transcode: particle is not of type media")
|
||||
return TranscodeResult{Skipped: true, SkipReason: SkipReasonNotMedia}
|
||||
}
|
||||
|
||||
@@ -63,19 +65,19 @@ func Transcode(ctx context.Context, depotSvc depot.Service, doc *firestore.Docum
|
||||
}
|
||||
|
||||
if media.IsIOSPlayableMime(mp.Properties.MimeType) {
|
||||
slog.Info("transcode: skipping because already playable on ios")
|
||||
flog.Info("transcode: skipping because already playable on ios")
|
||||
return TranscodeResult{Skipped: true, SkipReason: SkipReasonIOSPlayable}
|
||||
}
|
||||
|
||||
sourceURL, err := depotSvc.GetDownloadURL(ctx, mp.Properties.ObjectId)
|
||||
if err != nil {
|
||||
slog.Error("transcode: failed to get download URL", "error", err, "object_id", mp.Properties.ObjectId)
|
||||
flog.Error("transcode: failed to get download URL", "error", err, "object_id", mp.Properties.ObjectId)
|
||||
return TranscodeResult{Err: fmt.Errorf("download URL: %w", err)}
|
||||
}
|
||||
|
||||
networkID, err := NetworkIDFromParticlePath(doc.Ref.Path)
|
||||
if err != nil {
|
||||
slog.Error("transcode: failed to derive network id", "error", err, "path", doc.Ref.Path)
|
||||
flog.Error("transcode: failed to derive network id", "error", err, "path", doc.Ref.Path)
|
||||
return TranscodeResult{Err: fmt.Errorf("network id: %w", err)}
|
||||
}
|
||||
|
||||
@@ -86,14 +88,14 @@ func Transcode(ctx context.Context, depotSvc depot.Service, doc *firestore.Docum
|
||||
MimeType: mp.Properties.MimeType,
|
||||
})
|
||||
if err != nil {
|
||||
slog.Error("transcode: ffmpeg failed", "error", err)
|
||||
flog.Error("transcode: ffmpeg failed", "error", err)
|
||||
return TranscodeResult{Err: fmt.Errorf("ffmpeg: %w", err)}
|
||||
}
|
||||
defer os.Remove(transcodeOutput.TempLocalFilePath)
|
||||
|
||||
f, err := os.Open(transcodeOutput.TempLocalFilePath)
|
||||
if err != nil {
|
||||
slog.Error("transcode: failed to open transcoded file", "error", err, "path", transcodeOutput.TempLocalFilePath)
|
||||
flog.Error("transcode: failed to open transcoded file", "error", err, "path", transcodeOutput.TempLocalFilePath)
|
||||
return TranscodeResult{Err: fmt.Errorf("open temp file: %w", err)}
|
||||
}
|
||||
defer f.Close()
|
||||
@@ -104,7 +106,7 @@ func Transcode(ctx context.Context, depotSvc depot.Service, doc *firestore.Docum
|
||||
ContentType: transcodeOutput.OutputMimeType,
|
||||
}, f)
|
||||
if err != nil {
|
||||
slog.Error("transcode: failed to upload transcoded object", "error", err, "particleID", doc.Ref.ID)
|
||||
flog.Error("transcode: failed to upload transcoded object", "error", err, "particleID", doc.Ref.ID)
|
||||
return TranscodeResult{Err: fmt.Errorf("upload: %w", err)}
|
||||
}
|
||||
|
||||
@@ -114,11 +116,11 @@ func Transcode(ctx context.Context, depotSvc depot.Service, doc *firestore.Docum
|
||||
"transcoded_mime_type": transcodeOutput.OutputMimeType,
|
||||
},
|
||||
}, firestore.MergeAll); err != nil {
|
||||
slog.Error("transcode: failed to update particle in firestore", "error", err, "particleID", doc.Ref.ID)
|
||||
flog.Error("transcode: failed to update particle in firestore", "error", err, "particleID", doc.Ref.ID)
|
||||
return TranscodeResult{Err: fmt.Errorf("firestore update: %w", err)}
|
||||
}
|
||||
|
||||
slog.Info("transcoded media particle", "particleID", doc.Ref.ID, "transcoded_object_id", newObj.ID, "mime", transcodeOutput.OutputMimeType)
|
||||
flog.Info("transcoded media particle", "particleID", doc.Ref.ID, "transcoded_object_id", newObj.ID, "mime", transcodeOutput.OutputMimeType)
|
||||
return TranscodeResult{
|
||||
TranscodedObjectID: newObj.ID,
|
||||
OutputMimeType: transcodeOutput.OutputMimeType,
|
||||
|
||||
Reference in New Issue
Block a user