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
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);
|
||
|
}
|