<?php
/**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2021, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
namespace Friendica\Network;
use Friendica\Core\Logger;
+use Friendica\Core\System;
use Friendica\Network\HTTPException\InternalServerErrorException;
use Friendica\Util\Network;
/**
* A content class for Curl call results
*/
-class CurlResult
+class CurlResult implements IHTTPResult
{
/**
* @var int HTTP return code or 0 if timeout or failure
*
* @param string $url optional URL
*
- * @return CurlResult a CURL with error response
+ * @return IHTTPResult a CURL with error response
* @throws InternalServerErrorException
*/
public static function createErrorCurl($url = '')
$this->errorNumber = $errorNumber;
$this->error = $error;
- Logger::log($url . ': ' . $this->returnCode . " " . $result, Logger::DATA);
+ Logger::debug('construct', ['url' => $url, 'returncode' => $this->returnCode, 'result' => $result]);
$this->parseBodyHeader($result);
$this->checkSuccess();
}
if (!$this->isSuccess) {
- Logger::log('error: ' . $this->url . ': ' . $this->returnCode . ' - ' . $this->error, Logger::INFO);
- Logger::log('debug: ' . print_r($this->info, true), Logger::DATA);
+ Logger::notice('http error', ['url' => $this->url, 'code' => $this->returnCode, 'error' => $this->error, 'callstack' => System::callstack(20)]);
+ Logger::debug('debug', ['info' => $this->info]);
}
if (!$this->isSuccess && $this->errorNumber == CURLE_OPERATION_TIMEDOUT) {
}
}
- /**
- * Gets the Curl Code
- *
- * @return string The Curl Code
- */
+ /** {@inheritDoc} */
public function getReturnCode()
{
return $this->returnCode;
}
- /**
- * Returns the Curl Content Type
- *
- * @return string the Curl Content Type
- */
+ /** {@inheritDoc} */
public function getContentType()
{
return $this->contentType;
}
- /**
- * Returns the Curl headers
- *
- * @param string $field optional header field. Return all fields if empty
- *
- * @return string the Curl headers or the specified content of the header variable
- */
- public function getHeader(string $field = '')
+ /** {@inheritDoc} */
+ public function getHeader($header)
{
- if (empty($field)) {
- return $this->header;
+ if (empty($header)) {
+ return [];
}
- $field = strtolower(trim($field));
+ $header = strtolower(trim($header));
$headers = $this->getHeaderArray();
- if (isset($headers[$field])) {
- return $headers[$field];
+ if (isset($headers[$header])) {
+ return $headers[$header];
}
- return '';
+ return [];
}
- /**
- * Check if a specified header exists
- *
- * @param string $field header field
- *
- * @return boolean "true" if header exists
- */
+ /** {@inheritDoc} */
+ public function getHeaders()
+ {
+ return $this->getHeaderArray();
+ }
+
+ /** {@inheritDoc} */
public function inHeader(string $field)
{
$field = strtolower(trim($field));
return array_key_exists($field, $headers);
}
- /**
- * Returns the Curl headers as an associated array
- *
- * @return array associated header array
- */
+ /** {@inheritDoc} */
public function getHeaderArray()
{
if (!empty($this->header_fields)) {
$parts = explode(':', $line);
$headerfield = strtolower(trim(array_shift($parts)));
$headerdata = trim(implode(':', $parts));
- $this->header_fields[$headerfield] = $headerdata;
+ if (empty($this->header_fields[$headerfield])) {
+ $this->header_fields[$headerfield] = [$headerdata];
+ } elseif (!in_array($headerdata, $this->header_fields[$headerfield])) {
+ $this->header_fields[$headerfield][] = $headerdata;
+ }
}
return $this->header_fields;
}
- /**
- * @return bool
- */
+ /** {@inheritDoc} */
public function isSuccess()
{
return $this->isSuccess;
}
- /**
- * @return string
- */
+ /** {@inheritDoc} */
public function getUrl()
{
return $this->url;
}
- /**
- * @return string
- */
+ /** {@inheritDoc} */
public function getRedirectUrl()
{
return $this->redirectUrl;
}
- /**
- * @return string
- */
+ /** {@inheritDoc} */
public function getBody()
{
return $this->body;
}
- /**
- * @return array
- */
- public function getInfo()
- {
- return $this->info;
- }
-
- /**
- * @return bool
- */
+ /** {@inheritDoc} */
public function isRedirectUrl()
{
return $this->isRedirectUrl;
}
- /**
- * @return int
- */
+ /** {@inheritDoc} */
public function getErrorNumber()
{
return $this->errorNumber;
}
- /**
- * @return string
- */
+ /** {@inheritDoc} */
public function getError()
{
return $this->error;
}
- /**
- * @return bool
- */
+ /** {@inheritDoc} */
public function isTimeout()
{
return $this->isTimeout;