move providers into providers subdirectory
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
83
providers/staticjsonYahooFinance/chart.go
Normal file
83
providers/staticjsonYahooFinance/chart.go
Normal file
@@ -0,0 +1,83 @@
|
||||
package staticjsonYahooFinance
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
type chart struct {
|
||||
Chart struct {
|
||||
Result []struct {
|
||||
Meta struct {
|
||||
Currency string `json:"currency"`
|
||||
Symbol string `json:"symbol"`
|
||||
ExchangeName string `json:"exchangeName"`
|
||||
InstrumentType string `json:"instrumentType"`
|
||||
FirstTradeDate int `json:"firstTradeDate"`
|
||||
RegularMarketTime int `json:"regularMarketTime"`
|
||||
Gmtoffset int `json:"gmtoffset"`
|
||||
Timezone string `json:"timezone"`
|
||||
ExchangeTimezoneName string `json:"exchangeTimezoneName"`
|
||||
RegularMarketPrice float64 `json:"regularMarketPrice"`
|
||||
ChartPreviousClose float64 `json:"chartPreviousClose"`
|
||||
PreviousClose float64 `json:"previousClose"`
|
||||
Scale int `json:"scale"`
|
||||
PriceHint int `json:"priceHint"`
|
||||
CurrentTradingPeriod struct {
|
||||
Pre struct {
|
||||
Timezone string `json:"timezone"`
|
||||
Start int `json:"start"`
|
||||
End int `json:"end"`
|
||||
Gmtoffset int `json:"gmtoffset"`
|
||||
} `json:"pre"`
|
||||
Regular struct {
|
||||
Timezone string `json:"timezone"`
|
||||
Start int `json:"start"`
|
||||
End int `json:"end"`
|
||||
Gmtoffset int `json:"gmtoffset"`
|
||||
} `json:"regular"`
|
||||
Post struct {
|
||||
Timezone string `json:"timezone"`
|
||||
Start int `json:"start"`
|
||||
End int `json:"end"`
|
||||
Gmtoffset int `json:"gmtoffset"`
|
||||
} `json:"post"`
|
||||
} `json:"currentTradingPeriod"`
|
||||
TradingPeriods [][]struct {
|
||||
Timezone string `json:"timezone"`
|
||||
Start int `json:"start"`
|
||||
End int `json:"end"`
|
||||
Gmtoffset int `json:"gmtoffset"`
|
||||
} `json:"tradingPeriods"`
|
||||
DataGranularity string `json:"dataGranularity"`
|
||||
Range string `json:"range"`
|
||||
ValidRanges []string `json:"validRanges"`
|
||||
} `json:"meta"`
|
||||
Timestamp []int `json:"timestamp"`
|
||||
Indicators struct {
|
||||
Quote []struct {
|
||||
Volume []any `json:"volume"`
|
||||
High []any `json:"high"`
|
||||
Close []any `json:"close"`
|
||||
Open []any `json:"open"`
|
||||
Low []any `json:"low"`
|
||||
} `json:"quote"`
|
||||
} `json:"indicators"`
|
||||
} `json:"result"`
|
||||
Error any `json:"error"`
|
||||
} `json:"chart"`
|
||||
}
|
||||
|
||||
func (c client) getChart(symbol string) (int, error) {
|
||||
chartResponse := &chart{}
|
||||
err := c.get(fmt.Sprintf("/chart/%s", symbol), chartResponse, url.Values{})
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("http get request error: %v", err)
|
||||
}
|
||||
|
||||
if len(chartResponse.Chart.Result) != 1 {
|
||||
return 0, fmt.Errorf("unexpected length of results - expected 1 but got %d", len(chartResponse.Chart.Result))
|
||||
}
|
||||
|
||||
return int(chartResponse.Chart.Result[0].Meta.RegularMarketPrice * 1000), nil
|
||||
}
|
Reference in New Issue
Block a user