aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/AppFramework/Http/RequestId.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/AppFramework/Http/RequestId.php')
-rw-r--r--lib/private/AppFramework/Http/RequestId.php36
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/private/AppFramework/Http/RequestId.php b/lib/private/AppFramework/Http/RequestId.php
new file mode 100644
index 00000000000..c3a99c93591
--- /dev/null
+++ b/lib/private/AppFramework/Http/RequestId.php
@@ -0,0 +1,36 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+namespace OC\AppFramework\Http;
+
+use OCP\IRequestId;
+use OCP\Security\ISecureRandom;
+
+class RequestId implements IRequestId {
+ protected ISecureRandom $secureRandom;
+ protected string $requestId;
+
+ public function __construct(string $uniqueId,
+ ISecureRandom $secureRandom) {
+ $this->requestId = $uniqueId;
+ $this->secureRandom = $secureRandom;
+ }
+
+ /**
+ * Returns an ID for the request, value is not guaranteed to be unique and is mostly meant for logging
+ * If `mod_unique_id` is installed this value will be taken.
+ * @return string
+ */
+ public function getId(): string {
+ if (empty($this->requestId)) {
+ $validChars = ISecureRandom::CHAR_ALPHANUMERIC;
+ $this->requestId = $this->secureRandom->generate(20, $validChars);
+ }
+
+ return $this->requestId;
+ }
+}