-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathoffer.go
134 lines (112 loc) · 4.57 KB
/
offer.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package atomicasset
import (
"github.com/eosswedenorg-go/unixtime"
)
// Types
type Offer struct {
ID string `json:"offer_id"`
Contract string `json:"contract"`
Sender string `json:"sender_name"`
Recipient string `json:"recipient_name"`
Memo string `json:"memo"`
State int64 `json:"state"`
IsSenderContract bool `json:"is_sender_contract"`
IsRecipientContract bool `json:"is_recipient_contract"`
SenderAssets []Asset `json:"sender_assets"`
RecipientAssets []Asset `json:"recipient_assets"`
UpdatedAtBlock string `json:"updated_at_block"`
UpdatedAtTime unixtime.Time `json:"updated_at_time"`
CreatedAtBlock string `json:"created_at_block"`
CreatedAtTime unixtime.Time `json:"created_at_time"`
}
// Request Parameters
type OfferState string
const (
OfferStatePending = OfferState("0")
OfferStateInvalid = OfferState("1")
OfferStateUnknown = OfferState("2")
OfferStateAccepted = OfferState("3")
OfferStateDeclined = OfferState("4")
OfferStateCanceled = OfferState("5")
)
type OfferSortColumn string
const (
OfferSortCreated = OfferSortColumn("created")
OfferSortUpdated = OfferSortColumn("updated")
)
type OfferRequestParams struct {
Account string `qs:"account,omitempty"`
Sender ReqList[string] `qs:"sender,omitempty"`
Recipient ReqList[string] `qs:"recipient,omitempty"`
Memo string `qs:"memo,omitempty"`
MatchMemo string `qs:"match_memo,omitempty"`
State OfferState `qs:"state,omitempty"`
IsRecipientContract bool `qs:"is_recipient_contract,omitempty"`
AssetID ReqList[int] `qs:"asset_id,omitempty"`
TemplateID ReqList[int] `qs:"template_id,omitempty"`
SchemaName ReqList[string] `qs:"schema_name,omitempty"`
CollectionName ReqList[string] `qs:"collection_name,omitempty"`
AccountWhitelist ReqList[string] `qs:"account_whitelist,omitempty"`
AccountBlacklist ReqList[string] `qs:"account_blacklist,omitempty"`
SenderAssetWhitelist ReqList[string] `qs:"sender_asset_whitelist,omitempty"`
SenderAssetBlacklist ReqList[string] `qs:"sender_asset_blacklist,omitempty"`
RecipientAssetWhitelist ReqList[string] `qs:"recipient_asset_whitelist,omitempty"`
RecipientAssetBlacklist ReqList[string] `qs:"recipient_asset_blacklist,omitempty"`
CollectionWhitelist ReqList[string] `qs:"collection_whitelist,omitempty"`
CollectionBlacklist ReqList[string] `qs:"collection_blacklist,omitempty"`
HideContracts bool `qs:"hide_contracts,omitempty"`
HideEmptyOffers bool `qs:"hide_empty_offers,omitempty"`
IDs ReqList[int] `qs:"ids,omitempty"`
LowerBound string `qs:"lower_bound,omitempty"`
UpperBound string `qs:"upper_bound,omitempty"`
Before int `qs:"before,omitempty"`
After int `qs:"after,omitempty"`
Page int `qs:"page,omitempty"`
Limit int `qs:"limit,omitempty"`
Order SortOrder `qs:"order,omitempty"`
Sort OfferSortColumn `qs:"sort,omitempty"`
}
// Responses
type OfferResponse struct {
APIResponse
Data Offer
}
type OffersResponse struct {
APIResponse
Data []Offer
}
type OfferLogResponse struct {
APIResponse
Data []Log
}
// API Client functions
// GetOffers fetches "/atomicassets/v1/offers" from API
func (c *Client) GetOffers(params OfferRequestParams) (OffersResponse, error) {
var offers OffersResponse
r, err := c.fetch("GET", "/atomicassets/v1/offers", params, &offers.APIResponse)
if err == nil {
// Parse json
err = r.Unmarshal(&offers)
}
return offers, err
}
// GetOffer fetches "/atomicassets/v1/offers/{offers_id}" from API
func (c *Client) GetOffer(offerID string) (OfferResponse, error) {
var offer OfferResponse
r, err := c.fetch("GET", "/atomicassets/v1/offers/"+offerID, nil, &offer.APIResponse)
if err == nil {
// Parse json
err = r.Unmarshal(&offer)
}
return offer, err
}
// GetOfferLog fetches "/atomicassets/v1/offers/{offers_id}/logs" from API
func (c *Client) GetOfferLog(offerID string, params LogRequestParams) (OfferLogResponse, error) {
var logs OfferLogResponse
r, err := c.fetch("GET", "/atomicassets/v1/offers/"+offerID+"/logs", params, &logs.APIResponse)
if err == nil {
// Parse json
err = r.Unmarshal(&logs)
}
return logs, err
}