go-tg-screenshot-bot
97 строк · 2.0 Кб
1package tgbotapi
2
3import (
4"encoding/json"
5"reflect"
6"strconv"
7)
8
9// Params represents a set of parameters that gets passed to a request.
10type Params map[string]string
11
12// AddNonEmpty adds a value if it not an empty string.
13func (p Params) AddNonEmpty(key, value string) {
14if value != "" {
15p[key] = value
16}
17}
18
19// AddNonZero adds a value if it is not zero.
20func (p Params) AddNonZero(key string, value int) {
21if value != 0 {
22p[key] = strconv.Itoa(value)
23}
24}
25
26// AddNonZero64 is the same as AddNonZero except uses an int64.
27func (p Params) AddNonZero64(key string, value int64) {
28if value != 0 {
29p[key] = strconv.FormatInt(value, 10)
30}
31}
32
33// AddBool adds a value of a bool if it is true.
34func (p Params) AddBool(key string, value bool) {
35if value {
36p[key] = strconv.FormatBool(value)
37}
38}
39
40// AddNonZeroFloat adds a floating point value that is not zero.
41func (p Params) AddNonZeroFloat(key string, value float64) {
42if value != 0 {
43p[key] = strconv.FormatFloat(value, 'f', 6, 64)
44}
45}
46
47// AddInterface adds an interface if it is not nil and can be JSON marshalled.
48func (p Params) AddInterface(key string, value interface{}) error {
49if value == nil || (reflect.ValueOf(value).Kind() == reflect.Ptr && reflect.ValueOf(value).IsNil()) {
50return nil
51}
52
53b, err := json.Marshal(value)
54if err != nil {
55return err
56}
57
58p[key] = string(b)
59
60return nil
61}
62
63// AddFirstValid attempts to add the first item that is not a default value.
64//
65// For example, AddFirstValid(0, "", "test") would add "test".
66func (p Params) AddFirstValid(key string, args ...interface{}) error {
67for _, arg := range args {
68switch v := arg.(type) {
69case int:
70if v != 0 {
71p[key] = strconv.Itoa(v)
72return nil
73}
74case int64:
75if v != 0 {
76p[key] = strconv.FormatInt(v, 10)
77return nil
78}
79case string:
80if v != "" {
81p[key] = v
82return nil
83}
84case nil:
85default:
86b, err := json.Marshal(arg)
87if err != nil {
88return err
89}
90
91p[key] = string(b)
92return nil
93}
94}
95
96return nil
97}
98