打印

基于之前结果,完成一个简单的测试程序

[复制链接]
1592|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
keer_zu|  楼主 | 2018-1-23 23:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
cmd.go

package api

import(
"io/ioutil"
    "net/http"
    "bytes"
    jsoniter "github.com/json-iterator/go"
    "fmt"
    "errors"
    "strings"
    )

var http_url string = "http://10.10.1.20:8083"


type Error struct {
        Code         int                 `json:"code"`
        Message         string         `json:"message"`
}

type ApiError struct {
        Error_code         int                 `json:"error_code"`
        Result                 bool         `json:"result"`
}

//type ApiTicker

func TestGetResParse(ret []byte,res interface{}) error{

        var resApi ApiResComm
        resApi.SetRes(res)

        str :=  string(ret[1:len(ret)-1])  //需要正则

        strUn := strings.Replace("{\"res\":" + str + "}","\\","",-1)

        byteUn :=  []byte(strUn)
        fmt.Printf("byteUn: %s\n",byteUn)
       
        if err := jsoniter.Unmarshal(byteUn,&resApi); err != nil{
                fmt.Printf("parse error: %s\n",err.Error())
                return err
        }

        return nil
}

//================================================

type HttpCmd struct {
        //CmdPost(string) (string,error)
}

func (c *HttpCmd)CmdPost(jsonCmd string)([]byte,error) {
        body := jsonCmd
        res, err := http.Post(http_url, "application/json;charset=utf-8", bytes.NewBuffer([]byte(body)))
        if err != nil {
                fmt.Println("http post error ", err.Error())
                return nil,err
        }

        defer res.Body.Close()

        content, err := ioutil.ReadAll(res.Body)
        if err != nil {
                fmt.Println("post, read body error ", err.Error())
                return nil,err
        }

        return content,nil
}

func (c *HttpCmd) CmdGet(getUrl string)([]byte,error) {

        resp, err := http.Get(getUrl)
        if err != nil {
                fmt.Println("http Get error ", err.Error())
                return nil,err
        }

        defer resp.Body.Close()
        content, err := ioutil.ReadAll(resp.Body)
        if err != nil {
                fmt.Println("get, read body error ", err.Error())
                return nil,err
        }

        return content,nil
}

func (c *HttpCmd) CmdParse (res []byte,result interface{}) (ResultComm,error){
        var params ResultComm
        params.SetResult(result)

        if err := jsoniter.Unmarshal(res,&params); err != nil{
                return params, err
        }

        if params.GetError() != nil{
                errMsg := fmt.Sprintf("%v", params.GetError())
                return params, errors.New(errMsg)
        }

        return params, nil
}

func (c *HttpCmd) ApiResParse(ret []byte,res interface{})(int,error){

        var resApi ApiResComm
         var apiError ApiError
        resApi.SetRes(res)

        str :=  string(ret[1:len(ret)-1])  //需要正则

        strUn := strings.Replace("{\"res\":" + str + "}","\\","",-1)

        strEt := strings.Replace(str,"\\","",-1)

        if err := jsoniter.Unmarshal([]byte(strEt),&apiError); err != nil{
                 fmt.Printf("api error parse error: %s\n",err.Error())
                 return 0,err
        }

        byteUn :=  []byte(strUn)
        //fmt.Printf("byteUn: %s\n",byteUn)

        if apiError.Error_code != 0 {
                return apiError.Error_code,nil
        }
       
        if err := jsoniter.Unmarshal(byteUn,&resApi); err != nil{
                fmt.Printf("api result parse error: %s\n",err.Error())
                return 0,err
        }
       
        return 0,nil
}

//==================================================

type CmdResult interface {
        GetError()*Error
        GetId()int
        GetResult()interface{}
        SetResult(interface{})
}


type ApiRes interface {
        GetRes()interface{}
        SetRes(interface{})
}

//////////////////////////////////////////////////////////////////////////////

type CmdAddAsset struct {
        HttpCmd
        ResultComm
}

type AddAssetResul struct {

}


///////////////////////////////////////////////////////////////////////////////////

type ResultComm struct {
        Err                 *Error                 `json:"error"`
        Result         interface{}         `json:"result"`
        Id                 int                         `json:"id"`
}

func (r *ResultComm)GetError()*Error{
        return r.Err
}

