/
types.go
94 lines (82 loc) · 2.72 KB
/
types.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
/*
Copyright © 2021 Bhargav SNV bhargavsnv100@gmail.com
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package api
import geckoTypes "github.com/superoo7/go-gecko/v3/types"
// CoinData Holds data pertaining to a single coin.
// This is used to serve per coin details.
// It additionally holds a map of favourite coins.
type CoinData struct {
Type string
PriceHistory []float64
MinPrice float64
MaxPrice float64
Details CoinDetails
Favourites map[string]float64
}
// CoinDetails holds information about a coin
type CoinDetails struct {
Name string
Symbol string
Rank string
BlockTime string
MarketCap float64
Website string
Explorers [][]string
ATH float64
ATHDate string
ATL float64
ATLDate string
High24 float64
Low24 float64
TotalVolume float64
ChangePercents [][]string
TotalSupply float64
CurrentSupply float64
LastUpdate string
}
// AssetData is used to hold details of multiple coins and the price history
// of top ranked coins along with their names
type AssetData struct {
TopCoinData [][]float64
MaxPrices []float64
MinPrices []float64
TopCoins []string
AllCoinData geckoTypes.CoinsMarket
}
// CoinCapAsset is used to marshal asset data from coinCap APIs
type CoinCapAsset struct {
ID string `json:"id"`
Rank string `json:"rank"`
Symbol string `json:"symbol"`
Name string `json:"name"`
Supply string `json:"supply"`
MaxSupply string `json:"maxSupply"`
MarketCapUsd string `json:"marketCapUsd"`
VolumeUsd24Hr string `json:"volumeUsd24Hr"`
PriceUsd string `json:"priceUsd"`
ChangePercent24Hr string `json:"changePercent24Hr"`
Vwap24Hr string `json:"vwap24Hr"`
Explorer string `json:"explorer"`
}
// CoinCapData is used to marshall multiple assets from CoinCap APIs
type CoinCapData struct {
Data []CoinCapAsset `json:"data"`
Timestamp uint `json:"timestamp"`
}
// CoinID holds the ID of a coin as stored in CoinGecko and CoinCap
type CoinID struct {
CoinGeckoID string
CoinCapID string
}
// CoinIDMap maps a symbol to it's respective ID
type CoinIDMap map[string]CoinID