Crypto and warrants added
This commit is contained in:
75
warrants.go
Normal file
75
warrants.go
Normal file
@@ -0,0 +1,75 @@
|
||||
package tastytrade
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type Warrant struct {
|
||||
Symbol string `json:"symbol"`
|
||||
InstrumentType string `json:"instrument-type"`
|
||||
ListedMarket string `json:"listed-market"`
|
||||
Description string `json:"description"`
|
||||
IsClosingOnly bool `json:"is-closing-only"`
|
||||
Active bool `json:"active"`
|
||||
}
|
||||
|
||||
type ListWarrantsResult struct {
|
||||
Data struct {
|
||||
Items []Warrant `json:"items"`
|
||||
} `json:"data"`
|
||||
Context string `json:"context"`
|
||||
}
|
||||
|
||||
type GetWarrantResult struct {
|
||||
Data Warrant `json:"data"`
|
||||
Context string `json:"context"`
|
||||
}
|
||||
|
||||
// ListWarrants retrieves list of warrants
|
||||
func (api *TastytradeAPI) ListWarrants(symbols ...string) (ListWarrantsResult, error) {
|
||||
url := fmt.Sprintf("%s/instruments/warrants", api.host)
|
||||
if len(symbols) > 0 {
|
||||
url = fmt.Sprintf("%s?symbols=%s", url, strings.Join(symbols, ","))
|
||||
}
|
||||
data, err := api.fetchData(url)
|
||||
if err != nil {
|
||||
return ListWarrantsResult{}, err
|
||||
}
|
||||
|
||||
var response ListWarrantsResult
|
||||
jsonData, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
return ListWarrantsResult{}, err
|
||||
}
|
||||
|
||||
err = json.Unmarshal(jsonData, &response)
|
||||
if err != nil {
|
||||
return ListWarrantsResult{}, err
|
||||
}
|
||||
|
||||
return response, nil
|
||||
}
|
||||
|
||||
// GetWarrant retrieves a specific warrant
|
||||
func (api *TastytradeAPI) GetWarrant(symbol string) (GetWarrantResult, error) {
|
||||
url := fmt.Sprintf("%s/instruments/warrants/%s", api.host, symbol)
|
||||
data, err := api.fetchData(url)
|
||||
if err != nil {
|
||||
return GetWarrantResult{}, err
|
||||
}
|
||||
|
||||
var response GetWarrantResult
|
||||
jsonData, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
return GetWarrantResult{}, err
|
||||
}
|
||||
|
||||
err = json.Unmarshal(jsonData, &response)
|
||||
if err != nil {
|
||||
return GetWarrantResult{}, err
|
||||
}
|
||||
|
||||
return response, nil
|
||||
}
|
||||
Reference in New Issue
Block a user