func (r *ResultComm)GetId()int {
        return r.Id
}

func (r *ResultComm)GetResult()interface{}{
        return r.Result
}

func (r *ResultComm)SetResult(result interface{}){
        r.Result = result
}

///////////////////////////////////////////////////////////////////////////////////

type ApiResComm struct {
        Res         interface{}         `json:"res"`
}

func (r *ApiResComm)GetRes()interface{}{
        return r.Res
}

func (r *ApiResComm)SetRes(res interface{}){
        r.Res = res
}

///////////////////////////////////////////////////////////////////////////////////


type CmdAddMarket struct {
        HttpCmd
        ResultComm
}

//=======================================================

type CmdMarketSummary struct {
        HttpCmd
        ResultComm
}


type MarketSummaryResult struct {
        Name                 string                 `json:"name"`
        Ask_count         int                         `json:"ask_count"`
        Ask_amount         string                `json:"ask_amount"`
        Bid_count         int                         `json:"bid_count"`
        bid_amount         string                 `json:"bid_amount"`
}


////////////////////////////////////////////////////////////////////////////////////////

type CommCommand struct {
        HttpCmd
        ResultComm
}


type ApiCommand struct {
        HttpCmd
        ApiResComm
}

相关帖子

沙发
keer_zu|  楼主 | 2018-1-23 23:30 | 只看该作者
api.go


package api

import (
        "fmt"
)

var BaseUrl string  = "http://10.10.1.20:8083/api/v1/"

///////////////////////////////////////////////// 币币行情 API ////////////////////////////////////////////////////////////

///////////////////////////////////获取币币行情
func Build_ticker_cmd(market string) string{
        str := BaseUrl + "ticker.do?market=" + market
        return str
}

//// resoponse

type Ticker struct {
        Period         int                 `json:"period"`
        Last         string         `json:"last"`
        Open         string         `json:"open"`
        Close         string         `json:"close"`
        High         string         `json:"high"`
        Low                 string         `json:"low"`
        Volume         string         `json:"volume"`
}

type TickerRes struct {
        Date         string         `json:"date"`
        Tick         *Ticker         `json:"ticker"`
}

////////////////////////////////////获取深度
func Build_depth_cmd(market string) string{
        str := BaseUrl + "depth.do?market=" + market
        return str
}


type DepthRes struct {
        Asks         [][]float32                 `json:"asks"`
        Bids         [][]float32                 `json:"bids"`
}

/////////////////////////////////////获取交易信息
func Build_trades_cmd(market string,since string) string{
        str := BaseUrl + "trades.do?market=" + market + "&since=" + since
        return str
}



type TradesRes struct {
        Date         string                 `json:"date"`
        Date_ms string                 `json:"date_ms"`
        Price         float32                `json:"price"`
        Amount         float32                 `json:"amount"`
        Tid                 string                 `json:"tid"`
        Type         string                 `json:"type"`
}



///////////////////////////////////////////////// 币币交易 API //////////////////////////////////////////////////////////////

// ////////////////////////////////////////////获取用户信息

// https://www.hotbit .com/api/v1/userinfo.do?AppKey=Ldwi395y2&Sign=NUhgdi784-dldjt=Ldi
func build_userinfo_cmd(appkey string,sign string) string {
        str := BaseUrl + "userinfo.do?AppKey=" + appkey + "&Sign=" + sign
        return str
}


type Asset struct {
        Available         string                 `json:"available"`
        Freeze                 string                 `json:"freeze"`
}

type UserinfoRes struct {
        Assets                 map[string]Asset         `json:"assets"`
        Error                 string                 `json:"error"`
}


//提交订单
//http://www.hotbit .com/api/v1/trade.do?apikey=e3bdc2ae54f2eb47ec299d830cf0f01c&sign=123&market=EOSUSDT&type=buy&price=200&amount=12.9
func build_trade_cmd(apikey string,sign string,market string,Type string,price string,amount string) string {
        str := BaseUrl + "trade.do?apikey=" + apikey + "&sign=" + sign + "&market=" + market + "&type=" + Type + "&price=" + price + "&amount=" + amount
        return str
}
//{"result":true,"order_id":123456}
type TradeRes struct {
        Result                 bool                 `json:"result"`
        Order_id         int                         `json:"order_id"`
}


