You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

51 lines
1.3 KiB

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OC\Core\Controller;
use OC\Http\WellKnown\RequestManager;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\FrontpageRoute;
use OCP\AppFramework\Http\Attribute\OpenAPI;
use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Http\Response;
use OCP\IRequest;
#[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
class WellKnownController extends Controller {
public function __construct(
IRequest $request,
private RequestManager $requestManager,
) {
parent::__construct('core', $request);
}
/**
* @PublicPage
* @NoCSRFRequired
*
* @return Response
*/
#[FrontpageRoute(verb: 'GET', url: '.well-known/{service}')]
public function handle(string $service): Response {
$response = $this->requestManager->process(
$service,
$this->request
);
if ($response === null) {
$httpResponse = new JSONResponse(["message" => "$service not supported"], Http::STATUS_NOT_FOUND);
} else {
$httpResponse = $response->toHttpResponse();
}
// We add a custom header so that setup checks can detect if their requests are answered by this controller
return $httpResponse->addHeader('X-NEXTCLOUD-WELL-KNOWN', '1');
}
}