summary refs log tree commit diff stats
path: root/bpod/json.go
diff options
context:
space:
mode:
Diffstat (limited to 'bpod/json.go')
-rw-r--r--bpod/json.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/bpod/json.go b/bpod/json.go
index a05c6fc..8829f36 100644
--- a/bpod/json.go
+++ b/bpod/json.go
@@ -26,6 +26,25 @@ 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. Look at
+// comment in UnmarshalJson func to understand why res has a single
+// entry and body has all when random flag is passed.
+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{}
@@ -36,6 +55,15 @@ func UnmarshalJson(body string) (BPOD, error) {
 		return res, fmt.Errorf("UnmarshalJson failed\n%s", err.Error())
 	}
 
+	// If random flag was not passed then list.Photos has only one
+	// entry and that will get selected because it's only one, in
+	// that case this rand.Intn wrap is stupid but when user
+	// passes the random flag then this wrap will return a single
+	// entry, which means we don't have to create another func to
+	// select random entry but this means that body and res are
+	// out of sync now, because res has only one entry but body
+	// still has all entries so we Marshal res into body with
+	// MarshalJson func.
 	res = list.Photos[rand.Intn(len(list.Photos))]
 	return res, nil
 }
> 2023-12-03 12:11:17 -0800 bugfix: version check' href='/akkartik/text.love/commit/Manual_tests.md?id=99930149044300dc8f92c8a07e33ea1669e9d37d'>9993014 ^
e1c5a42 ^


192e16b ^
e2734cd ^


6587959 ^
e2734cd ^
e1c5a42 ^
c4333b8 ^
e1c5a42 ^
192e16b ^
0114cd1 ^



9aa7577 ^
6a1d8e5 ^
9c8285b ^

5d41640 ^
9c8285b ^
da9d948 ^




e839c30 ^


53c3524 ^
5b2e629 ^

e2e3aea ^
2e3a85d ^


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61