summaryrefslogtreecommitdiff
path: root/_test/tests/inc/httpclient_mock.php
diff options
context:
space:
mode:
authorGerry Weißbach <gerry.w@gammaproduction.de>2014-07-16 08:02:34 +0200
committerGerry Weißbach <gerry.w@gammaproduction.de>2014-07-16 08:02:34 +0200
commit0bd5b90b4c1294b3c9abc1977060f971dc2e2744 (patch)
treeac79a7402ffef718685f16dbba6692a0c9b5f458 /_test/tests/inc/httpclient_mock.php
parent1858e4d7685782550789fd8c228e55ae319bc37a (diff)
parent80679bafa1a5ed611bafc603afd0ae7b2b5954a7 (diff)
downloadrpg-0bd5b90b4c1294b3c9abc1977060f971dc2e2744.tar.gz
rpg-0bd5b90b4c1294b3c9abc1977060f971dc2e2744.tar.bz2
Merge remote-tracking branch 'splitbrain/master'
Diffstat (limited to '_test/tests/inc/httpclient_mock.php')
-rw-r--r--_test/tests/inc/httpclient_mock.php46
1 files changed, 46 insertions, 0 deletions
diff --git a/_test/tests/inc/httpclient_mock.php b/_test/tests/inc/httpclient_mock.php
new file mode 100644
index 000000000..038045c8b
--- /dev/null
+++ b/_test/tests/inc/httpclient_mock.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Class HTTPMockClient
+ *
+ * Does not really mock the client, it still does real connections but will retry failed connections
+ * to work around shaky connectivity.
+ */
+class HTTPMockClient extends HTTPClient {
+ protected $tries;
+
+ /**
+ * Sets shorter timeout
+ */
+ function __construct() {
+ parent::__construct();
+ $this->timeout = 8; // slightly faster timeouts
+ }
+
+ /**
+ * Returns true if the connection timed out
+ *
+ * @return bool
+ */
+ function noconnection() {
+ return ($this->tries === 0);
+ }
+
+ /**
+ * Retries sending the request multiple times
+ *
+ * @param string $url
+ * @param string $data
+ * @param string $method
+ * @return bool
+ */
+ function sendRequest($url, $data = '', $method = 'GET') {
+ $this->tries = 2; // configures the number of retries
+ $return = false;
+ while($this->tries) {
+ $return = parent::sendRequest($url, $data, $method);
+ if($this->status != -100) break;
+ $this->tries--;
+ }
+ return $return;
+ }
+} \ No newline at end of file