19declare(strict_types=1);
23use Psr\Http\Message\ServerRequestInterface;
24use Psr\Http\Message\UriInterface;
37 'konqueror' =>
'webdav',
41 private ?UriInterface
$uri =
null;
46 private ServerRequestInterface $request,
51 private function uri(): UriInterface
53 return $this->
uri ??= $this->request->getUri();
56 private function host(): string
58 if ($this->
host !==
null) {
61 $host = $this->
uri()->getHost();
62 $port = $this->
uri()->getPort();
63 if ($port !==
null && !in_array($port, [80, 443],
true)) {
76 $endpoint = $this->config->getEndpoint();
77 $segments = explode(
'/', $original_path);
79 if (in_array($endpoint, $segments,
true)) {
81 foreach ($segments as $segment) {
83 if ($segment === $endpoint) {
87 return implode(
'/', $kept);
90 $kept = array_slice($segments, 0, -1);
91 return implode(
'/', $kept) .
'/' . $endpoint;
111 return $this->
getWebDavPathToRef($ref_id) .
'?' . $this->config->getMountInstructionsQuery();
116 return $this->
getWebDavBasePath() .
'/' . $language .
'?' . $this->config->getMountInstructionsQuery();
126 if ($this->config->prependClientName() && $this->config->getClientId() !==
'') {
127 return $this->
basePath() .
'/' . $this->config->getClientId();
134 $scheme = self::SCHEMAS[$placeholder];
135 if ($this->
uri()->getScheme() ===
'https') {
138 return $scheme .
'://' . $this->
host() .
$path;
__construct(private ServerRequestInterface $request, private Config $config)
buildSchemedUri(string $placeholder, string $path)
getUriToMountInstructionModalByLanguage(string $language)
resolveBasePath(string $original_path)
getWebDavDefaultUri(int $ref_id)
getWebDavPathToRef(int $ref_id)
getUriToMountInstructionModalByRef(int $ref_id)
getWebDavNautilusUri(int $ref_id)
getWebDavKonquerorUri(int $ref_id)