agent/php/ElasticApm/Impl/TransactionContextRequestUrl.php (93 lines of code) (raw):
<?php
/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
declare(strict_types=1);
namespace Elastic\Apm\Impl;
use Elastic\Apm\Impl\BackendComm\SerializationUtil;
use Elastic\Apm\Impl\Util\BoolUtil;
use Elastic\Apm\TransactionContextRequestUrlInterface;
/**
* Code in this file is part of implementation internals and thus it is not covered by the backward compatibility.
*
* @internal
*
* @extends ContextPartWrapper<Transaction>
*/
final class TransactionContextRequestUrl extends ContextPartWrapper implements TransactionContextRequestUrlInterface
{
/** @var ?string */
public $domain = null;
/** @var ?string */
public $full = null;
/** @var ?string */
public $original = null;
/** @var ?string */
public $path = null;
/** @var ?int */
public $port = null;
/** @var ?string */
public $protocol = null;
/** @var ?string */
public $query = null;
public function __construct(Transaction $owner)
{
parent::__construct($owner);
}
/** @inheritDoc */
public function setFull(?string $full): void
{
if ($this->beforeMutating()) {
return;
}
$this->full = Tracer::limitNullableKeywordString($full);
}
/** @inheritDoc */
public function setDomain(?string $domain): void
{
if ($this->beforeMutating()) {
return;
}
$this->domain = Tracer::limitNullableKeywordString($domain);
}
/** @inheritDoc */
public function setOriginal(?string $original): void
{
if ($this->beforeMutating()) {
return;
}
$this->original = Tracer::limitNullableKeywordString($original);
}
/** @inheritDoc */
public function setPath(?string $path): void
{
if ($this->beforeMutating()) {
return;
}
$this->path = Tracer::limitNullableKeywordString($path);
}
/** @inheritDoc */
public function setPort(?int $port): void
{
if ($this->beforeMutating()) {
return;
}
$this->port = $port;
}
/** @inheritDoc */
public function setProtocol(?string $protocol): void
{
if ($this->beforeMutating()) {
return;
}
$this->protocol = Tracer::limitNullableKeywordString($protocol);
}
/** @inheritDoc */
public function setQuery(?string $query): void
{
if ($this->beforeMutating()) {
return;
}
$this->query = Tracer::limitNullableKeywordString($query);
}
/** @inheritDoc */
public function prepareForSerialization(): int
{
return BoolUtil::toInt(
($this->domain !== null)
|| ($this->full !== null)
|| ($this->original !== null)
|| ($this->path !== null)
|| ($this->port !== null)
|| ($this->protocol !== null)
|| ($this->query !== null)
);
}
/** @inheritDoc */
public function jsonSerialize()
{
$result = [];
SerializationUtil::addNameValueIfNotNull('hostname', $this->domain, /* ref */ $result);
SerializationUtil::addNameValueIfNotNull('full', $this->full, /* ref */ $result);
SerializationUtil::addNameValueIfNotNull('raw', $this->original, /* ref */ $result);
SerializationUtil::addNameValueIfNotNull('pathname', $this->path, /* ref */ $result);
SerializationUtil::addNameValueIfNotNull('port', $this->port, /* ref */ $result);
SerializationUtil::addNameValueIfNotNull('protocol', $this->protocol, /* ref */ $result);
SerializationUtil::addNameValueIfNotNull('search', $this->query, /* ref */ $result);
return SerializationUtil::postProcessResult($result);
}
}