summaryrefslogtreecommitdiffstats
path: root/core/Controller/AvatarController.php
diff options
context:
space:
mode:
Diffstat (limited to 'core/Controller/AvatarController.php')
-rw-r--r--core/Controller/AvatarController.php38
1 files changed, 38 insertions, 0 deletions
diff --git a/core/Controller/AvatarController.php b/core/Controller/AvatarController.php
index 5fcd2a9abbe..673ed1be05b 100644
--- a/core/Controller/AvatarController.php
+++ b/core/Controller/AvatarController.php
@@ -84,6 +84,44 @@ class AvatarController extends Controller {
$this->timeFactory = $timeFactory;
}
+ /**
+ * @NoAdminRequired
+ * @NoCSRFRequired
+ * @NoSameSiteCookieRequired
+ * @PublicPage
+ *
+ * @return JSONResponse|FileDisplayResponse
+ */
+ public function getAvatarDark(string $userId, int $size) {
+ if ($size <= 64) {
+ if ($size !== 64) {
+ $this->logger->debug('Avatar requested in deprecated size ' . $size);
+ }
+ $size = 64;
+ } else {
+ if ($size !== 512) {
+ $this->logger->debug('Avatar requested in deprecated size ' . $size);
+ }
+ $size = 512;
+ }
+
+ try {
+ $avatar = $this->avatarManager->getAvatar($userId);
+ $avatarFile = $avatar->getFile($size, true);
+ $response = new FileDisplayResponse(
+ $avatarFile,
+ Http::STATUS_OK,
+ ['Content-Type' => $avatarFile->getMimeType(), 'X-NC-IsCustomAvatar' => (int)$avatar->isCustomAvatar()]
+ );
+ } catch (\Exception $e) {
+ return new JSONResponse([], Http::STATUS_NOT_FOUND);
+ }
+
+ // Cache for 1 day
+ $response->cacheFor(60 * 60 * 24, false, true);
+ return $response;
+ }
+
/**
* @NoAdminRequired