2010-04-14 14:58:52 +00:00
< ? php
/**
2016-07-21 15:07:57 +00:00
* @ copyright Copyright ( c ) 2016 , ownCloud , Inc .
*
2015-03-26 10:44:34 +00:00
* @ author Bart Visscher < bartv @ thisnet . nl >
2016-07-21 15:07:57 +00:00
* @ author Christoph Wurst < christoph @ owncloud . com >
* @ author Joas Schilling < coding @ schilljs . com >
2016-05-26 17:56:05 +00:00
* @ author Lukas Reschke < lukas @ statuscode . ch >
2015-03-26 10:44:34 +00:00
* @ author Morris Jobke < hey @ morrisjobke . de >
2016-07-21 16:13:36 +00:00
* @ author Robin Appelman < robin @ icewind . nl >
2016-07-21 15:07:57 +00:00
* @ author Roeland Jago Douma < roeland @ famdouma . nl >
2015-03-26 10:44:34 +00:00
* @ author Thomas Müller < thomas . mueller @ tmit . eu >
* @ author Tom Needham < tom @ owncloud . com >
* @ author Vincent Petry < pvince81 @ owncloud . com >
*
* @ license AGPL - 3.0
*
* This code is free software : you can redistribute it and / or modify
* it under the terms of the GNU Affero General Public License , version 3 ,
* as published by the Free Software Foundation .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Affero General Public License for more details .
*
* You should have received a copy of the GNU Affero General Public License , version 3 ,
* along with this program . If not , see < http :// www . gnu . org / licenses />
*
*/
2015-02-26 10:37:37 +00:00
2017-10-13 19:30:29 +00:00
require_once __DIR__ . '/../lib/versioncheck.php' ;
2016-10-06 10:13:02 +00:00
require_once __DIR__ . '/../lib/base.php' ;
2014-02-18 13:51:59 +00:00
2015-04-09 13:57:27 +00:00
if ( \OCP\Util :: needUpgrade ()
2019-02-06 16:08:41 +00:00
|| \OC :: $server -> getConfig () -> getSystemValueBool ( 'maintenance' )) {
2014-06-30 12:48:03 +00:00
// since the behavior of apps or remotes are unpredictable during
// an upgrade, return a 503 directly
2018-06-26 08:32:50 +00:00
http_response_code ( 503 );
2018-07-26 20:56:17 +00:00
$response = new \OC\OCS\Result ( null , 503 , 'Service unavailable' );
2014-06-30 13:37:38 +00:00
OC_API :: respond ( $response , OC_API :: requestedFormat ());
2014-06-30 12:48:03 +00:00
exit ;
}
2012-07-30 19:03:41 +00:00
use Symfony\Component\Routing\Exception\ResourceNotFoundException ;
2012-07-31 20:33:53 +00:00
use Symfony\Component\Routing\Exception\MethodNotAllowedException ;
2012-07-30 19:03:41 +00:00
2016-05-17 08:13:02 +00:00
/*
* Try old routes first
* We first try the old routes since the appframework triggers more login stuff .
*/
2012-07-30 19:03:41 +00:00
try {
2016-06-16 09:32:28 +00:00
OC_App :: loadApps ([ 'session' ]);
OC_App :: loadApps ([ 'authentication' ]);
2014-02-18 13:51:59 +00:00
// load all apps to get all api routes properly setup
OC_App :: loadApps ();
2015-02-10 12:02:48 +00:00
OC :: $server -> getRouter () -> match ( '/ocs' . \OC :: $server -> getRequest () -> getRawPathInfo ());
2018-01-17 14:18:22 +00:00
sleep ( 1 );
OC :: $server -> getLogger () -> info ( 'This uses an old OCP\API::register construct. This will be removed in a future version of Nextcloud. Please migrate to the OCSController' );
2016-05-17 08:13:02 +00:00
return ;
} catch ( ResourceNotFoundException $e ) {
// Fall through the not found
} catch ( MethodNotAllowedException $e ) {
OC_API :: setContentType ();
2018-06-26 08:32:50 +00:00
http_response_code ( 405 );
2016-11-18 09:29:51 +00:00
exit ();
} catch ( Exception $ex ) {
2016-05-17 08:13:02 +00:00
OC_API :: respond ( $ex -> getResult (), OC_API :: requestedFormat ());
2016-11-18 09:29:51 +00:00
exit ();
2016-05-17 08:13:02 +00:00
}
/*
* Try the appframework routes
*/
try {
2016-07-14 22:13:13 +00:00
if ( ! \OC :: $server -> getUserSession () -> isLoggedIn ()) {
OC :: handleLogin ( \OC :: $server -> getRequest ());
}
2016-05-17 08:13:02 +00:00
OC :: $server -> getRouter () -> match ( '/ocsapp' . \OC :: $server -> getRequest () -> getRawPathInfo ());
2012-07-30 19:03:41 +00:00
} catch ( ResourceNotFoundException $e ) {
2014-03-11 23:35:19 +00:00
OC_API :: setContentType ();
2017-03-03 06:41:21 +00:00
$format = \OC :: $server -> getRequest () -> getParam ( 'format' , 'xml' );
$txt = 'Invalid query, please check the syntax. API specifications are here:'
2018-01-09 17:34:25 +00:00
. ' http://www.freedesktop.org/wiki/Specifications/open-collaboration-services.' . " \n " ;
2017-09-21 15:56:00 +00:00
OC_API :: respond ( new \OC\OCS\Result ( null , \OCP\API :: RESPOND_NOT_FOUND , $txt ), $format );
2012-07-31 20:33:53 +00:00
} catch ( MethodNotAllowedException $e ) {
2014-03-11 23:35:19 +00:00
OC_API :: setContentType ();
2018-06-26 08:32:50 +00:00
http_response_code ( 405 );
2015-08-03 16:06:07 +00:00
} catch ( \OC\OCS\Exception $ex ) {
OC_API :: respond ( $ex -> getResult (), OC_API :: requestedFormat ());
2016-07-21 20:47:20 +00:00
} catch ( \OC\User\LoginException $e ) {
2017-09-21 15:56:00 +00:00
OC_API :: respond ( new \OC\OCS\Result ( null , \OCP\API :: RESPOND_UNAUTHORISED , 'Unauthorised' ));
2016-05-17 08:13:02 +00:00
} catch ( \Exception $e ) {
2017-02-06 13:46:52 +00:00
\OC :: $server -> getLogger () -> logException ( $e );
2016-05-17 08:13:02 +00:00
OC_API :: setContentType ();
2017-03-03 06:41:21 +00:00
$format = \OC :: $server -> getRequest () -> getParam ( 'format' , 'xml' );
$txt = 'Invalid query, please check the syntax. API specifications are here:'
2018-01-09 17:34:25 +00:00
. ' http://www.freedesktop.org/wiki/Specifications/open-collaboration-services.' . " \n " ;
2017-09-21 15:56:00 +00:00
OC_API :: respond ( new \OC\OCS\Result ( null , \OCP\API :: RESPOND_NOT_FOUND , $txt ), $format );
2012-07-30 19:03:41 +00:00
}