radar; } public function setRadar(?RequestInterface $radar): Rocket { $this->radar = $radar; return $this; } public function getParams(): array { return $this->params; } public function setParams(array $params): Rocket { $this->params = $params; return $this; } public function mergeParams(array $params): Rocket { $this->params = array_merge($this->params, $params); return $this; } public function getPayload(): ?Collection { return $this->payload; } public function setPayload(null|array|Collection $payload): Rocket { if (is_array($payload)) { $payload = new Collection($payload); } $this->payload = $payload; return $this; } public function mergePayload(array $payload): Rocket { if (empty($this->payload)) { $this->payload = new Collection(); } $this->payload = $this->payload->merge($payload); return $this; } public function exceptPayload(mixed $key): Rocket { if (empty($this->payload)) { return $this; } $this->payload = $this->payload->except($key); return $this; } public function getPacker(): string { return $this->packer; } public function setPacker(string $packer): Rocket { $this->packer = $packer; return $this; } public function getDirection(): string { return $this->direction; } public function setDirection(string $direction): Rocket { $this->direction = $direction; return $this; } public function getDestination(): null|Collection|MessageInterface { return $this->destination; } public function setDestination(null|Collection|MessageInterface $destination): Rocket { $this->destination = $destination; return $this; } public function getDestinationOrigin(): null|RequestInterface|ResponseInterface { return $this->destinationOrigin; } public function setDestinationOrigin(null|RequestInterface|ResponseInterface $destinationOrigin): Rocket { $this->destinationOrigin = $destinationOrigin; return $this; } public function toArray(): array { $request = $this->getRadar(); $destination = $this->getDestinationOrigin(); return [ 'radar' => [ 'url' => $request?->getUri()->__toString(), 'method' => $request?->getMethod(), 'headers' => $request?->getHeaders(), 'body' => (string) $request?->getBody(), ], 'params' => $this->getParams(), 'payload' => $this->getPayload()?->toArray(), 'packer' => $this->getPacker(), 'direction' => $this->getDirection(), 'destination' => $this->getDestination(), 'destination_origin' => [ 'status' => $destination instanceof ResponseInterface ? $destination->getStatusCode() : null, 'headers' => $destination?->getHeaders(), 'body' => (string) $destination?->getBody(), ], ]; } }