github.com/vmpartner/bitmex@v1.1.0/rest/rest.go (about)

     1  package rest
     2  
     3  import (
     4  	"context"
     5  	"github.com/vmpartner/bitmex/swagger"
     6  	"net/http"
     7  )
     8  
     9  func MakeContext(key string, secret string, host string, timeout int64) context.Context {
    10  	return context.WithValue(context.TODO(), swagger.ContextAPIKey, swagger.APIKey{
    11  		Key:     key,
    12  		Secret:  secret,
    13  		Host:    host,
    14  		Timeout: timeout,
    15  	})
    16  }
    17  
    18  func GetClient(ctx context.Context) *swagger.APIClient {
    19  	c := ctx.Value(swagger.ContextAPIKey).(swagger.APIKey)
    20  	cfg := &swagger.Configuration{
    21  		BasePath:      "https://" + c.Host + "/api/v1",
    22  		DefaultHeader: make(map[string]string),
    23  		UserAgent:     "Swagger-Codegen/1.0.0/go",
    24  		ExpireTime:    5, //seconds
    25  	}
    26  
    27  	return swagger.NewAPIClient(cfg)
    28  }
    29  
    30  func NewOrder(ctx context.Context, params map[string]interface{}) (swagger.Order, *http.Response, error) {
    31  	client := GetClient(ctx)
    32  	order, response, err := client.OrderApi.OrderNew(ctx, "XBTUSD", params)
    33  
    34  	return order, response, err
    35  }
    36  
    37  func AmendOrder(ctx context.Context, params map[string]interface{}) (swagger.Order, *http.Response, error) {
    38  	client := GetClient(ctx)
    39  	order, response, err := client.OrderApi.OrderAmend(ctx, params)
    40  
    41  	return order, response, err
    42  }
    43  
    44  func GetOrder(ctx context.Context, params map[string]interface{}) ([]swagger.Order, *http.Response, error) {
    45  	client := GetClient(ctx)
    46  	orders, response, err := client.OrderApi.OrderGetOrders(ctx, params)
    47  
    48  	return orders, response, err
    49  }
    50  
    51  func GetPosition(ctx context.Context, params map[string]interface{}) ([]swagger.Position, *http.Response, error) {
    52  	client := GetClient(ctx)
    53  	positions, response, err := client.PositionApi.PositionGet(ctx, params)
    54  
    55  	return positions, response, err
    56  }
    57  
    58  func GetTrade(ctx context.Context, params map[string]interface{}) ([]swagger.Trade, *http.Response, error) {
    59  	client := GetClient(ctx)
    60  	positions, response, err := client.TradeApi.TradeGet(params)
    61  
    62  	return positions, response, err
    63  }
    64  
    65  func CancelOrder(ctx context.Context, params map[string]interface{}) ([]swagger.Order, *http.Response, error) {
    66  	client := GetClient(ctx)
    67  	orders, response, err := client.OrderApi.OrderCancel(ctx, params)
    68  
    69  	return orders, response, err
    70  }
    71  
    72  func GetWallet(ctx context.Context) (swagger.Wallet, *http.Response, error) {
    73  	params := map[string]interface{}{
    74  		"currency": "",
    75  	}
    76  	client := GetClient(ctx)
    77  	wallet, response, err := client.UserApi.UserGetWallet(ctx, params)
    78  
    79  	return wallet, response, err
    80  }