From 9dab23ded73147007fee9ec0cf8a0bdcd949db20 Mon Sep 17 00:00:00 2001 From: surtur Date: Sun, 29 May 2022 21:05:28 +0200 Subject: [PATCH] go: add xkcd package * utilise the john olheiser's neat xkcd package for comic fetching ref: gitea.com/jolheiser/xkcd * add tests * nix: bump module hash --- flake.nix | 2 +- go.mod | 1 + go.sum | 2 ++ xkcdreader/xkcd/xkcd.go | 37 ++++++++++++++++++++++++ xkcdreader/xkcd/xkcd_test.go | 54 ++++++++++++++++++++++++++++++++++++ 5 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 xkcdreader/xkcd/xkcd.go create mode 100644 xkcdreader/xkcd/xkcd_test.go diff --git a/flake.nix b/flake.nix index 9b4dde4..5121c1d 100644 --- a/flake.nix +++ b/flake.nix @@ -79,7 +79,7 @@ modSha256 = lib.fakeSha256; # dont't forget to update vendorSha256 whenever go.mod or go.sum change - vendorSha256 = "sha256-oHOMkvQhMFsAGgMcAHvxZp1vcDSVLmUYhft+cvnMd6M="; + vendorSha256 = "sha256-LvdcTbj8cFlaIBsq1VLfLF2Tu9HiZzGO8igD766nMLE="; # In 'nix develop', we don't need a copy of the source tree # in the Nix store. diff --git a/go.mod b/go.mod index 93243a0..2fba1cd 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.17 require ( fyne.io/fyne/v2 v2.1.4 + gitea.com/jolheiser/xkcd v0.0.2 github.com/spf13/cobra v1.4.0 ) diff --git a/go.sum b/go.sum index f9e8b83..f7ca469 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ fyne.io/fyne/v2 v2.1.4 h1:bt1+28++kAzRzPB0GM2EuSV4cnl8rXNX4cjfd8G06Rc= fyne.io/fyne/v2 v2.1.4/go.mod h1:p+E/Dh+wPW8JwR2DVcsZ9iXgR9ZKde80+Y+40Is54AQ= +gitea.com/jolheiser/xkcd v0.0.2 h1:HJP83YwSKxSYcoNfpb1ZpAfBvkUAnN+YgeukraXtfrc= +gitea.com/jolheiser/xkcd v0.0.2/go.mod h1:aDa2vX54wLaX8Ra5CGN2GWBX13UWAGJKGGddzHl/hks= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/Kodeworks/golang-image-ico v0.0.0-20141118225523-73f0f4cfade9/go.mod h1:7uhhqiBaR4CpN0k9rMjOtjpcfGd6DG2m04zQxKnWQ0I= diff --git a/xkcdreader/xkcd/xkcd.go b/xkcdreader/xkcd/xkcd.go new file mode 100644 index 0000000..4d0d437 --- /dev/null +++ b/xkcdreader/xkcd/xkcd.go @@ -0,0 +1,37 @@ +// Copyright 2022 wanderer +// SPDX-License-Identifier: GPL-3.0-or-later + +package xkcd + +import ( + "context" + "log" + + "gitea.com/jolheiser/xkcd" +) + +var xkcdClient = xkcd.New() + +// GetLatest grabs the latest available xkcd comic. +func GetLatest() *xkcd.Comic { + comic, err := xkcdClient.Current(context.Background()) + if err != nil { + // TODO(me): handle this + log.Println(err) + } + + return comic +} + +// GetComic grabs xkcd comic no. "num", as provided by the caller. +func GetComic(num int) *xkcd.Comic { + comic, err := xkcdClient.Comic(context.Background(), num) + if err != nil { + // TODO(me): handle this + log.Println(err) + + comic = nil + } + + return comic +} diff --git a/xkcdreader/xkcd/xkcd_test.go b/xkcdreader/xkcd/xkcd_test.go new file mode 100644 index 0000000..cb1487e --- /dev/null +++ b/xkcdreader/xkcd/xkcd_test.go @@ -0,0 +1,54 @@ +// Copyright 2022 wanderer +// SPDX-License-Identifier: GPL-3.0-or-later + +package xkcd + +import ( + "math" + "testing" + + "gitea.com/jolheiser/xkcd" +) + +func TestGetComic(t *testing.T) { + comicNum := 2625 + comic := GetComic(comicNum) + + comic2625 := xkcd.Comic{ + Month: "5", + Num: 2625, + Link: "", + Year: "2022", + News: "", + SafeTitle: "Field Topology", + Transcript: "", + Alt: "The combination croquet set/10-lane pool can also be used for some varieties of foosball and Skee-Ball.", + Img: "https://imgs.xkcd.com/comics/field_topology.png", + Title: "Field Topology", + Day: "27", + } + + if *comic != comic2625 { + t.Log("Comic does not match test data") + t.FailNow() + } +} + +func TestGetComic_Bad(t *testing.T) { + comicNum := math.MaxInt32 + comic := GetComic(comicNum) + + if comic != nil { + t.Logf("No comic should have been returned for comicNum: %d", comicNum) + t.FailNow() + } +} + +func TestGetLatest_Bad(t *testing.T) { + comic := GetLatest() + + if comic == nil { + t.Log("Could not get latest comic") + t.FailNow() + } +}