kopia lustrzana https://github.com/nextcloud/social
timeout is defined depends on when the request is done
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>pull/124/head
rodzic
c45cfe6b49
commit
c240faab18
|
@ -109,6 +109,7 @@ class QueueProcess extends Base {
|
|||
|
||||
$this->activityService->manageInit();
|
||||
foreach ($requests as $request) {
|
||||
$request->setTimeout(ActivityService::TIMEOUT_SERVICE);
|
||||
$output->write('.');
|
||||
try {
|
||||
$this->activityService->manageRequest($request);
|
||||
|
|
|
@ -98,6 +98,7 @@ class QueueController extends Controller {
|
|||
$requests = $this->queueService->getRequestFromToken($token, RequestQueue::STATUS_STANDBY);
|
||||
$this->activityService->manageInit();
|
||||
foreach ($requests as $request) {
|
||||
$request->setTimeout(ActivityService::TIMEOUT_ASYNC);
|
||||
try {
|
||||
$this->activityService->manageRequest($request);
|
||||
} catch (RequestException $e) {
|
||||
|
|
|
@ -89,6 +89,7 @@ class Queue extends TimedJob {
|
|||
$this->activityService->manageInit();
|
||||
|
||||
foreach ($requests as $request) {
|
||||
$request->setTimeout(ActivityService::TIMEOUT_SERVICE);
|
||||
try {
|
||||
$this->activityService->manageRequest($request);
|
||||
} catch (RequestException $e) {
|
||||
|
|
|
@ -79,6 +79,9 @@ class RequestQueue implements JsonSerializable {
|
|||
/** @var int */
|
||||
private $last = 0;
|
||||
|
||||
/** @var int */
|
||||
private $timeout = 5;
|
||||
|
||||
|
||||
/**
|
||||
* RequestQueue constructor.
|
||||
|
@ -285,6 +288,24 @@ class RequestQueue implements JsonSerializable {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param int $timeout
|
||||
*
|
||||
* @return RequestQueue
|
||||
*/
|
||||
public function setTimeout(int $timeout): RequestQueue {
|
||||
$this->timeout = $timeout;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getTimeout(): int {
|
||||
return $this->timeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $data
|
||||
*/
|
||||
|
|
|
@ -68,6 +68,10 @@ class ActivityService {
|
|||
|
||||
const REQUEST_INBOX = 1;
|
||||
|
||||
const TIMEOUT_LIVE = 2;
|
||||
const TIMEOUT_ASYNC = 5;
|
||||
const TIMEOUT_SERVICE = 10;
|
||||
|
||||
const CONTEXT_ACTIVITYSTREAMS = 'https://www.w3.org/ns/activitystreams';
|
||||
const CONTEXT_SECURITY = 'https://w3id.org/security/v1';
|
||||
|
||||
|
@ -242,6 +246,7 @@ class ActivityService {
|
|||
|
||||
try {
|
||||
$directRequest = $this->queueService->getPriorityRequest($token);
|
||||
$directRequest->setTimeout(self::TIMEOUT_LIVE);
|
||||
$this->manageRequest($directRequest);
|
||||
} catch (RequestException $e) {
|
||||
} catch (NoHighPriorityRequestException $e) {
|
||||
|
@ -280,9 +285,7 @@ class ActivityService {
|
|||
}
|
||||
|
||||
try {
|
||||
$result = $this->generateRequest(
|
||||
$queue->getInstance(), $queue->getActivity(), $queue->getAuthor()
|
||||
);
|
||||
$result = $this->generateRequestFromQueue($queue);
|
||||
} catch (ActorDoesNotExistException $e) {
|
||||
$this->queueService->deleteRequest($queue);
|
||||
|
||||
|
@ -362,9 +365,7 @@ class ActivityService {
|
|||
|
||||
|
||||
/**
|
||||
* @param InstancePath $path
|
||||
* @param string $activity
|
||||
* @param string $author
|
||||
* @param RequestQueue $queue
|
||||
*
|
||||
* @return Request[]
|
||||
* @throws ActorDoesNotExistException
|
||||
|
@ -372,10 +373,15 @@ class ActivityService {
|
|||
* @throws RequestException
|
||||
* @throws SocialAppConfigException
|
||||
*/
|
||||
public function generateRequest(InstancePath $path, string $activity, string $author): array {
|
||||
public function generateRequestFromQueue(RequestQueue $queue): array {
|
||||
//InstancePath $path, string $activity, string $author
|
||||
// $queue->getInstance(), $queue->getActivity(), $queue->getAuthor()
|
||||
// );
|
||||
$path = $queue->getInstance();
|
||||
|
||||
// $document = json_encode($activity);
|
||||
$date = gmdate(self::DATE_FORMAT);
|
||||
$localActor = $this->getActorFromAuthor($author);
|
||||
$localActor = $this->getActorFromAuthor($queue->getAuthor());
|
||||
|
||||
$localActorLink =
|
||||
$this->configService->getUrlSocial() . '@' . $localActor->getPreferredUsername();
|
||||
|
@ -397,11 +403,12 @@ class ActivityService {
|
|||
}
|
||||
|
||||
$request = new Request($path->getPath(), $requestType);
|
||||
$request->setTimeout($queue->getTimeout());
|
||||
$request->addHeader('Host: ' . $path->getAddress());
|
||||
$request->addHeader('Date: ' . $date);
|
||||
$request->addHeader('Signature: ' . $header);
|
||||
|
||||
$request->setDataJson($activity);
|
||||
$request->setDataJson($queue->getActivity());
|
||||
$request->setAddress($path->getAddress());
|
||||
|
||||
return $this->curlService->request($request);
|
||||
|
|
|
@ -152,8 +152,8 @@ class CurlService {
|
|||
$headers[] = 'Accept: application/ld+json; profile="https://www.w3.org/ns/activitystreams"';
|
||||
|
||||
curl_setopt($curl, CURLOPT_USERAGENT, $request->getUserAgent());
|
||||
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
|
||||
curl_setopt($curl, CURLOPT_TIMEOUT, 20);
|
||||
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $request->getTimeout());
|
||||
curl_setopt($curl, CURLOPT_TIMEOUT, $request->getTimeout());
|
||||
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
|
||||
|
|
|
@ -148,6 +148,11 @@ class QueueService {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param int $total
|
||||
*
|
||||
* @return RequestQueue[]
|
||||
*/
|
||||
public function getRequestStandby(int &$total = 0): array {
|
||||
$requests = $this->requestQueueRequest->getStandby();
|
||||
$total = sizeof($requests);
|
||||
|
@ -168,7 +173,7 @@ class QueueService {
|
|||
* @param string $token
|
||||
* @param int $status
|
||||
*
|
||||
* @return array
|
||||
* @return RequestQueue[]
|
||||
*/
|
||||
public function getRequestFromToken(string $token, int $status = -1): array {
|
||||
if ($token === '') {
|
||||
|
|
Ładowanie…
Reference in New Issue