diff --git a/example/CodesHTTP/main.go b/example/CodesHTTP/main.go new file mode 100644 index 0000000..99e3dbd --- /dev/null +++ b/example/CodesHTTP/main.go @@ -0,0 +1,20 @@ +package main + +import ( + "github.com/injoyai/logs" + "github.com/injoyai/tdx/extend" + "time" +) + +func main() { + go extend.ListenCodesHTTP(10033) + + <-time.After(time.Second * 3) + c := extend.DialCodesHTTP("http://localhost:10033") + stocks, err := c.GetStocks() + logs.PanicErr(err) + + for _, v := range stocks { + println(v) + } +} diff --git a/extend/codes_bj.go b/extend/codes-bj.go similarity index 100% rename from extend/codes_bj.go rename to extend/codes-bj.go diff --git a/extend/codes-server.go b/extend/codes-server.go new file mode 100644 index 0000000..61e9cdc --- /dev/null +++ b/extend/codes-server.go @@ -0,0 +1,66 @@ +package extend + +import ( + "encoding/json" + "fmt" + "github.com/injoyai/conv" + "github.com/injoyai/tdx" + "io" + "net/http" + "path/filepath" +) + +func ListenCodesHTTP(port int, filename ...string) error { + code, err := tdx.DialCodes(conv.Default(filepath.Join(tdx.DefaultDatabaseDir, "codes.db"), filename...)) + if err != nil { + return nil + } + return http.ListenAndServe(fmt.Sprintf(":%d", port), http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.RequestURI { + case "/stocks": + ls := code.GetStocks() + w.WriteHeader(http.StatusOK) + w.Write(conv.Bytes(ls)) + case "/etfs": + ls := code.GetETFs() + w.WriteHeader(http.StatusOK) + w.Write(conv.Bytes(ls)) + default: + http.NotFound(w, r) + } + })) +} + +func DialCodesHTTP(address string) *CodesHTTP { + return &CodesHTTP{address: address} +} + +type CodesHTTP struct { + address string +} + +func (this *CodesHTTP) getList(path string) ([]string, error) { + resp, err := http.DefaultClient.Get(this.address + path) + if err != nil { + return nil, err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("http code:%d", resp.StatusCode) + } + bs, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + ls := []string(nil) + err = json.Unmarshal(bs, &ls) + return ls, err +} + +func (this *CodesHTTP) GetStocks() ([]string, error) { + return this.getList("/stocks") +} + +func (this *CodesHTTP) GetETFs() ([]string, error) { + return this.getList("/etfs") +} diff --git a/extend/pull-trade.go b/extend/pull-trade.go index bf92087..4e50968 100644 --- a/extend/pull-trade.go +++ b/extend/pull-trade.go @@ -67,11 +67,7 @@ func (this *PullTrade) PullYear(ctx context.Context, m *tdx.Manage, year int, co tss = append(tss, resp.List...) //转成分时K线 - ks, err := resp.List.Klines1() - if err != nil { - logs.Err(err) - return false - } + ks := resp.List.Klines() kss1 = append(kss1, ks...) kss5 = append(kss5, ks.Merge(5)...)