diff --git a/main.go b/main.go index 36305ab..f57bcd4 100644 --- a/main.go +++ b/main.go @@ -63,7 +63,13 @@ func getUgoira(postId PostId, flags CliFlags) { die("error while fetching manifest: %s", err) } // Now decode the JSON... - manifest := decodeUgoiraManifest(manifestJsonData) + manifest, err := decodeUgoiraManifest(manifestJsonData) + if err != nil { + die("%s", err) + } + if manifest.Error { + die("Manifest returned error: %s", manifest.Message) + } if len(manifest.Body.OriginalSrc) == 0 { die("Ugoira url is empty") } @@ -150,7 +156,11 @@ func ugoira2videoCmd(args []string, flags CliFlags) { die("Could not read manifest: %s", err) } - err = ugoira2video(decodeUgoiraManifest(manifestData), ugoiraFileName, flags.outputFileName, flags.ffmpegArgs) + manifest, err := decodeUgoiraManifest(manifestData) + if err != nil { + die("%s", err) + } + err = ugoira2video(manifest, ugoiraFileName, flags.outputFileName, flags.ffmpegArgs) if err != nil { die("Conversion failed: %s", err) } diff --git a/manifest.go b/manifest.go index 450c89f..0ab6287 100644 --- a/manifest.go +++ b/manifest.go @@ -2,6 +2,7 @@ package main import ( "encoding/json" + "fmt" ) type UgoiraManifestFrame struct { @@ -22,13 +23,10 @@ type UgoiraManifest struct { Body UgoiraManifestBodyDesc `json:"body"` } -func decodeUgoiraManifest(jsonData []byte) UgoiraManifest { +func decodeUgoiraManifest(jsonData []byte) (UgoiraManifest, error) { var manifest UgoiraManifest if err := json.Unmarshal(jsonData, &manifest); err != nil { - die("Could not parse manifest JSON: %s", err) + return manifest, fmt.Errorf("Could not decode manifest JSON: %w", err) } - if manifest.Error { - die("Manifest returned error: %s", manifest.Message) - } - return manifest + return manifest, nil }