bpod: Re-enable cache & fix issues with v0.6.2
This commit is contained in:
parent
3c77b9c4b7
commit
cf93554a77
17
bpod/json.go
17
bpod/json.go
|
@ -26,6 +26,23 @@ type List struct {
|
|||
Photos []BPOD `json:"images"`
|
||||
}
|
||||
|
||||
// MarshalJson takes res as input and returns body. This remarshaling
|
||||
// is required because of a bug. To learn about why this is required,
|
||||
// remove this function & then run `cetus set bpod -random`. Put a
|
||||
// `fmt.Println(res, body)` somewhere and look at how they differ. res
|
||||
// will contain a single entry but body will have all 7 entries which
|
||||
// is bad because body is cached to disk to view later.
|
||||
func MarshalJson(res BPOD) (string, error) {
|
||||
out, err := json.Marshal(res)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("%s\n%s",
|
||||
"MarshalJson failed",
|
||||
err.Error())
|
||||
}
|
||||
body := string(out)
|
||||
return body, err
|
||||
}
|
||||
|
||||
// UnmarshalJson will take body as input & unmarshal it to res,
|
||||
func UnmarshalJson(body string) (BPOD, error) {
|
||||
list := List{}
|
||||
|
|
|
@ -2,6 +2,7 @@ package main
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"time"
|
||||
|
@ -55,6 +56,25 @@ func execBPOD() {
|
|||
}
|
||||
res.StartDate = dt.Format("2006-01-02")
|
||||
|
||||
// Save response in cache after marshalling it again, we do
|
||||
// this instead of saving the response so as to not break the
|
||||
// format in which cache is saved. If random flag was passed
|
||||
// then the response will contain all 7 values so we have to
|
||||
// marshal it but why not save non-random directly? Because
|
||||
// that means the format in which both are saved will be
|
||||
// different. One will be the raw response whereas other will
|
||||
// be marshalled response. We're currently not using this body
|
||||
// cache but this is just to save information.
|
||||
file := fmt.Sprintf("%s/%s.json", cacheDir, res.StartDate)
|
||||
body, err = bpod.MarshalJson(res)
|
||||
if err != nil {
|
||||
// We should warn the user if this returns an error
|
||||
// but the program shouldn't exit.
|
||||
log.Println("bpod.go: failed to marshal res to body, not saving cache")
|
||||
} else {
|
||||
err = ioutil.WriteFile(file, []byte(body), 0644)
|
||||
}
|
||||
|
||||
// Send a desktop notification if notify flag was passed.
|
||||
if notify {
|
||||
n := notification.Notif{}
|
||||
|
@ -87,7 +107,7 @@ func execBPOD() {
|
|||
// First it downloads the image to the cache directory and
|
||||
// then tries to set it with feh. If the download fails then
|
||||
// it exits with a non-zero exit code.
|
||||
imgFile := fmt.Sprintf("%s/%s:%s", cacheDir, res.StartDate, res.Title)
|
||||
imgFile := fmt.Sprintf("%s/%s", cacheDir, res.Title)
|
||||
|
||||
// Check if the file is available locally, if it is then don't
|
||||
// download it again and set it from disk
|
||||
|
|
Loading…
Reference in New Issue