From d9f254c65efa7f86ef37efe9e613a9183ea46d4c Mon Sep 17 00:00:00 2001 From: aaronsace Date: Fri, 19 Aug 2016 21:26:35 +0100 Subject: [PATCH 01/10] Add zpool.ca mining pool --- accounts.json | 3 +- src/ZPool.php | 85 ++++++++++++++++++++++++++++++++++++++++++++++ test/ZPoolTest.php | 57 +++++++++++++++++++++++++++++++ 3 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 src/ZPool.php create mode 100644 test/ZPoolTest.php diff --git a/accounts.json b/accounts.json index 94a7cf1..554a26c 100644 --- a/accounts.json +++ b/accounts.json @@ -50,5 +50,6 @@ "teamdoge": "\\Account\\MiningPool\\TeamDoge", "triplemining": "\\Account\\MiningPool\\TripleMining", "westhash": "\\Account\\MiningPool\\WestHash", - "ypool": "\\Account\\MiningPool\\YPool" + "ypool": "\\Account\\MiningPool\\YPool", + "zpool": "\\Account\\MiningPool\\ZPool" } diff --git a/src/ZPool.php b/src/ZPool.php new file mode 100644 index 0000000..b439fa4 --- /dev/null +++ b/src/ZPool.php @@ -0,0 +1,85 @@ + array( + 'title' => "API key", + 'regexp' => "#^.{20}$#" + ), + ); + } + + public function fetchSupportedCurrencies(CurrencyFactory $factory, Logger $logger) { + // there is no API call to list supported currencies + return array('btc'); + } + + public function fetchSupportedHashrateCurrencies(CurrencyFactory $factory, Logger $logger) { + return array(); + } + + public function fetchBalances($account, CurrencyFactory $factory, Logger $logger) { + + $result = array(); + + foreach ($this->fetchSupportedCurrencies($factory, $logger) as $cur) { + $abbr = strtoupper($cur); + $instance = $factory->loadCurrency($cur); + if ($instance != null) { + $abbr = $instance->getAbbr(); + } + + $url = "http://www.zpool.ca/api/wallet?address=" . urlencode($account['api_key']); + $json = $this->fetchJSON($url, $logger); + + if ($json['status_code'] < 0) { + switch ($json['status_code']) { + case -1: throw new AccountFetchException("Invalid key parameter length"); + case -2: throw new AccountFetchException("Missing key parameter"); + case -3: throw new AccountFetchException("Invalid key parameter"); + case -5: throw new AccountFetchException("Invalid coin type for '$abbr'"); + default: throw new AccountFetchException("API returned status code " . $json['status_code']); + } + } + + $result[$cur] = array( + 'confirmed' => $json['balance'], + 'unconfirmed' => $json['unsold'], + ); + } + + return $result; + + } + +} diff --git a/test/ZPoolTest.php b/test/ZPoolTest.php new file mode 100644 index 0000000..4b946a9 --- /dev/null +++ b/test/ZPoolTest.php @@ -0,0 +1,57 @@ + '1Q24z7gHPDbedkaWDTFqhMF8g7iHMehsCb', + ); + } + + /** + * Get some field values for a missing account, + * but one that is still valid according to the fields. + * @return array of fields + */ + function getMissingAccount() { + return array( + 'api_key' => '2Q24z7gHPDbedkaWDTFqhMF8g7iHMehsCb', + ); + } + + /** + * Get some invalid field values. + * @return array of fields + */ + function getInvalidAccount() { + return array( + 'api_key' => 'hello', + ); + } + + function doTestValidValues($balances) { + $this->assertEquals(0, $balances['btc']['confirmed']); + } + +} From 9a6afe9ac31d9f65b75c4e0d89650374851bcc5a Mon Sep 17 00:00:00 2001 From: aaronsace Date: Fri, 19 Aug 2016 23:19:39 +0100 Subject: [PATCH 02/10] Add ltcrabbit.com mining pool --- accounts.json | 1 + src/LTCRabbit.php | 81 ++++++++++++++++++++++++++++++++++++++++++ src/ZPool.php | 10 ------ test/LTCRabbitTest.php | 58 ++++++++++++++++++++++++++++++ test/ZPoolTest.php | 1 + 5 files changed, 141 insertions(+), 10 deletions(-) create mode 100644 src/LTCRabbit.php create mode 100644 test/LTCRabbitTest.php diff --git a/accounts.json b/accounts.json index 554a26c..30feb81 100644 --- a/accounts.json +++ b/accounts.json @@ -28,6 +28,7 @@ "liteguardian": "\\Account\\MiningPool\\LiteGuardian", "litepooleu": "\\Account\\MiningPool\\LitepoolEu", "ltcmineru": "\\Account\\MiningPool\\LTCMineRu", + "ltcrabbit": "\\Account\\MiningPool\\LTCRabbit", "miningforeman": "\\Account\\MiningPool\\MiningForemanLTC", "miningforeman_ftc": "\\Account\\MiningPool\\MiningForemanFTC", "miningpoolco": "\\Account\\MiningPool\\MiningPoolCo", diff --git a/src/LTCRabbit.php b/src/LTCRabbit.php new file mode 100644 index 0000000..1df276a --- /dev/null +++ b/src/LTCRabbit.php @@ -0,0 +1,81 @@ + array( + 'title' => "API key", + 'regexp' => "#^.{20}$#" + ), + ); + } + + public function fetchSupportedCurrencies(CurrencyFactory $factory, Logger $logger) { + // there is no API call to list supported currencies + return array('btc', 'ltc'); + } + + public function fetchSupportedHashrateCurrencies(CurrencyFactory $factory, Logger $logger) { + return array(); + } + + public function fetchBalances($account, CurrencyFactory $factory, Logger $logger) { + + $result = array(); + + foreach ($this->fetchSupportedCurrencies($factory, $logger) as $cur) { + $abbr = strtoupper($cur); + $instance = $factory->loadCurrency($cur); + if ($instance != null) { + $abbr = $instance->getAbbr(); + } + + $url = "https://www.ltcrabbit.com/index.php?page=api&action=getappdata&appname=openclerk&appversion=1&api_key=" . urlencode($account['api_key']); + $json = $this->fetchJSON($url, $logger); + + switch ($cur) { + case "btc": + $result[$cur] = array( + 'confirmed' => $json['getappdata']['user']['balance_btc'], + ); + case "ltc": + $result[$cur] = array( + 'confirmed' => $json['getappdata']['user']['balance'], + ); + } + } + + return $result; + + } + +} diff --git a/src/ZPool.php b/src/ZPool.php index b439fa4..18bb1b7 100644 --- a/src/ZPool.php +++ b/src/ZPool.php @@ -62,16 +62,6 @@ public function fetchBalances($account, CurrencyFactory $factory, Logger $logger $url = "http://www.zpool.ca/api/wallet?address=" . urlencode($account['api_key']); $json = $this->fetchJSON($url, $logger); - if ($json['status_code'] < 0) { - switch ($json['status_code']) { - case -1: throw new AccountFetchException("Invalid key parameter length"); - case -2: throw new AccountFetchException("Missing key parameter"); - case -3: throw new AccountFetchException("Invalid key parameter"); - case -5: throw new AccountFetchException("Invalid coin type for '$abbr'"); - default: throw new AccountFetchException("API returned status code " . $json['status_code']); - } - } - $result[$cur] = array( 'confirmed' => $json['balance'], 'unconfirmed' => $json['unsold'], diff --git a/test/LTCRabbitTest.php b/test/LTCRabbitTest.php new file mode 100644 index 0000000..ff1ea38 --- /dev/null +++ b/test/LTCRabbitTest.php @@ -0,0 +1,58 @@ + '7ca421ef0b4c700543a0ca6b020e415614ec5fa768483859d0eb56af015a06f2', + ); + } + + /** + * Get some field values for a missing account, + * but one that is still valid according to the fields. + * @return array of fields + */ + function getMissingAccount() { + return array( + 'api_key' => '8ca421ef0b4c700543a0ca6b020e415614ec5fa768483859d0eb56af015a06f2', + ); + } + + /** + * Get some invalid field values. + * @return array of fields + */ + function getInvalidAccount() { + return array( + 'api_key' => 'hello', + ); + } + + function doTestValidValues($balances) { + $this->assertEquals(0, $balances['btc']['confirmed']); + $this->assertEquals(0, $balances['ltc']['confirmed']); + } + +} diff --git a/test/ZPoolTest.php b/test/ZPoolTest.php index 4b946a9..5c722c5 100644 --- a/test/ZPoolTest.php +++ b/test/ZPoolTest.php @@ -52,6 +52,7 @@ function getInvalidAccount() { function doTestValidValues($balances) { $this->assertEquals(0, $balances['btc']['confirmed']); + $this->assertEquals(0, $balances['btc']['unconfirmed']); } } From fbd9738b3531a6f9338ce037f18319495ea214ca Mon Sep 17 00:00:00 2001 From: aaronsace Date: Fri, 19 Aug 2016 23:52:49 +0100 Subject: [PATCH 03/10] Add clevermining.com mining pool --- accounts.json | 1 + src/CleverRabbit.php | 77 +++++++++++++++++++++++++++++++++++++++ test/CleverMiningTest.php | 57 +++++++++++++++++++++++++++++ 3 files changed, 135 insertions(+) create mode 100644 src/CleverRabbit.php create mode 100644 test/CleverMiningTest.php diff --git a/accounts.json b/accounts.json index 30feb81..144061e 100644 --- a/accounts.json +++ b/accounts.json @@ -3,6 +3,7 @@ "beeeeer": "\\Account\\MiningPool\\Beeeeer", "bitminter": "\\Account\\MiningPool\\BitMinter", "btcguild": "\\Account\\MiningPool\\BTCGuild", + "clevermining": "\\Account\\MiningPool\\CleverMining", "coinhuntr": "\\Account\\MiningPool\\CoinHuntr", "cryptopools_dgc": "\\Account\\MiningPool\\CryptoPoolsDGC", "cryptotroll_doge": "\\Account\\MiningPool\\CryptoTrollDOGE", diff --git a/src/CleverRabbit.php b/src/CleverRabbit.php new file mode 100644 index 0000000..3ed35bc --- /dev/null +++ b/src/CleverRabbit.php @@ -0,0 +1,77 @@ + array( + 'title' => "API key", + 'regexp' => "#^.{20}$#" + ), + ); + } + + public function fetchSupportedCurrencies(CurrencyFactory $factory, Logger $logger) { + // there is no API call to list supported currencies + return array('btc'); + } + + public function fetchSupportedHashrateCurrencies(CurrencyFactory $factory, Logger $logger) { + return array(); + } + + public function fetchBalances($account, CurrencyFactory $factory, Logger $logger) { + + $result = array(); + + foreach ($this->fetchSupportedCurrencies($factory, $logger) as $cur) { + $abbr = strtoupper($cur); + $instance = $factory->loadCurrency($cur); + if ($instance != null) { + $abbr = $instance->getAbbr(); + } + + $url = "https://www.clevermining.com/api/v1/users/" . urlencode($account['api_key']); + $json = $this->fetchJSON($url, $logger); + + switch ($cur) { + case "btc": + $result[$cur] = array( + 'confirmed' => $json['general']['balance'], + ); + } + } + + return $result; + + } + +} diff --git a/test/CleverMiningTest.php b/test/CleverMiningTest.php new file mode 100644 index 0000000..982459e --- /dev/null +++ b/test/CleverMiningTest.php @@ -0,0 +1,57 @@ + '1Q24z7gHPDbedkaWDTFqhMF8g7iHMehsCb', + ); + } + + /** + * Get some field values for a missing account, + * but one that is still valid according to the fields. + * @return array of fields + */ + function getMissingAccount() { + return array( + 'api_key' => '2Q24z7gHPDbedkaWDTFqhMF8g7iHMehsCb', + ); + } + + /** + * Get some invalid field values. + * @return array of fields + */ + function getInvalidAccount() { + return array( + 'api_key' => 'hello', + ); + } + + function doTestValidValues($balances) { + $this->assertEquals(0, $balances['btc']['confirmed']); + } + +} From 7c2ff82ef0a3d234ccf4e8d380e59d5092691386 Mon Sep 17 00:00:00 2001 From: aaronsace Date: Wed, 24 Aug 2016 00:40:49 +0100 Subject: [PATCH 04/10] Fix --- src/{CleverRabbit.php => CleverMining.php} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{CleverRabbit.php => CleverMining.php} (100%) diff --git a/src/CleverRabbit.php b/src/CleverMining.php similarity index 100% rename from src/CleverRabbit.php rename to src/CleverMining.php From adec4e93ab3c89431c48233358017fce94bb6404 Mon Sep 17 00:00:00 2001 From: aaronsace Date: Fri, 2 Sep 2016 00:17:46 +0100 Subject: [PATCH 05/10] Improved nicehash.com mining pool Added balances that are not spent from orders. --- src/NiceHash.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/NiceHash.php b/src/NiceHash.php index 49dfff5..f0b7450 100644 --- a/src/NiceHash.php +++ b/src/NiceHash.php @@ -60,10 +60,20 @@ public function fetchBalances($account, CurrencyFactory $factory, Logger $logger throw new AccountFetchException($json['result']['error']); } + $unconfirmed = 0; + foreach (json_decode(@file_get_contents("https://www.nicehash.com/api?method=buy.info"))->{'result'}->{'algorithms'} as $algo) { + for ($location = 0; $location <= 1; $location++) { + foreach (json_decode(@file_get_contents("https://www.nicehash.com/api?method=orders.get&my&id=" . urlencode($account['api_id']) . "&key=" . urlencode($account['api_key']) . "&location=" . $location . "&algo=" . $algo->{'algo'}))->{'result'}->{'orders'} as $order) { + $unconfirmed += $order->{'btc_avail'}; + } + } + } + return array( 'btc' => array( 'confirmed' => $json['result']['balance_confirmed'], 'pending' => $json['result']['balance_pending'], + 'unconfirmed' => $unconfirmed, ), ); From e50fbd1b4ef539ea2c3d012be52a3eb671ee4948 Mon Sep 17 00:00:00 2001 From: aaronsace Date: Fri, 2 Sep 2016 12:10:07 +0100 Subject: [PATCH 06/10] Fix BTC was just a conversion of LTC therefore duplicating the balance. --- src/LTCRabbit.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/LTCRabbit.php b/src/LTCRabbit.php index 1df276a..f45e606 100644 --- a/src/LTCRabbit.php +++ b/src/LTCRabbit.php @@ -41,7 +41,7 @@ public function getFields() { public function fetchSupportedCurrencies(CurrencyFactory $factory, Logger $logger) { // there is no API call to list supported currencies - return array('btc', 'ltc'); + return array('ltc'); } public function fetchSupportedHashrateCurrencies(CurrencyFactory $factory, Logger $logger) { @@ -63,10 +63,6 @@ public function fetchBalances($account, CurrencyFactory $factory, Logger $logger $json = $this->fetchJSON($url, $logger); switch ($cur) { - case "btc": - $result[$cur] = array( - 'confirmed' => $json['getappdata']['user']['balance_btc'], - ); case "ltc": $result[$cur] = array( 'confirmed' => $json['getappdata']['user']['balance'], From 254ad74775b7fc8a6f9c7f99c8ec5ff253fcca1a Mon Sep 17 00:00:00 2001 From: aaronsace Date: Fri, 2 Sep 2016 13:05:09 +0100 Subject: [PATCH 07/10] Add miningpoolhub.com mining pool --- accounts.json | 1 + src/MiningPoolHub.php | 77 ++++++++++++++++++++++++++++++++++++++ test/LTCRabbitTest.php | 1 - test/MiningPoolHubTest.php | 58 ++++++++++++++++++++++++++++ 4 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 src/MiningPoolHub.php create mode 100644 test/MiningPoolHubTest.php diff --git a/accounts.json b/accounts.json index 144061e..771b513 100644 --- a/accounts.json +++ b/accounts.json @@ -33,6 +33,7 @@ "miningforeman": "\\Account\\MiningPool\\MiningForemanLTC", "miningforeman_ftc": "\\Account\\MiningPool\\MiningForemanFTC", "miningpoolco": "\\Account\\MiningPool\\MiningPoolCo", + "miningpoolhub": "\\Account\\MiningPool\\MiningPoolHub", "multipool": "\\Account\\MiningPool\\Multipool", "mupool": "\\Account\\MiningPool\\MuPool", "nicehash": "\\Account\\MiningPool\\NiceHash", diff --git a/src/MiningPoolHub.php b/src/MiningPoolHub.php new file mode 100644 index 0000000..b69db90 --- /dev/null +++ b/src/MiningPoolHub.php @@ -0,0 +1,77 @@ + array( + 'title' => "API key", + 'regexp' => "#^.{20}$#" + ), + ); + } + + public function fetchSupportedCurrencies(CurrencyFactory $factory, Logger $logger) { + // there is no API call to list supported currencies + return array('btc'); // need to add Adzcoin, Aricoin, Checkcoin, Crevacoin, Dash, Digibyte (Groestl), Digibyte (Qubit), Digibyte (Skein), Digitalcoin (X11), Ethereum, Ethereum-Classic, Execoin, Fractalcoin, Feathercoin, Geocoin, Givecoin, Globalboosty, Granite, Groestlcoin, Influx, Litecoin, Maxcoin, Monetaryunit, Myriadcoin (Groestl), Myriadcoin (Qubit), Myriadcoin (Skein), Netcoin, Phoenixcoin, Potcoin, Quark, Securecoin, Sexcoin, Siacoin, Smartcoin, Solarcoin, Startcoin, Ufocoin, Uro, Vcash, Vertcoin and Verge (Scrypt) + } + + public function fetchSupportedHashrateCurrencies(CurrencyFactory $factory, Logger $logger) { + return array(); + } + + public function fetchBalances($account, CurrencyFactory $factory, Logger $logger) { + + $result = array(); + + foreach ($this->fetchSupportedCurrencies($factory, $logger) as $cur) { + $abbr = strtoupper($cur); + $instance = $factory->loadCurrency($cur); + if ($instance != null) { + $abbr = $instance->getAbbr(); + } + + switch ($cur) { + case "btc": + $url = "http://bitcoin.miningpoolhub.com/index.php?page=api&action=getuserbalance&api_key=" . urlencode($account['api_key']) . "&id=" . urlencode($account['api_id']); + $json = $this->fetchJSON($url, $logger); + $result[$cur] = array( + 'confirmed' => $json['getuserbalance']['data']['confirmed'], + 'unconfirmed' => $json['getuserbalance']['data']['unconfirmed'], + ); + } + } + + return $result; + + } + +} diff --git a/test/LTCRabbitTest.php b/test/LTCRabbitTest.php index ff1ea38..1e44749 100644 --- a/test/LTCRabbitTest.php +++ b/test/LTCRabbitTest.php @@ -51,7 +51,6 @@ function getInvalidAccount() { } function doTestValidValues($balances) { - $this->assertEquals(0, $balances['btc']['confirmed']); $this->assertEquals(0, $balances['ltc']['confirmed']); } diff --git a/test/MiningPoolHubTest.php b/test/MiningPoolHubTest.php new file mode 100644 index 0000000..dd30d01 --- /dev/null +++ b/test/MiningPoolHubTest.php @@ -0,0 +1,58 @@ + '3f92996d71ca91be5bf5cee9f332fa6b06d428d038b5be41c6ece066eaaf83ff', + ); + } + + /** + * Get some field values for a missing account, + * but one that is still valid according to the fields. + * @return array of fields + */ + function getMissingAccount() { + return array( + 'api_key' => '4f92996d71ca91be5bf5cee9f332fa6b06d428d038b5be41c6ece066eaaf83ff', + ); + } + + /** + * Get some invalid field values. + * @return array of fields + */ + function getInvalidAccount() { + return array( + 'api_key' => 'hello', + ); + } + + function doTestValidValues($balances) { + $this->assertEquals(0, $balances['btc']['confirmed']); + $this->assertEquals(0, $balances['btc']['unconfirmed']); + } + +} From bfcbd4e18687956c2b418dad570635628851e7be Mon Sep 17 00:00:00 2001 From: aaronsace Date: Fri, 2 Sep 2016 23:26:43 +0100 Subject: [PATCH 08/10] Improved miningpoolhub.com mining pool Added litecoin --- src/MiningPoolHub.php | 13 ++++++++++++- test/MiningPoolHubTest.php | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/MiningPoolHub.php b/src/MiningPoolHub.php index b69db90..fb801e0 100644 --- a/src/MiningPoolHub.php +++ b/src/MiningPoolHub.php @@ -32,6 +32,10 @@ public function getURL() { public function getFields() { return array( + 'api_id' => array( + 'title' => "API ID", + 'regexp' => "#^[0-9]+$#", + ), 'api_key' => array( 'title' => "API key", 'regexp' => "#^.{20}$#" @@ -41,7 +45,7 @@ public function getFields() { public function fetchSupportedCurrencies(CurrencyFactory $factory, Logger $logger) { // there is no API call to list supported currencies - return array('btc'); // need to add Adzcoin, Aricoin, Checkcoin, Crevacoin, Dash, Digibyte (Groestl), Digibyte (Qubit), Digibyte (Skein), Digitalcoin (X11), Ethereum, Ethereum-Classic, Execoin, Fractalcoin, Feathercoin, Geocoin, Givecoin, Globalboosty, Granite, Groestlcoin, Influx, Litecoin, Maxcoin, Monetaryunit, Myriadcoin (Groestl), Myriadcoin (Qubit), Myriadcoin (Skein), Netcoin, Phoenixcoin, Potcoin, Quark, Securecoin, Sexcoin, Siacoin, Smartcoin, Solarcoin, Startcoin, Ufocoin, Uro, Vcash, Vertcoin and Verge (Scrypt) + return array('btc','ltc'); // need to add Adzcoin, Aricoin, Checkcoin, Crevacoin, Dash, Digibyte (Groestl), Digibyte (Qubit), Digibyte (Skein), Digitalcoin (X11), Ethereum, Ethereum-Classic, Execoin, Fractalcoin, Feathercoin, Geocoin, Givecoin, Globalboosty, Granite, Groestlcoin, Influx, Maxcoin, Monetaryunit, Myriadcoin (Groestl), Myriadcoin (Qubit), Myriadcoin (Skein), Netcoin, Phoenixcoin, Potcoin, Quark, Securecoin, Sexcoin, Siacoin, Smartcoin, Solarcoin, Startcoin, Ufocoin, Uro, Vcash, Vertcoin and Verge (Scrypt) } public function fetchSupportedHashrateCurrencies(CurrencyFactory $factory, Logger $logger) { @@ -67,6 +71,13 @@ public function fetchBalances($account, CurrencyFactory $factory, Logger $logger 'confirmed' => $json['getuserbalance']['data']['confirmed'], 'unconfirmed' => $json['getuserbalance']['data']['unconfirmed'], ); + case "ltc": + $url = "http://litecoin.miningpoolhub.com/index.php?page=api&action=getuserbalance&api_key=" . urlencode($account['api_key']) . "&id=" . urlencode($account['api_id']); + $json = $this->fetchJSON($url, $logger); + $result[$cur] = array( + 'confirmed' => $json['getuserbalance']['data']['confirmed'], + 'unconfirmed' => $json['getuserbalance']['data']['unconfirmed'], + ); } } diff --git a/test/MiningPoolHubTest.php b/test/MiningPoolHubTest.php index dd30d01..7126768 100644 --- a/test/MiningPoolHubTest.php +++ b/test/MiningPoolHubTest.php @@ -53,6 +53,8 @@ function getInvalidAccount() { function doTestValidValues($balances) { $this->assertEquals(0, $balances['btc']['confirmed']); $this->assertEquals(0, $balances['btc']['unconfirmed']); + $this->assertEquals(0, $balances['ltc']['confirmed']); + $this->assertEquals(0, $balances['ltc']['unconfirmed']); } } From 5cf4f8e8ac19dd910976a85765d651bf088f3cd7 Mon Sep 17 00:00:00 2001 From: aaronsace Date: Sun, 4 Sep 2016 20:56:31 +0100 Subject: [PATCH 09/10] Improved miningpoolhub.com mining pool --- src/MiningPoolHub.php | 33 ++++++++++++++++++++------------- test/MiningPoolHubTest.php | 8 ++++++++ 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/MiningPoolHub.php b/src/MiningPoolHub.php index fb801e0..1537165 100644 --- a/src/MiningPoolHub.php +++ b/src/MiningPoolHub.php @@ -45,7 +45,7 @@ public function getFields() { public function fetchSupportedCurrencies(CurrencyFactory $factory, Logger $logger) { // there is no API call to list supported currencies - return array('btc','ltc'); // need to add Adzcoin, Aricoin, Checkcoin, Crevacoin, Dash, Digibyte (Groestl), Digibyte (Qubit), Digibyte (Skein), Digitalcoin (X11), Ethereum, Ethereum-Classic, Execoin, Fractalcoin, Feathercoin, Geocoin, Givecoin, Globalboosty, Granite, Groestlcoin, Influx, Maxcoin, Monetaryunit, Myriadcoin (Groestl), Myriadcoin (Qubit), Myriadcoin (Skein), Netcoin, Phoenixcoin, Potcoin, Quark, Securecoin, Sexcoin, Siacoin, Smartcoin, Solarcoin, Startcoin, Ufocoin, Uro, Vcash, Vertcoin and Verge (Scrypt) + return array('btc','dgc','ftc','ltc','net','vtc'); // need to add Adzcoin, Aricoin, Checkcoin, Crevacoin, Dash, Digibyte (Groestl), Digibyte (Qubit), Digibyte (Skein), Ethereum, Ethereum-Classic, Execoin, Fractalcoin, Geocoin, Givecoin, Globalboosty, Granite, Groestlcoin, Influx, Maxcoin, Monetaryunit, Myriadcoin (Groestl), Myriadcoin (Qubit), Myriadcoin (Skein), Phoenixcoin, Potcoin, Quark, Securecoin, Sexcoin, Siacoin, Smartcoin, Solarcoin, Startcoin, Ufocoin, Uro, Vcash and Verge (Scrypt) } public function fetchSupportedHashrateCurrencies(CurrencyFactory $factory, Logger $logger) { @@ -63,22 +63,29 @@ public function fetchBalances($account, CurrencyFactory $factory, Logger $logger $abbr = $instance->getAbbr(); } + $pool = ""; + switch ($cur) { case "btc": - $url = "http://bitcoin.miningpoolhub.com/index.php?page=api&action=getuserbalance&api_key=" . urlencode($account['api_key']) . "&id=" . urlencode($account['api_id']); - $json = $this->fetchJSON($url, $logger); - $result[$cur] = array( - 'confirmed' => $json['getuserbalance']['data']['confirmed'], - 'unconfirmed' => $json['getuserbalance']['data']['unconfirmed'], - ); + $pool = "bitcoin"; + case "dgc": + $pool = "digitalcoin"; + case "ftc": + $pool = "feathercoin"; case "ltc": - $url = "http://litecoin.miningpoolhub.com/index.php?page=api&action=getuserbalance&api_key=" . urlencode($account['api_key']) . "&id=" . urlencode($account['api_id']); - $json = $this->fetchJSON($url, $logger); - $result[$cur] = array( - 'confirmed' => $json['getuserbalance']['data']['confirmed'], - 'unconfirmed' => $json['getuserbalance']['data']['unconfirmed'], - ); + $pool = "litecoin"; + case "net": + $pool = "netcoin"; + case "vtc": + $pool = "vertcoin"; } + + $url = "http://" . $pool . ".miningpoolhub.com/index.php?page=api&action=getdashboarddata&api_key=" . urlencode($account['api_key']) . "&id=" . urlencode($account['api_id']); + $json = $this->fetchJSON($url, $logger)->{'getdashboarddata'}; + $result[$cur] = array( + 'confirmed' => ($json['data']['balance']['confirmed'] + $json['data']['balance_for_auto_exchange']['confirmed']), + 'unconfirmed' => ($json['data']['balance']['unconfirmed'] + $json['data']['balance_for_auto_exchange']['unconfirmed']), + ); } return $result; diff --git a/test/MiningPoolHubTest.php b/test/MiningPoolHubTest.php index 7126768..8afb8d1 100644 --- a/test/MiningPoolHubTest.php +++ b/test/MiningPoolHubTest.php @@ -53,8 +53,16 @@ function getInvalidAccount() { function doTestValidValues($balances) { $this->assertEquals(0, $balances['btc']['confirmed']); $this->assertEquals(0, $balances['btc']['unconfirmed']); + $this->assertEquals(0, $balances['dgc']['confirmed']); + $this->assertEquals(0, $balances['dgc']['unconfirmed']); + $this->assertEquals(0, $balances['ftc']['confirmed']); + $this->assertEquals(0, $balances['ftc']['unconfirmed']); $this->assertEquals(0, $balances['ltc']['confirmed']); $this->assertEquals(0, $balances['ltc']['unconfirmed']); + $this->assertEquals(0, $balances['net']['confirmed']); + $this->assertEquals(0, $balances['net']['unconfirmed']); + $this->assertEquals(0, $balances['vtc']['confirmed']); + $this->assertEquals(0, $balances['vtc']['unconfirmed']); } } From ce96cb66d2b5bc84c4408c9fff54d58fd13b62ce Mon Sep 17 00:00:00 2001 From: aaronsace Date: Sun, 27 Nov 2016 15:16:18 +0000 Subject: [PATCH 10/10] Improved miningpoolhub.com mining pool Added all balances as BTC using MiningPoolHub auto exchange values. --- src/MiningPoolHub.php | 55 +++++++++++++++----------------------- test/MiningPoolHubTest.php | 11 +------- 2 files changed, 22 insertions(+), 44 deletions(-) diff --git a/src/MiningPoolHub.php b/src/MiningPoolHub.php index 1537165..3988135 100644 --- a/src/MiningPoolHub.php +++ b/src/MiningPoolHub.php @@ -45,7 +45,7 @@ public function getFields() { public function fetchSupportedCurrencies(CurrencyFactory $factory, Logger $logger) { // there is no API call to list supported currencies - return array('btc','dgc','ftc','ltc','net','vtc'); // need to add Adzcoin, Aricoin, Checkcoin, Crevacoin, Dash, Digibyte (Groestl), Digibyte (Qubit), Digibyte (Skein), Ethereum, Ethereum-Classic, Execoin, Fractalcoin, Geocoin, Givecoin, Globalboosty, Granite, Groestlcoin, Influx, Maxcoin, Monetaryunit, Myriadcoin (Groestl), Myriadcoin (Qubit), Myriadcoin (Skein), Phoenixcoin, Potcoin, Quark, Securecoin, Sexcoin, Siacoin, Smartcoin, Solarcoin, Startcoin, Ufocoin, Uro, Vcash and Verge (Scrypt) + return array('btc'); // all converted to BTC } public function fetchSupportedHashrateCurrencies(CurrencyFactory $factory, Logger $logger) { @@ -54,41 +54,28 @@ public function fetchSupportedHashrateCurrencies(CurrencyFactory $factory, Logge public function fetchBalances($account, CurrencyFactory $factory, Logger $logger) { - $result = array(); - - foreach ($this->fetchSupportedCurrencies($factory, $logger) as $cur) { - $abbr = strtoupper($cur); - $instance = $factory->loadCurrency($cur); - if ($instance != null) { - $abbr = $instance->getAbbr(); - } - - $pool = ""; - - switch ($cur) { - case "btc": - $pool = "bitcoin"; - case "dgc": - $pool = "digitalcoin"; - case "ftc": - $pool = "feathercoin"; - case "ltc": - $pool = "litecoin"; - case "net": - $pool = "netcoin"; - case "vtc": - $pool = "vertcoin"; - } - - $url = "http://" . $pool . ".miningpoolhub.com/index.php?page=api&action=getdashboarddata&api_key=" . urlencode($account['api_key']) . "&id=" . urlencode($account['api_id']); - $json = $this->fetchJSON($url, $logger)->{'getdashboarddata'}; - $result[$cur] = array( - 'confirmed' => ($json['data']['balance']['confirmed'] + $json['data']['balance_for_auto_exchange']['confirmed']), - 'unconfirmed' => ($json['data']['balance']['unconfirmed'] + $json['data']['balance_for_auto_exchange']['unconfirmed']), - ); + $confirmed = 0; + $pending = 0; + $unconfirmed = 0; + + foreach (json_decode(@file_get_contents("http://miningpoolhub.com/index.php?page=api&action=getminingandprofitsstatistics"))->{'return'} as $coin) { + $url = "http://" . $coin->{'coin_name'} . ".miningpoolhub.com/index.php?page=api&action=getdashboarddata&api_key=" . urlencode($account['api_key']) . "&id=" . urlencode($account['api_id']); + $json = @file_get_contents($url); + $data = json_decode($json)->{'getdashboarddata'}->{'data'}; + $confirmed += ((float)$data->{'balance'}->{'confirmed'} + (float)$data->{'balance_for_auto_exchange'}->{'confirmed'}) * (float)$coin->{'highest_buy_price'}; + $pending += (float)$data->{'balance_on_exchange'} * (float)$coin->{'highest_buy_price'}; + $unconfirmed += ((float)$data->{'balance'}->{'unconfirmed'} + (float)$data->{'balance_for_auto_exchange'}->{'unconfirmed'}) * (float)$coin->{'highest_buy_price'}; } - return $result; + return array( + 'btc' => array( + 'confirmed' => $confirmed, + 'pending' => $pending, + 'unconfirmed' => $unconfirmed, + ), + ); + + $result = array(); } diff --git a/test/MiningPoolHubTest.php b/test/MiningPoolHubTest.php index 8afb8d1..3ba865e 100644 --- a/test/MiningPoolHubTest.php +++ b/test/MiningPoolHubTest.php @@ -52,17 +52,8 @@ function getInvalidAccount() { function doTestValidValues($balances) { $this->assertEquals(0, $balances['btc']['confirmed']); + $this->assertEquals(0, $balances['btc']['pending']); $this->assertEquals(0, $balances['btc']['unconfirmed']); - $this->assertEquals(0, $balances['dgc']['confirmed']); - $this->assertEquals(0, $balances['dgc']['unconfirmed']); - $this->assertEquals(0, $balances['ftc']['confirmed']); - $this->assertEquals(0, $balances['ftc']['unconfirmed']); - $this->assertEquals(0, $balances['ltc']['confirmed']); - $this->assertEquals(0, $balances['ltc']['unconfirmed']); - $this->assertEquals(0, $balances['net']['confirmed']); - $this->assertEquals(0, $balances['net']['unconfirmed']); - $this->assertEquals(0, $balances['vtc']['confirmed']); - $this->assertEquals(0, $balances['vtc']['unconfirmed']); } }