Merge pull request #2700 from bziemek/ticker-apis

More tickers
This commit is contained in:
Sebastian Grewe 2018-03-18 20:30:59 +01:00 committed by GitHub
commit a0f06e71b0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 45 additions and 13 deletions

View File

@ -44,9 +44,13 @@ class Tools extends Base {
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; PHP client; '.php_uname('s').'; PHP/'.phpversion().')'); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; PHP client; '.php_uname('s').'; PHP/'.phpversion().')');
} }
curl_setopt($ch, CURLOPT_URL, $url . $target);
$url = rtrim($url, '/');
$target = ltrim($target, '/');
curl_setopt($ch, CURLOPT_URL, $url . '/' . $target);
// curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); // curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
@ -72,11 +76,9 @@ class Tools extends Base {
**/ **/
private function getApiType($url) { private function getApiType($url) {
if (preg_match('/coinchoose.com/', $url)) { if (preg_match('/coinchoose.com/', $url)) {
return 'coinchose'; return 'coinchoose';
} else if (preg_match('/btc-e.com/', $url)) { } else if (preg_match('/btc-e.nz/', $url)) {
return 'btce'; return 'btce';
} else if (preg_match('/cryptsy.com/', $url)) {
return 'cryptsy';
} else if (preg_match('/cryptopia.co.nz/', $url)) { } else if (preg_match('/cryptopia.co.nz/', $url)) {
return 'cryptopia'; return 'cryptopia';
} else if (preg_match('/cryptorush.in/', $url)) { } else if (preg_match('/cryptorush.in/', $url)) {
@ -87,6 +89,18 @@ class Tools extends Base {
return 'c-cex'; return 'c-cex';
} else if (preg_match('/bittrex.com/', $url)) { } else if (preg_match('/bittrex.com/', $url)) {
return 'bittrex'; return 'bittrex';
} else if (preg_match('/crypto-bridge.org/', $url)) {
return 'cryptobridge';
} else if (preg_match('/yobit.net/', $url)) {
return 'yobit';
} else if (preg_match('/binance.com/', $url)) {
return 'binance';
} else if (preg_match('/southxchange.com/', $url)) {
return 'southxchange';
} else if (preg_match('/mercatox.com/', $url)) {
return 'mercatox';
} else if (preg_match('/tradeogre.com/', $url)) {
return 'tradeogre';
} }
$this->setErrorMessage("API URL unknown"); $this->setErrorMessage("API URL unknown");
return false; return false;
@ -97,30 +111,28 @@ class Tools extends Base {
**/ **/
public function getPrice() { public function getPrice() {
$aData = $this->getApi($this->config['price']['url'], $this->config['price']['target']); $aData = $this->getApi($this->config['price']['url'], $this->config['price']['target']);
$strCurrency = $this->config['currency']; $strBase = $this->config['currency'];
$strQuote = $this->config['price']['currency'];
// Check the API type for configured URL // Check the API type for configured URL
if (!$strApiType = $this->getApiType($this->config['price']['url'])) if (!$strApiType = $this->getApiType($this->config['price']['url']))
return false; return false;
// if api data is valid, extract price depending on API type // if api data is valid, extract price depending on API type
if (is_array($aData)) { if (is_array($aData)) {
switch ($strApiType) { switch ($strApiType) {
case 'coinchose': case 'coinchoose':
foreach ($aData as $aItem) { foreach ($aData as $aItem) {
if($strCurrency == $aItem[0]) if($strBase == $aItem[0])
return $aItem['price']; return $aItem['price'];
} }
break; break;
case 'btce': case 'btce':
return $aData['ticker']['last']; return $aData['ticker']['last'];
break; break;
case 'cryptsy':
return @$aData['return']['markets'][$strCurrency]['lasttradeprice'];
break;
case 'cryptopia': case 'cryptopia':
return @$aData['Data']['LastPrice']; return @$aData['Data']['LastPrice'];
break; break;
case 'cryptorush': case 'cryptorush':
return @$aData["$strCurrency/" . $this->config['price']['currency']]['last_trade']; return @$aData["{$strBase}/{$strQuote}"]['last_trade'];
break; break;
case 'mintpal': case 'mintpal':
return @$aData['0']['last_price']; return @$aData['0']['last_price'];
@ -131,6 +143,26 @@ class Tools extends Base {
case 'bittrex': case 'bittrex':
return @$aData['result']['Last']; return @$aData['result']['Last'];
break; break;
case 'cryptobridge':
foreach ($aData as $aItem) {
if("{$strBase}_{$strQuote}" == $aItem['id'])
return $aItem['last'];
}
case 'yobit':
return @$aData[strtolower($strBase) . "_" . strtolower($strQuote)]['last'];
break;
case 'binance':
return @$aData['price'];
break;
case 'southxchange':
return @$aData['Last'];
break;
case 'mercatox':
return @$aData['pairs']["{$strBase}_{$strQuote}"]['last'];
break;
case 'tradeogre':
return @$aData['price'];
break;
} }
} else { } else {
$this->setErrorMessage("Got an invalid response from ticker API"); $this->setErrorMessage("Got an invalid response from ticker API");

View File

@ -113,7 +113,7 @@ $config['gettingstarted']['stratumport'] = '3333';
* https://github.com/MPOS/php-mpos/wiki/Config-Setup#wiki-ticker-api * https://github.com/MPOS/php-mpos/wiki/Config-Setup#wiki-ticker-api
**/ **/
$config['price']['enabled'] = false; $config['price']['enabled'] = false;
$config['price']['url'] = 'https://btc-e.com'; $config['price']['url'] = 'https://btc-e.nz';
$config['price']['target'] = '/api/2/ltc_usd/ticker'; $config['price']['target'] = '/api/2/ltc_usd/ticker';
$config['price']['currency'] = 'USD'; $config['price']['currency'] = 'USD';