///////////////////////////////////////////////////////////////批量下单
//https://www.hotbit .com/api/v1/batch_trade.do?apikey=e3bdc2ae54f2eb47ec299d830cf0f01c&market=EOSUSDT&type=buy&orders_data=[{price:3,amount:5,type:'sell'},{price:4,amount:6,type:'buy'}]&sign=dkoivndiei
type order_data struct {
        Price         string
        Amount          int
        Type         string
}

func build_batch_trade_cmd(apikey string,sign string,market string,Type string,orders_data []order_data) string {
        str := BaseUrl + "batch_trade.do?apikey=" + apikey + "&sign=" + sign + "&market=" + market + "&type=" + Type + "&orders_data=["
        for i,od := range orders_data {
                data := fmt.Sprintf("{price:%s,amount:%d,type:'%s'}",od.Price,od.Amount,od.Type)
                str += data
                if i < len(orders_data) - 1 {
                        str += ","
                }
        }

        str += "]"

        return str
}



type OrderRes struct {
        Order_id         int                 `json:"order_id"`
        Error_code         int                 `json:"error_code"`
}


type BatchTradeRes struct {
        Order_info                 []OrderRes         `json:"order_info"`
        Result                         bool                 `json:"result"`
}

//////////////////////////////////////////// 撤销订单 /////////////////////////////////
//https://www.hotbit.com/api/v1/cancel_order.do?apikey=ed47e38a1fdb57e8c28744ecb390c901&market=BTCBCC&order_id=[1231,1232,1233]&sign=meoivn8gjofi9fmbf9rD
func build_cancel_order_cmd(apikey string,sign string,market string,order_id []int) string {
        str := BaseUrl + "cancel_order.do?apikey=" + apikey + "&sign=" + sign + "&market=" + market + "&order_id=["
        for i,id := range order_id {
                str += fmt.Sprintf("%d",id)
                if i < len(order_id) - 1 {
                        str += ","
                }
        }

        str += "]"

        return str
}
//{"success":"123456,123457","error":"123458,123459"}
type CancelOrderRes struct {
        Success                 string                 `json:"success"`
        Error                 string                 `json:"error"`
}


////////////////////////////////////////////获取用户未完成订单信息
//https://www.hotbit.com/api/v1/order_pending.do?apikey=e3bdc2ae54f2eb47ec299d830cf0f01c&market=EOSUSDT&sign=meoivn8gjofi9fmbf9rD
func build_order_pending_cmd(apikey string,sign string,market string) string {
        str := BaseUrl + "order_pending.do?apikey=" + apikey + "&sign=" + sign + "&market=" + market
        return str
}


type OrderPend struct {
        Id          int                                 `json:"id"`
        Market     string                          `json:"market"`
        source     string                         `json:"source"`
        Type        int                                 `json:"type"`
        Side        int                                 `json:"side"`
        User            int                                 `json:"user"`
        Ctime       float32                           `json:"ctime"`
        Mtime       float32                         `json:"mtime"`
        Price       string                         `json:"price"`
        Amount      string                          `json:"amount"`
        Taker_fee  string                          `json:"maker_fee"`
        Maker_fee  string                         `json:"maker_fee"`
        Left         string                         `json:"left"`
        Deal_stock string                         `json:"deal_stock"`
        Deal_money string                         `json:"deal_money"`
        Deal_fee    string                         `json:"deal_fee"`
}

type OrderPendingRes struct {
        Result                 bool                         `json:"result"`
        Orders                 *OrderPend           `json:"orders"`
}

/////////////////////////////////////////////获取用户已完成订单信息
//https://www.hotbit.com/api/v1/order_finish.do?apikey=e3bdc2ae54f2eb47ec299d830cf0f01c&start_time=152047813&end_time=15204808923&type=sell&market=EOSUSDT&sign=meoivn8gjofi9fmbf9rD
func build_order_finish_cmd(apikey string,sign string,market string,start_time string,end_time string,Type string) string {
        str := BaseUrl + "order_finish.do?apikey=" + apikey + "&sign=" + sign + "&market=" + market + "&start_time=" + start_time + "&end_time=" + end_time + "&type=" + Type
        return str
}

