Make "HTTPRequest::post" dynamic

This commit is contained in:
nupplaPhil 2020-03-04 22:18:28 +01:00 committed by Hypolite Petovan
parent 2973ed6448
commit 8793096c16
10 changed files with 25 additions and 33 deletions

View file

@ -42,7 +42,6 @@ use Friendica\Model\Contact;
use Friendica\Model\Group; use Friendica\Model\Group;
use Friendica\Model\Notify\Type; use Friendica\Model\Notify\Type;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Network\HTTPRequest;
use Friendica\Protocol\Activity; use Friendica\Protocol\Activity;
use Friendica\Util\Crypto; use Friendica\Util\Crypto;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
@ -224,7 +223,7 @@ function dfrn_confirm_post(App $a, $handsfree = null)
* *
*/ */
$res = HTTPRequest::post($dfrn_confirm, $params, [], 120)->getBody(); $res = DI::httpRequest()->post($dfrn_confirm, $params, [], 120)->getBody();
Logger::log(' Confirm: received data: ' . $res, Logger::DATA); Logger::log(' Confirm: received data: ' . $res, Logger::DATA);

View file

@ -507,7 +507,7 @@ function dfrn_poll_content(App $a)
. '&sec=' . $sec . '&sec=' . $sec
); );
} else { } else {
$s = HTTPRequest::post($r[0]['poll'], [ $s = DI::httpRequest()->post($r[0]['poll'], [
'dfrn_id' => $encrypted_id, 'dfrn_id' => $encrypted_id,
'type' => 'profile-check', 'type' => 'profile-check',
'dfrn_version' => DFRN_PROTOCOL_VERSION, 'dfrn_version' => DFRN_PROTOCOL_VERSION,

View file

@ -27,7 +27,6 @@ use Friendica\Database\DBA;
use Friendica\DI; use Friendica\DI;
use Friendica\Model\Contact; use Friendica\Model\Contact;
use Friendica\Model\Profile; use Friendica\Model\Profile;
use Friendica\Network\HTTPRequest;
use Friendica\Util\Proxy as ProxyUtils; use Friendica\Util\Proxy as ProxyUtils;
/** /**
@ -76,7 +75,7 @@ function match_content(App $a)
$host = DI::baseUrl(); $host = DI::baseUrl();
} }
$msearch_json = HTTPRequest::post($host . '/msearch', $params)->getBody(); $msearch_json = DI::httpRequest()->post($host . '/msearch', $params)->getBody();
$msearch = json_decode($msearch_json); $msearch = json_decode($msearch_json);

View file

@ -25,7 +25,6 @@ use Friendica\App;
use Friendica\Core\Config\IConfig; use Friendica\Core\Config\IConfig;
use Friendica\Core\Logger; use Friendica\Core\Logger;
use Friendica\Core\System; use Friendica\Core\System;
use Friendica\DI;
use Friendica\Util\Network; use Friendica\Util\Network;
use Friendica\Util\Profiler; use Friendica\Util\Profiler;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
@ -228,23 +227,22 @@ class HTTPRequest
* @return CurlResult The content * @return CurlResult The content
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/ */
public static function post(string $url, $params, array $headers = [], int $timeout = 0, int &$redirects = 0) public function post(string $url, $params, array $headers = [], int $timeout = 0, int &$redirects = 0)
{ {
$stamp1 = microtime(true); $stamp1 = microtime(true);
if (Network::isUrlBlocked($url)) { if (Network::isUrlBlocked($url)) {
Logger::log('post_url: domain of ' . $url . ' is blocked', Logger::DATA); $this->logger->info('Domain is blocked.'. ['url' => $url]);
return CurlResult::createErrorCurl($url); return CurlResult::createErrorCurl($url);
} }
$a = DI::app();
$ch = curl_init($url); $ch = curl_init($url);
if (($redirects > 8) || (!$ch)) { if (($redirects > 8) || (!$ch)) {
return CurlResult::createErrorCurl($url); return CurlResult::createErrorCurl($url);
} }
Logger::log('post_url: start ' . $url, Logger::DATA); $this->logger->debug('Post_url: start.', ['url' => $url]);
curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
@ -252,14 +250,14 @@ class HTTPRequest
curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_USERAGENT, $a->getUserAgent()); curl_setopt($ch, CURLOPT_USERAGENT, $a->getUserAgent());
if (DI::config()->get('system', 'ipv4_resolve', false)) { if ($this->config->get('system', 'ipv4_resolve', false)) {
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
} }
if (intval($timeout)) { if (intval($timeout)) {
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
} else { } else {
$curl_time = DI::config()->get('system', 'curl_timeout', 60); $curl_time = $this->config->get('system', 'curl_timeout', 60);
curl_setopt($ch, CURLOPT_TIMEOUT, intval($curl_time)); curl_setopt($ch, CURLOPT_TIMEOUT, intval($curl_time));
} }
@ -267,20 +265,20 @@ class HTTPRequest
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
} }
$check_cert = DI::config()->get('system', 'verifyssl'); $check_cert = $this->config->get('system', 'verifyssl');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, (($check_cert) ? true : false)); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, (($check_cert) ? true : false));
if ($check_cert) { if ($check_cert) {
@curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); @curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
} }
$proxy = DI::config()->get('system', 'proxy'); $proxy = $this->config->get('system', 'proxy');
if (strlen($proxy)) { if (!empty($proxy)) {
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_PROXY, $proxy);
$proxyuser = DI::config()->get('system', 'proxyuser'); $proxyuser = $this->config->get('system', 'proxyuser');
if (strlen($proxyuser)) { if (!empty($proxyuser)) {
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyuser); curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyuser);
} }
} }
@ -296,14 +294,14 @@ class HTTPRequest
if ($curlResponse->isRedirectUrl()) { if ($curlResponse->isRedirectUrl()) {
$redirects++; $redirects++;
Logger::log('post_url: redirect ' . $url . ' to ' . $curlResponse->getRedirectUrl()); $this->logger->info('Post redirect.', ['url' => $url, 'to' => $curlResponse->getRedirectUrl()]);
curl_close($ch); curl_close($ch);
return self::post($curlResponse->getRedirectUrl(), $params, $headers, $redirects, $timeout); return self::post($curlResponse->getRedirectUrl(), $params, $headers, $redirects, $timeout);
} }
curl_close($ch); curl_close($ch);
DI::profiler()->saveTimestamp($stamp1, 'network', System::callstack()); $this->profiler->saveTimestamp($stamp1, 'network', System::callstack());
// Very old versions of Lighttpd don't like the "Expect" header, so we remove it when needed // Very old versions of Lighttpd don't like the "Expect" header, so we remove it when needed
if ($curlResponse->getReturnCode() == 417) { if ($curlResponse->getReturnCode() == 417) {

View file

@ -43,7 +43,6 @@ use Friendica\Model\Post\Category;
use Friendica\Model\Profile; use Friendica\Model\Profile;
use Friendica\Model\Tag; use Friendica\Model\Tag;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Network\HTTPRequest;
use Friendica\Network\Probe; use Friendica\Network\Probe;
use Friendica\Util\Crypto; use Friendica\Util\Crypto;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
@ -1344,7 +1343,7 @@ class DFRN
Logger::debug('dfrn_deliver', ['post' => $postvars]); Logger::debug('dfrn_deliver', ['post' => $postvars]);
$postResult = HTTPRequest::post($contact['notify'], $postvars); $postResult = DI::httpRequest()->post($contact['notify'], $postvars);
$xml = $postResult->getBody(); $xml = $postResult->getBody();
@ -1441,7 +1440,7 @@ class DFRN
$content_type = ($public_batch ? "application/magic-envelope+xml" : "application/json"); $content_type = ($public_batch ? "application/magic-envelope+xml" : "application/json");
$postResult = HTTPRequest::post($dest_url, $envelope, ["Content-Type: " . $content_type]); $postResult = DI::httpRequest()->post($dest_url, $envelope, ["Content-Type: " . $content_type]);
$xml = $postResult->getBody(); $xml = $postResult->getBody();
$curl_stat = $postResult->getReturnCode(); $curl_stat = $postResult->getReturnCode();

View file

@ -3261,7 +3261,7 @@ class Diaspora
if (!intval(DI::config()->get("system", "diaspora_test"))) { if (!intval(DI::config()->get("system", "diaspora_test"))) {
$content_type = (($public_batch) ? "application/magic-envelope+xml" : "application/json"); $content_type = (($public_batch) ? "application/magic-envelope+xml" : "application/json");
$postResult = HTTPRequest::post($dest_url . "/", $envelope, ["Content-Type: " . $content_type]); $postResult = DI::httpRequest()->post($dest_url . "/", $envelope, ["Content-Type: " . $content_type]);
$return_code = $postResult->getReturnCode(); $return_code = $postResult->getReturnCode();
} else { } else {
Logger::log("test_mode"); Logger::log("test_mode");

View file

@ -155,7 +155,7 @@ class Salmon
$salmon = XML::fromArray($xmldata, $xml, false, $namespaces); $salmon = XML::fromArray($xmldata, $xml, false, $namespaces);
// slap them // slap them
$postResult = HTTPRequest::post($url, $salmon, [ $postResult = DI::httpRequest()->post($url, $salmon, [
'Content-type: application/magic-envelope+xml', 'Content-type: application/magic-envelope+xml',
'Content-length: ' . strlen($salmon) 'Content-length: ' . strlen($salmon)
]); ]);
@ -180,7 +180,7 @@ class Salmon
$salmon = XML::fromArray($xmldata, $xml, false, $namespaces); $salmon = XML::fromArray($xmldata, $xml, false, $namespaces);
// slap them // slap them
$postResult = HTTPRequest::post($url, $salmon, [ $postResult = DI::httpRequest()->post($url, $salmon, [
'Content-type: application/magic-envelope+xml', 'Content-type: application/magic-envelope+xml',
'Content-length: ' . strlen($salmon) 'Content-length: ' . strlen($salmon)
]); ]);
@ -203,7 +203,7 @@ class Salmon
$salmon = XML::fromArray($xmldata, $xml, false, $namespaces); $salmon = XML::fromArray($xmldata, $xml, false, $namespaces);
// slap them // slap them
$postResult = HTTPRequest::post($url, $salmon, [ $postResult = DI::httpRequest()->post($url, $salmon, [
'Content-type: application/magic-envelope+xml', 'Content-type: application/magic-envelope+xml',
'Content-length: ' . strlen($salmon)]); 'Content-length: ' . strlen($salmon)]);
$return_code = $postResult->getReturnCode(); $return_code = $postResult->getReturnCode();

View file

@ -26,7 +26,6 @@ use Friendica\Database\DBA;
use Friendica\DI; use Friendica\DI;
use Friendica\Model\APContact; use Friendica\Model\APContact;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Network\HTTPRequest;
/** /**
* Implements HTTP Signatures per draft-cavage-http-signatures-07. * Implements HTTP Signatures per draft-cavage-http-signatures-07.
@ -298,7 +297,7 @@ class HTTPSignature
$headers[] = 'Content-Type: application/activity+json'; $headers[] = 'Content-Type: application/activity+json';
$postResult = HTTPRequest::post($target, $content, $headers); $postResult = DI::httpRequest()->post($target, $content, $headers);
$return_code = $postResult->getReturnCode(); $return_code = $postResult->getReturnCode();
Logger::log('Transmit to ' . $target . ' returned ' . $return_code, Logger::DEBUG); Logger::log('Transmit to ' . $target . ' returned ' . $return_code, Logger::DEBUG);

View file

@ -28,7 +28,6 @@ use Friendica\DI;
use Friendica\Model\Contact; use Friendica\Model\Contact;
use Friendica\Model\Item; use Friendica\Model\Item;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Network\HTTPRequest;
use Friendica\Protocol\Activity; use Friendica\Protocol\Activity;
use Friendica\Protocol\ActivityPub; use Friendica\Protocol\ActivityPub;
use Friendica\Protocol\Email; use Friendica\Protocol\Email;
@ -405,7 +404,7 @@ class OnePoll
$postvars['dfrn_version'] = DFRN_PROTOCOL_VERSION; $postvars['dfrn_version'] = DFRN_PROTOCOL_VERSION;
$postvars['perm'] = 'rw'; $postvars['perm'] = 'rw';
return HTTPRequest::post($contact['poll'], $postvars)->getBody(); return DI::httpRequest()->post($contact['poll'], $postvars)->getBody();
} }
/** /**
@ -756,7 +755,7 @@ class OnePoll
DBA::update('contact', ['hub-verify' => $verify_token], ['id' => $contact['id']]); DBA::update('contact', ['hub-verify' => $verify_token], ['id' => $contact['id']]);
} }
$postResult = HTTPRequest::post($url, $params); $postResult = DI::httpRequest()->post($url, $params);
Logger::log('subscribe_to_hub: returns: ' . $postResult->getReturnCode(), Logger::DEBUG); Logger::log('subscribe_to_hub: returns: ' . $postResult->getReturnCode(), Logger::DEBUG);

View file

@ -25,7 +25,6 @@ use Friendica\Core\Logger;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\DI; use Friendica\DI;
use Friendica\Model\PushSubscriber; use Friendica\Model\PushSubscriber;
use Friendica\Network\HTTPRequest;
use Friendica\Protocol\OStatus; use Friendica\Protocol\OStatus;
class PubSubPublish class PubSubPublish
@ -68,7 +67,7 @@ class PubSubPublish
Logger::log('POST ' . print_r($headers, true) . "\n" . $params, Logger::DATA); Logger::log('POST ' . print_r($headers, true) . "\n" . $params, Logger::DATA);
$postResult = HTTPRequest::post($subscriber['callback_url'], $params, $headers); $postResult = DI::httpRequest()->post($subscriber['callback_url'], $params, $headers);
$ret = $postResult->getReturnCode(); $ret = $postResult->getReturnCode();
if ($ret >= 200 && $ret <= 299) { if ($ret >= 200 && $ret <= 299) {