X-Git-Url: https://git.ao2.it/tweeper.git/blobdiff_plain/357d7a4955830d690a16d52a6f91e351c813ab48..dd6780c346c5252e3a778541c329e3ee9d6fecb9:/src/Tweeper.php diff --git a/src/Tweeper.php b/src/Tweeper.php index 4a32f56..de1f474 100644 --- a/src/Tweeper.php +++ b/src/Tweeper.php @@ -111,6 +111,17 @@ class Tweeper { } } while (curl_errno($ch) == CURLE_OPERATION_TIMEDOUT && ++$attempt < Tweeper::$maxConnectionRetries); + $response_code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE); + if (FALSE === $response_code) { + trigger_error(curl_error($ch), E_USER_WARNING); + return FALSE; + } + + if ($response_code >= 400) { + trigger_error("HTTP reponse code $response_code", E_USER_WARNING); + return FALSE; + } + return $ret; } @@ -309,6 +320,14 @@ class Tweeper { // remove it to silence an error message. unset($data["knobs"]); + // Stop here in case Instagram redirected to the login page, this can + // happen when too many consecutive requests have been made from the same + // IP. + if (array_key_exists("LoginAndSignupPage", $data["entry_data"])) { + trigger_error("Cannot open instagram page: redirected to Login page.\n", E_USER_WARNING); + return NULL; + } + $json = json_encode($data); return Tweeper::jsonToXml($json, 'instagram'); @@ -336,6 +355,9 @@ class Tweeper { $get_xml_host_method = 'getXml' . Tweeper::toUpperCamelCase($host, '.'); if (method_exists($this, $get_xml_host_method)) { $xml_data = call_user_func_array([$this, $get_xml_host_method], [$html]); + if (NULL === $xml_data) { + return NULL; + } $xmlDoc->loadXML($xml_data); } else {