type OrderFinish struct {
        Id          int                                 `json:"id"`
        Ctime       float32                           `json:"ctime"`
        Ftime       float32                         `json:"ftime"`
        User            int                                 `json:"user"`
        Market     string                          `json:"market"`
        source     string                         `json:"source"`
        Type        int                                 `json:"type"`
        Side        int                                 `json:"side"`
        Price       string                         `json:"price"`
        Amount      string                          `json:"amount"`
        Taker_fee  string                          `json:"maker_fee"`
        Maker_fee  string                         `json:"maker_fee"`
        Deal_stock string                         `json:"deal_stock"`
        Deal_money string                         `json:"deal_money"`
        Deal_fee    string                         `json:"deal_fee"`
}

type OrderFinishRes struct {
        Result                 bool                         `json:"result"`
        Orders                 *OrderFinish           `json:"orders"`
}



使用特权

评论回复
板凳
keer_zu|  楼主 | 2018-1-23 23:32 | 只看该作者
config.go

读取配置信息:

package utils


import (
        io "io/ioutil"
        json "encoding/json"
)

//////////////////// global /////////////////

var MeCfg *MeConfig

//////////////////////////////////////////////

type Mysql struct {
        Host         string `json:"host"`
        User         string `json:"user"`
        Pass         string `json:"pass"`
        Database        string `json:"database"`
        MaxConn        int        `json:"maxConns"`
}

type Asset struct {
        Name         string                 `json:"name"`
        PrecSave         int                 `json:"prec_save"`
        PrecShow         int                 `json:"prec_show"`
}

type MarketAsset struct {
        Name         string                 `json:"name"`
        Prec         int                         `json:"prec"`
}

type Market struct {
        Name         string                 `json:"name"`
        MinAmount string         `json:"min_amount"`
        Money         *MarketAsset `json:"money"`
        Stock         *MarketAsset `json:"stock"`
}

type Content struct {
        Assets                 []*Asset         `json:"assets"`
        Markets                 []*Market `json:"markets"`
}

type MeConfig struct {
        ErrorCode        int                 `json:"ErrorCode"`               //1100
        ErrorMsg        string         `json:"ErrorMsg"`                //"success"
        Con                         *Content `json:"Content"`
}

type JsonConfig struct {
        BaseUrl                 string          `json:"BaseUrl"`
        MeConfigUrl         string         `json:"MeConfigUrl"`
        Sql                         *Mysql         `json:"Mysql"`
}



type JsonStruct struct{

}


func NewJsonStruct () *JsonStruct {
        return &JsonStruct{}
}


func (self *JsonStruct) Load (filename string, v interface{}) {

        data, err := io.ReadFile(filename)
        if err != nil{
                return
        }

        datajson := []byte(data)
        err = json.Unmarshal(datajson, v)

        if err != nil{
                return
        }

}

func (self *JsonStruct) LoadFromString(cfg []byte,v interface{}) {

        err := json.Unmarshal(cfg, v)

        if err != nil{
                return
        }
}


type ValueTestAtmp struct{

        StringValue string

        NumericalValue int

        BoolValue bool

}


type ConfigData struct {

        ValueTestA ValueTestAtmp

}

使用特权

评论回复
地板
keer_zu|  楼主 | 2018-1-23 23:33 | 只看该作者
get_info.go

从数据库中获取信息

package utils

import (
        "time"
        _ "github.com/go-sql-driver/mysql"
        "github.com/xormplus/xorm"
        "fmt"
        "sync"
)

type Fapi struct {
        Id         int       `xorm:"fid"`
        Fkey        string    `xorm:"fkey"`
        Fsecret     string    `xorm:"fsecret"`
        Fuser       int       `xorm:"fuser"`
        Label       string    `xorm:"label"`
        Fcreatetime time.Time `xorm:"fcreatetime"`
        Fistrade    int       `xorm:"fistrade"`
        Fiswithdraw int       `xorm:"fiswithdraw"`
        Fisreadinfo int       `xorm:"fisreadinfo"`
        Fip         string    `xorm:"fip"`
        WhiteIps    string    `xorm:"whiteIps"`
}

var JsonCfg *JsonConfig

var initEngineOnce sync.Once
var engineMysql *xorm.Engine

