monstersirenfetch/generic.go
Yonah 7dd470f9ae
generic: struct for response common fields
This is common across all responses.

Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-17 06:57:16 +09:00

41 lines
765 B
Go

package monstersirenfetch
import (
"encoding/json"
"strconv"
"strings"
)
// Response is a generic API response.
type Response[T any] struct {
Code int `json:"code"`
Message string `json:"msg"`
Data T `json:"data"`
}
// StringInt is a JSON string representing an integer.
type StringInt int
func (i *StringInt) MarshalJSON() ([]byte, error) {
s := strconv.Itoa(int(*i))
if len(s) <= 4 {
s = strings.Repeat("0", 4-len(s)) + s
} else if len(s) < 6 {
s = strings.Repeat("0", 6-len(s)) + s
}
return json.Marshal(s)
}
func (i *StringInt) UnmarshalJSON(data []byte) (err error) {
var v string
err = json.Unmarshal(data, &v)
if err == nil {
var n int
n, err = strconv.Atoi(v)
if err == nil {
*i = StringInt(n)
}
}
return
}