You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
2.6 KiB

9 years ago
/******************************************************************************
* Copyright © 2014-2015 The SuperNET Developers. *
* *
* See the AUTHORS, DEVELOPER-AGREEMENT and LICENSE files at *
* the top-level directory of this distribution for the individual copyright *
* holder information and the developer policies on copyright and licensing. *
* *
* Unless otherwise agreed in a custom licensing agreement, no part of the *
* SuperNET software, including this file may be copied, modified, propagated *
* or distributed except according to the terms contained in the LICENSE file *
* *
* Removal or modification of this copyright notice is prohibited. *
* *
******************************************************************************/
int32_t CHECKBALANCE(char **retstrp,int32_t skipflag,struct exchange_info *exchange,int32_t dir,char *base,char *rel,double price,double volume,cJSON *argjson)
{
cJSON *json; char *coinstr,*balancestr,*resultstr,*resultval; double balance; int32_t retval = -1;
if ( skipflag == 0 )
{
coinstr = (dir > 0) ? rel : base;
if ( (balancestr= PARSEBALANCE(exchange,&balance,coinstr,argjson)) != 0 )
{
json = cJSON_Parse(balancestr);
free(balancestr);
printf("%s balance.%s %f vs %f\n",exchange->name,coinstr,balance,dir > 0 ? volume : volume * price);
if ( (dir > 0 && balance < volume) || (dir < 0 && balance < (volume * price)) )
{
resultstr = "error";
resultval = "not enough balance";
}
else
{
resultval = "balance";
resultstr = "success";
retval = 0;
}
if ( retstrp != 0 )
{
if ( json == 0 )
json = cJSON_CreateObject();
jaddstr(json,"coin",coinstr);
jaddnum(json,"balance",balance);
jaddnum(json,"required",volume * (dir < 0 ? price : 1.));
jaddstr(json,resultstr,resultval);
*retstrp = jprint(json,1);
}
else if ( json != 0 )
free_json(json);
}
} else retval = 0;
return(retval);
}