func GetEngine(cfg *Mysql)*xorm.Engine{

        initEngineOnce.Do(func(){
                var err error
                dbUrl := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8", cfg.User, cfg.Pass, cfg.Host, cfg.Database)
                //fmt.Printf("\n ***    %s  ***\n",dbUrl)
                engineMysql, err = xorm.NewEngine("mysql", dbUrl)
                if err != nil{
                        panic(err)
                }
                engineMysql.SetMaxOpenConns(JsonCfg.Sql.MaxConn)
        })

        return engineMysql
}

func GetUserInfo(engine *xorm.Engine)([]Fapi,error) {

        var fapi []Fapi

        if err := engine.Find(&fapi);err != nil {
                return nil,err
        }

        return fapi,nil
}

使用特权

评论回复
5
keer_zu|  楼主 | 2018-1-23 23:33 | 只看该作者
main.go

测试用例的实现:

package main

import (
    "fmt"
    "./api"
    "./utils"
)



var idCount int = 1


func BuildAssetAddCmd(name string,prec_save int,prec_show int) string {
    str := fmt.Sprintf("{\"method\": \"asset.add_new\",\"params\":[\"%s\",%d,%d],\"id\":%d}",name,prec_save,prec_show,idCount)
    idCount += 1
    return str
}

func BuildTickerUrl(market string) string{
    str := fmt.Sprintf("http://127.0.0.1:8080/api/v1/ticker.do?market=%s",market)
    return str
}



func main() {

    fmt.Printf("----\n")


    JsonParse := utils.NewJsonStruct()

    //v := utils.JsonConfig{}
    utils.JsonCfg = new(utils.JsonConfig)

    JsonParse.Load("config.json", utils.JsonCfg)
    api.BaseUrl = utils.JsonCfg.BaseUrl

    fmt.Printf("Base Url: %s\n",api.BaseUrl)

    fmt.Println(utils.JsonCfg)

    fmt.Println(utils.JsonCfg.Sql)

    engine := utils.GetEngine(utils.JsonCfg.Sql)

    a,e := utils.GetUserInfo(engine)
    if e == nil {
        for _, v := range a {
            fmt.Println(v)
        }
    }


    apiCmd := new(api.ApiCommand)

    meCfg,e := apiCmd.CmdGet(utils.JsonCfg.MeConfigUrl)

    if e != nil {
        fmt.Printf("meCfg get error\n")
        return
    }

    utils.MeCfg = new(utils.MeConfig)
    JsonParse.LoadFromString(meCfg,utils.MeCfg)

    fmt.Println(utils.MeCfg.Con.Assets[0] )
    fmt.Println(utils.MeCfg.Con.Markets[0].Money )

    ticker := new(api.Ticker)

    for _,market := range utils.MeCfg.Con.Markets {
        str := api.Build_ticker_cmd(market.Name)
        fmt.Printf("url:  %s\n",str)
        bti,et := apiCmd.CmdGet(str)
        if et != nil {
            fmt.Printf("market %s ,ticker get error\n",market.Name)
            continue
        }

        //fmt.Println(bti)

        ecode,err := apiCmd.ApiResParse(bti,ticker)

        if err != nil {
            fmt.Printf("parse error %s\n",err.Error())
            continue
        }

        if ecode != 0 {
            fmt.Printf("api get res err:  %d\n",ecode)
            continue
        }

        fmt.Printf("ticker[%s] = \n%s\n\n",market.Name,bti)
    }

   

   


   //fmt.Printf("meCfg: %s\n",meCfg)


    //fmt.Println(v.ValueTestA .StringValue )

   

/*
    str := "{\"method\": \"market.summary\", \"params\": [\"EOSBTC\"], \"id\": 123}"

    cmdMarketSummary  := new(api.CmdMarketSummary)
    bs,es := cmdMarketSummary.CmdPost(str)

    if es != nil {
        fmt.Printf("err: %v \n",es)
        return
    }

    fmt.Printf("bs:  %s\n",bs)

    var results  []*api.MarketSummaryResult
    //cmdMarketSummary.SetResult(&results)

    cmdMarketSummary.CmdParse(bs,&results)


    //fmt.Printf("result len: %d\n",len(results))
    fmt.Printf("name: %s\n",results[0].Name)
    fmt.Printf("Ask_count: %d\n",results[0].Ask_count)
    fmt.Printf("Ask_amount: %s\n",results[0].Ask_amount)

    tickerUrl := BuildTickerUrl("BTC")

    apiCmd := new(api.ApiCommand)

    tres,e := apiCmd.CmdGet(tickerUrl)

    if e != nil {
        fmt.Printf("ticker get error\n")
        return
    }

    fmt.Printf("tres: %s\n",tres)


    var ae api.ApiError

    ecode,err := apiCmd.ApiResParse(tres,&ae)

    if err != nil {
        fmt.Printf("parse error %s\n",err.Error())
        return
    }

    fmt.Printf("Error code: %d\n",ecode)

    if ae.Error_code != 0 {
        fmt.Printf("api get res err:  %d\n",ae.Error_code)
    }
*/
}

