Skip to content

Instantly share code, notes, and snippets.

@se7enack
Last active November 18, 2024 15:18
Show Gist options
  • Save se7enack/22aeb305081a5e698509077ea9cbd44f to your computer and use it in GitHub Desktop.
Save se7enack/22aeb305081a5e698509077ea9cbd44f to your computer and use it in GitHub Desktop.
package main
import (
"bufio"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
"sort"
"strings"
)
var url = "https://api.coincap.io/v2/assets"
type api struct {
Data []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"`
} `json:"data"`
Timestamp int64 `json:"timestamp"`
}
func main() {
resp, err := http.Get(strings.TrimSpace(url))
if err != nil {
fmt.Println("No response from request")
}
body, err := io.ReadAll(resp.Body)
var jsonstr = body
var getIt api
json.Unmarshal([]byte(jsonstr), &getIt)
if err != nil {
panic(err)
}
var all = getIt.Data
var length = 0
var coins []string
mapDict := make(map[string]int)
for i := 0; i < len(all); i++ {
var symbol = getIt.Data[i].Symbol
coins = append(coins, symbol)
mapDict[symbol] = i
length++
}
sort.Sort(sort.StringSlice(coins))
reader := bufio.NewReader(os.Stdin)
fmt.Println(coins, "\nEnter a crypto from above:")
pick, _ := reader.ReadString('\n')
pick = pick[:len(pick)-1]
var num = mapDict[strings.ToUpper(pick)]
var name = all[num].Name
var price = all[num].PriceUsd
fmt.Println("\"" + name + "\" " + "$" + price)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment