* utilise the john olheiser's neat xkcd package for comic fetching ref: gitea.com/jolheiser/xkcd * add tests * nix: bump module hash
This commit is contained in:
parent
53858ccda3
commit
9dab23ded7
@ -79,7 +79,7 @@
|
|||||||
|
|
||||||
modSha256 = lib.fakeSha256;
|
modSha256 = lib.fakeSha256;
|
||||||
# dont't forget to update vendorSha256 whenever go.mod or go.sum change
|
# 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 'nix develop', we don't need a copy of the source tree
|
||||||
# in the Nix store.
|
# in the Nix store.
|
||||||
|
1
go.mod
1
go.mod
@ -4,6 +4,7 @@ go 1.17
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
fyne.io/fyne/v2 v2.1.4
|
fyne.io/fyne/v2 v2.1.4
|
||||||
|
gitea.com/jolheiser/xkcd v0.0.2
|
||||||
github.com/spf13/cobra v1.4.0
|
github.com/spf13/cobra v1.4.0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
2
go.sum
2
go.sum
@ -1,5 +1,7 @@
|
|||||||
fyne.io/fyne/v2 v2.1.4 h1:bt1+28++kAzRzPB0GM2EuSV4cnl8rXNX4cjfd8G06Rc=
|
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=
|
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.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
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=
|
github.com/Kodeworks/golang-image-ico v0.0.0-20141118225523-73f0f4cfade9/go.mod h1:7uhhqiBaR4CpN0k9rMjOtjpcfGd6DG2m04zQxKnWQ0I=
|
||||||
|
37
xkcdreader/xkcd/xkcd.go
Normal file
37
xkcdreader/xkcd/xkcd.go
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
// Copyright 2022 wanderer <a_mirre at utb dot cz>
|
||||||
|
// 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
|
||||||
|
}
|
54
xkcdreader/xkcd/xkcd_test.go
Normal file
54
xkcdreader/xkcd/xkcd_test.go
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
// Copyright 2022 wanderer <a_mirre at utb dot cz>
|
||||||
|
// 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()
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user