使用特权

评论回复
6
keer_zu|  楼主 | 2018-1-23 23:34 | 只看该作者
config.json

配置文件

{
        "MeConfigUrl":"http://10.10.1.20:8080/api/get_config?appname=matchengine_test",
        "BaseUrl":"http://127.0.0.1:8080/api/v1/",
        "mysql":{
      "host":"10.10.1.20:3306",
      "user":"admin",
      "pass":"zxw000123",
      "database":"hotbit_make_web",
      "maxConns":4
    }
}

使用特权

评论回复
7
keer_zu|  楼主 | 2018-1-23 23:34 | 只看该作者
一天又码了这么多

使用特权

评论回复
8
kelly1989| | 2018-1-24 12:39 | 只看该作者
厉害了

使用特权

评论回复
9
keer_zu|  楼主 | 2018-1-24 23:41 | 只看该作者
更多的测试用例:

package main

import (
    "fmt"
    "./api"
    "./utils"
    //"time"
)



var idCount int = 1



func main() {

    fmt.Printf("----\n")


    JsonParse := utils.NewJsonStruct()

    //v := utils.JsonConfig{}
    utils.JsonCfg = new(utils.JsonConfig)

    JsonParse.Load("config.json", utils.JsonCfg)
    api.BaseUrl = utils.JsonCfg.BaseUrl

    //fmt.Printf("Base Url: %s\n",api.BaseUrl)

    //fmt.Println(utils.JsonCfg)

    //fmt.Println(utils.JsonCfg.Sql)

    engine := utils.GetEngine(utils.JsonCfg.Sql)

    a,e := utils.GetUserInfo(engine)
    if e == nil {
        for _, v := range a {
            fmt.Println(v)
        }
    } else {
        fmt.Printf("user info get error\n")
        return
    }


    apiCmd := new(api.ApiCommand)

    meCfg,e := apiCmd.CmdGet(utils.JsonCfg.MeConfigUrl)

    if e != nil {
        fmt.Printf("meCfg get error\n")
        return
    }

    utils.MeCfg = new(utils.MeConfig)
    JsonParse.LoadFromString(meCfg,utils.MeCfg)

//////////////////////////////// trade /////////////////////////////////////
tradeRes := new(api.TradeRes)

Type := "buy"
price := "100"
amount := "10"


for _,market := range utils.MeCfg.Con.Markets {

    for _,v := range a {
        //(apikey string,market string,Type string,price string,amount string)

        params := api.BaseTradeUrl(v.Fkey,market.Name,Type,price,amount)
        if Type == "buy"{
            Type = "sell"
        } else {
            Type = "buy"
        }

        str := api.BaseUrl + params["method?"]

        delete(params,"method?")

        ps := utils.CreatParams(v.Fsecret,params)

        str += ps

        fmt.Printf("url:   %s \n",str)

        bu,e := apiCmd.CmdPost(str)
        if e != nil {
            fmt.Printf("user: %d ,trade error\n",v.Fuser)
            continue
        }

        //fmt.Printf("bu:   %s \n",bu)

        ecode,err := apiCmd.ApiResParse(bu,tradeRes)

        if err != nil {
            fmt.Printf("parse error %s\n",err.Error())
            continue
        }

        if ecode != 0 {
            fmt.Printf("user get info err:  %d\n",ecode)
            continue
        }


        //fmt.Printf("user info[%s] = \n%s\n\n",v.Fuser,bu)

    }
}



////////////////////////////// balance ////////////////////////////////////
/*      
    userinfoRes := new(api.UserinfoRes)

    for _, v := range a {
        params := make(map[string]string)
        params["apikey"]=v.Fkey
        secKey := v.Fsecret
        fmt.Printf("user:   %d \n",v.Fuser)
        //sign := utils.CreatSign(secKey,params)


        ps := utils.CreatParams(secKey,params)

        str := api.BaseUrl + "balance.do?" + ps//api.Build_userinfo_cmd(v.Fkey,sign)

        fmt.Printf("url:   %s \n",str)


        bu,e := apiCmd.CmdPost(str)
        if e != nil {
            fmt.Printf("user: %d ,info get error\n",v.Fuser)
            continue
        }

        //fmt.Printf("bu:   %s \n",bu)

        ecode,err := apiCmd.ApiResParse(bu,userinfoRes)

        if err != nil {
            fmt.Printf("parse error %s\n",err.Error())
            continue
        }

        if ecode != 0 {
            fmt.Printf("user get info err:  %d\n",ecode)
            continue
        }


        //fmt.Printf("user info[%s] = \n%s\n\n",v.Fuser,bu)

    }

    //fmt.Println(utils.MeCfg.Con.Assets[0] )
    //fmt.Println(utils.MeCfg.Con.Markets[0].Money )


//////////////////////////////// ticker test ///////////////////////////////////

    ticker := new(api.Ticker)

    for _,market := range utils.MeCfg.Con.Markets {
        str := api.Build_ticker_cmd(market.Name)
        fmt.Printf("url:  %s\n",str)
        bti,et := apiCmd.CmdGet(str)
        if et != nil {
            fmt.Printf("market %s ,ticker get error\n",market.Name)
            continue
        }

        //fmt.Println(bti)

        ecode,err := apiCmd.ApiResParse(bti,ticker)

        if err != nil {
            fmt.Printf("parse error %s\n",err.Error())
            continue
        }

        if ecode != 0 {
            fmt.Printf("api get res err:  %d\n",ecode)
            continue
        }

        fmt.Printf("ticker[%s] = \n%s\n\n",market.Name,bti)
    }

    /////////////////////////////////// depth test /////////////////////////

      depth := new(api.DepthRes)

    for _,market := range utils.MeCfg.Con.Markets {
        str := api.Build_depth_cmd(market.Name)
        fmt.Printf("url:  %s\n",str)
        bdp,et := apiCmd.CmdGet(str)
        if et != nil {
            fmt.Printf("market %s ,depth get error\n",market.Name)
            continue
        }

        //fmt.Println(bti)

        ecode,err := apiCmd.ApiResParse(bdp,depth)

        if err != nil {
            fmt.Printf("parse error %s\n",err.Error())
            continue
        }

        if ecode != 0 {
            fmt.Printf("api get res err:  %d\n",ecode)
            continue
        }

        fmt.Printf("depth[%s] = \n%s\n\n",market.Name,bdp)
    }
////////////////////////////////////////////////////////////////////

    trades := new(api.TradesRes)
     t:=time.Now().Unix()  
     ts := t - 86400
     tss := fmt.Sprintf("%d",ts)

    for _,market := range utils.MeCfg.Con.Markets {
        str := api.Build_trades_cmd(market.Name,tss)
        fmt.Printf("url:  %s\n",str)
        bdp,et := apiCmd.CmdGet(str)
        if et != nil {
            fmt.Printf("market %s ,trades get error\n",market.Name)
            continue
        }

        //fmt.Println(bti)

        ecode,err := apiCmd.ApiResParse(bdp,trades)

        if err != nil {
            fmt.Printf("parse error %s\n",err.Error())
            continue
        }

        if ecode != 0 {
            fmt.Printf("api get res err:  %d\n",ecode)
            continue
        }

        fmt.Printf("trades[%s] = \n%s\n\n",market.Name,bdp)
    }*/

}

使用特权

评论回复
10
msblast| | 2018-1-25 09:50 | 只看该作者
版主,高大上了……
转战互联网了吗?

使用特权

评论回复
11
keer_zu|  楼主 | 2018-1-25 11:25 | 只看该作者
msblast 发表于 2018-1-25 09:50
版主,高大上了……
转战互联网了吗?

是的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1350

主题

12427

帖子

53

粉丝