-
Notifications
You must be signed in to change notification settings - Fork 26
/
safe_deposit_entries.go
48 lines (44 loc) · 1.23 KB
/
safe_deposit_entries.go
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
package bot
import (
"context"
"encoding/json"
)
type DepositEntryView struct {
Type string `json:"type"`
EntryID string `json:"entry_id"`
Threshold int64 `json:"threshold"`
Members []string `json:"members"`
Destination string `json:"destination"`
Tag string `json:"tag"`
SafeSignature string `json:"signature"`
ChainID string `json:"chain_id"`
IsPrimary bool `json:"is_primary"`
}
func CreateDepositEntry(ctx context.Context, chainID string, members []string, threshold int64, user *SafeUser) ([]*DepositEntryView, error) {
data, _ := json.Marshal(map[string]any{
"chain_id": chainID,
"members": members,
"threshold": threshold,
})
endpoint := "/safe/deposit/entries"
token, err := SignAuthenticationToken("POST", endpoint, string(data), user)
if err != nil {
return nil, err
}
body, err := Request(ctx, "POST", endpoint, data, token)
if err != nil {
return nil, ServerError(ctx, err)
}
var resp struct {
Data []*DepositEntryView `json:"data"`
Error Error `json:"error"`
}
err = json.Unmarshal(body, &resp)
if err != nil {
return nil, BadDataError(ctx)
}
if resp.Error.Code > 0 {
return nil, resp.Error
}
return resp.Data, nil
}