From db7e6eaf8fc3cc690b8b425990679a6e08afe5fa Mon Sep 17 00:00:00 2001 From: sjc Date: Wed, 28 May 2025 07:55:12 -0400 Subject: [PATCH] Metrics Div and Earnings Added Added Dividends and Earnings Metrics. Fixed MarketMetric function. --- metrics.go | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/metrics.go b/metrics.go index 7fa5820..b930811 100644 --- a/metrics.go +++ b/metrics.go @@ -6,6 +6,30 @@ import ( "net/url" ) +type DividendInfo struct { + OccuredDate string `json:"occurred-date"` + Amount float32 `json:"amount"` +} + +type MarketMetricDividendResponse struct { + Data struct { + Items []DividendInfo `json:"items"` + } + Context string `json:"context"` +} + +type EarningsInfo struct { + OccuredDate string `json:"occurred-date"` + EPS float32 `json:"eps"` +} + +type MarketMetricEarningResponse struct { + Data struct { + Items []EarningsInfo `json:"items"` + } + Context string `json:"context"` +} + type MarketMetricInfo struct { Symbol string `json:"symbol"` ImpliedVolatilityIndex float32 `json:"implied-volatility-index"` @@ -23,22 +47,29 @@ type MarketMetricInfo struct { } `json:"option-expiration-implied-volatilities"` } -func (api *TastytradeAPI) GetMarketMetricInfo(symbol string) (MarketMetricInfo, error) { +type MarketMetricResponse struct { + Data struct { + Items []MarketMetricInfo `json:"items"` + } + Context string `json:"context"` +} + +func (api *TastytradeAPI) GetMarketMetricInfo(symbol string) (MarketMetricResponse, error) { urlVal := fmt.Sprintf("%s/market-metrics/%s", api.host, url.PathEscape(symbol)) data, err := api.fetchData(urlVal) if err != nil { - return MarketMetricInfo{}, err + return MarketMetricResponse{}, err } - var response MarketMetricInfo + var response MarketMetricResponse jsonData, err := json.Marshal(data) if err != nil { - return MarketMetricInfo{}, err + return MarketMetricResponse{}, err } err = json.Unmarshal(jsonData, &response) if err != nil { - return MarketMetricInfo{}, err + return MarketMetricResponse{}, err } return response, nil