-
Notifications
You must be signed in to change notification settings - Fork 3
/
auction.go
142 lines (124 loc) · 5.63 KB
/
auction.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
135
136
137
138
139
140
141
142
package atomicasset
import (
"fmt"
"github.com/eosswedenorg-go/unixtime"
)
// Types
type Bid struct {
Number int `json:"number"`
Account string `json:"account"`
Amount string `json:"amount"`
CreatedAtBlock string `json:"created_at_block"`
CreatedAtTime unixtime.Time `json:"created_at_time"`
TxID string `json:"txid"`
}
type Auction struct {
ID string `json:"auction_id"`
MarketContract string `json:"market_contract"`
AssetsContract string `json:"assets_contract"`
Seller string `json:"seller"`
Buyer string `json:"buyer"`
Price Token `json:"price"`
Assets []Asset `json:"assets"`
Bids []Bid `json:"bids"`
MakerMarketplace string `json:"maker_marketplace"`
TakerMarketplace string `json:"taker_marketplace"`
ClaimedByBuyer bool `json:"claimed_by_buyer"`
ClaimedBySeller bool `json:"claimed_by_seller"`
Collection Collection `json:"collection"`
EndTime unixtime.Time `json:"end_time"`
IsSellerContract bool `json:"is_seller_contract"`
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"`
State SalesState `json:"state"`
}
type AuctionsRequestParams struct {
State SalesState `qs:"state,omitempty"`
MaxAssets int `qs:"max_assets,omitempty"`
MinAssets int `qs:"min_assets,omitempty"`
ShowSellerContract string `qs:"show_seller_contract,omitempty"`
ContractBlacklist ReqList[string] `qs:"contract_blacklist,omitempty"`
ContractWhitelist ReqList[string] `qs:"contract_whitelist,omitempty"`
SellerBlacklist ReqList[string] `qs:"seller_blacklist,omitempty"`
BuyerBlacklist ReqList[string] `qs:"buyer_blacklist,omitempty"`
AssetId int `qs:"asset_id,omitempty"`
Marketplace ReqList[string] `qs:"marketplace,omitempty"`
MakerMarketplace ReqList[string] `qs:"maker_marketplace,omitempty"`
TakerMarketplace ReqList[string] `qs:"taker_marketplace,omitempty"`
Symbol string `qs:"symbol,omitempty"`
Account string `qs:"account,omitempty"`
Seller ReqList[string] `qs:"seller,omitempty"`
Buyer ReqList[string] `qs:"buyer,omitempty"`
MinPrice int `qs:"min_price,omitempty"`
MaxPrice int `qs:"max_price,omitempty"`
MinTemplateMint int `qs:"min_template_mint,omitempty"`
MaxTemplateMint int `qs:"max_template_mint,omitempty"`
CollectionName string `qs:"collection_name,omitempty"`
CollectionBlacklist ReqList[string] `qs:"collection_blacklist,omitempty"`
CollectionWhitelist ReqList[string] `qs:"collection_whitelist,omitempty"`
SchemaName string `qs:"schema_name,omitempty"`
TemplateID int `qs:"template_id,omitempty"`
Burned bool `qs:"burned,omitempty"`
Owner string `qs:"owner,omitempty"`
Match string `qs:"match,omitempty"`
Search string `qs:"search,omitempty"`
MatchImmutableName string `qs:"match_immutable_name,omitempty"`
MatchMutableName string `qs:"match_mutable_name,omitempty"`
IsTransferable bool `qs:"is_transferable,omitempty"`
IsBurnable bool `qs:"is_burnable,omitempty"`
Minter string `qs:"minter,omitempty"`
Burner string `qs:"burner,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 SaleSortColumn `qs:"sort,omitempty"`
}
// Responses
type AuctionResponse struct {
APIResponse
Data Auction
}
type AuctionsResponse struct {
APIResponse
Data []Auction
}
// API Client functions
// GetAuction fetches "/atomicassets/v1/auctions/{auction_id}" from API
func (c *Client) GetAuction(auction_id int) (AuctionResponse, error) {
var resp AuctionResponse
r, err := c.fetch("GET", fmt.Sprintf("/atomicmarket/v1/auctions/%d", auction_id), nil, &resp.APIResponse)
if err == nil {
// Parse json
err = r.Unmarshal(&resp)
}
return resp, err
}
// GetAuctionLogs fetches "/atomicassets/v1/auctions/{auction_id}/logs" from API
func (c *Client) GetAuctionLogs(auction_id int, params LogRequestParams) (LogsResponse, error) {
var resp LogsResponse
r, err := c.fetch("GET", fmt.Sprintf("/atomicmarket/v1/auctions/%d/logs", auction_id), params, &resp.APIResponse)
if err == nil {
// Set HTTPStatusCode
resp.HTTPStatusCode = r.StatusCode
// Parse json
err = r.Unmarshal(&resp)
}
return resp, err
}
// GetAuctions fetches "/atomicassets/v2/auctions" from API
func (c *Client) GetAuctions(params AuctionsRequestParams) (AuctionsResponse, error) {
var resp AuctionsResponse
r, err := c.fetch("GET", "/atomicmarket/v2/auctions", params, &resp.APIResponse)
if err == nil {
// Parse json
err = r.Unmarshal(&resp)
}
return resp, err
}