Very basic conversion of ocs to Symfony Routing Component
This commit is contained in:
parent
687c87bc5b
commit
d0cae6a99a
|
@ -0,0 +1,3 @@
|
||||||
|
[submodule "3rdparty/Symfony/Component/Routing"]
|
||||||
|
path = 3rdparty/Symfony/Component/Routing
|
||||||
|
url = git://github.com/symfony/Routing.git
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit d72483890880a987afa679503af096d2aaf7d2ee
|
|
@ -86,6 +86,9 @@ class OC{
|
||||||
elseif(strpos($className,'Sabre_')===0) {
|
elseif(strpos($className,'Sabre_')===0) {
|
||||||
require_once str_replace('_','/',$className) . '.php';
|
require_once str_replace('_','/',$className) . '.php';
|
||||||
}
|
}
|
||||||
|
elseif(strpos($className,'Symfony\\')===0){
|
||||||
|
require_once str_replace('\\','/',$className) . '.php';
|
||||||
|
}
|
||||||
elseif(strpos($className,'Test_')===0){
|
elseif(strpos($className,'Test_')===0){
|
||||||
require_once 'tests/lib/'.strtolower(str_replace('_','/',substr($className,5)) . '.php');
|
require_once 'tests/lib/'.strtolower(str_replace('_','/',substr($className,5)) . '.php');
|
||||||
}
|
}
|
||||||
|
|
146
lib/ocs.php
146
lib/ocs.php
|
@ -21,7 +21,11 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use Symfony\Component\Routing\Matcher\UrlMatcher;
|
||||||
|
use Symfony\Component\Routing\RequestContext;
|
||||||
|
use Symfony\Component\Routing\RouteCollection;
|
||||||
|
use Symfony\Component\Routing\Route;
|
||||||
|
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to handle open collaboration services API requests
|
* Class to handle open collaboration services API requests
|
||||||
|
@ -95,73 +99,103 @@ class OC_OCS {
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
// preprocess url
|
$routes = new RouteCollection();
|
||||||
$url=$_SERVER['REQUEST_URI'];
|
|
||||||
if(substr($url,(strlen($url)-1))<>'/') $url.='/';
|
|
||||||
$ex=explode('/',$url);
|
|
||||||
$paracount=count($ex);
|
|
||||||
|
|
||||||
// eventhandler
|
|
||||||
// CONFIG
|
// CONFIG
|
||||||
// apiconfig - GET - CONFIG
|
$routes->add('config',
|
||||||
if(($method=='get') and (strtolower($ex[$paracount-3])=='v1.php') and (strtolower($ex[$paracount-2])=='config')){
|
new Route('/config.{format}',
|
||||||
$format=OC_OCS::readdata('format','text');
|
array('format'=>'',
|
||||||
OC_OCS::apiconfig($format);
|
'action' => function ($parameters) {
|
||||||
|
OC_OCS::apiconfig($parameters['format'] ? $parameters['format'] : OC_OCS::readdata('format','text'));
|
||||||
|
}),
|
||||||
|
array('format'=>'xml|json')));
|
||||||
|
|
||||||
// PERSON
|
// PERSON
|
||||||
// personcheck - POST - PERSON/CHECK
|
$routes->add('person_check',
|
||||||
}elseif(($method=='post') and (strtolower($ex[$paracount-4])=='v1.php') and (strtolower($ex[$paracount-3])=='person') and (strtolower($ex[$paracount-2])=='check')){
|
new Route('/person/check.{format}',
|
||||||
$format=OC_OCS::readdata('format','text');
|
array('format'=>'',
|
||||||
$login=OC_OCS::readdata('login','text');
|
'action' => function ($parameters) {
|
||||||
$passwd=OC_OCS::readdata('password','text');
|
$format = $parameters['format'] ? $parameters['format'] : OC_OCS::readdata('format','text');
|
||||||
OC_OCS::personcheck($format,$login,$passwd);
|
$login=OC_OCS::readdata('login','text');
|
||||||
|
$passwd=OC_OCS::readdata('password','text');
|
||||||
|
OC_OCS::personcheck($format,$login,$passwd);
|
||||||
|
}),
|
||||||
|
array('_method'=>'post',
|
||||||
|
'format'=>'xml|json')));
|
||||||
|
|
||||||
// ACTIVITY
|
// ACTIVITY
|
||||||
// activityget - GET ACTIVITY page,pagesize als urlparameter
|
// activityget - GET ACTIVITY page,pagesize als urlparameter
|
||||||
}elseif(($method=='get') and (strtolower($ex[$paracount-3])=='v1.php')and (strtolower($ex[$paracount-2])=='activity')){
|
$routes->add('activity_get',
|
||||||
$format=OC_OCS::readdata('format','text');
|
new Route('/activity.{format}',
|
||||||
$page=OC_OCS::readdata('page','int');
|
array('format'=>'',
|
||||||
$pagesize=OC_OCS::readdata('pagesize','int');
|
'action' => function ($parameters) {
|
||||||
if($pagesize<1 or $pagesize>100) $pagesize=10;
|
$format = $parameters['format'] ? $parameters['format'] : OC_OCS::readdata('format','text');
|
||||||
OC_OCS::activityget($format,$page,$pagesize);
|
$page=OC_OCS::readdata('page','int');
|
||||||
|
$pagesize=OC_OCS::readdata('pagesize','int');
|
||||||
|
if($pagesize<1 or $pagesize>100) $pagesize=10;
|
||||||
|
OC_OCS::activityget($format,$page,$pagesize);
|
||||||
|
}),
|
||||||
|
array('format'=>'xml|json')));
|
||||||
// activityput - POST ACTIVITY
|
// activityput - POST ACTIVITY
|
||||||
}elseif(($method=='post') and (strtolower($ex[$paracount-3])=='v1.php')and (strtolower($ex[$paracount-2])=='activity')){
|
$routes->add('activity_put',
|
||||||
$format=OC_OCS::readdata('format','text');
|
new Route('/activity.{format}',
|
||||||
$message=OC_OCS::readdata('message','text');
|
array('format'=>'',
|
||||||
OC_OCS::activityput($format,$message);
|
'action' => function ($parameters) {
|
||||||
|
$format = $parameters['format'] ? $parameters['format'] : OC_OCS::readdata('format','text');
|
||||||
|
$message=OC_OCS::readdata('message','text');
|
||||||
|
OC_OCS::activityput($format,$message);
|
||||||
|
}),
|
||||||
|
array('_method'=>'post',
|
||||||
|
'format'=>'xml|json')));
|
||||||
// PRIVATEDATA
|
// PRIVATEDATA
|
||||||
// get - GET DATA
|
// get - GET DATA
|
||||||
}elseif(($method=='get') and (strtolower($ex[$paracount-4])=='v1.php')and (strtolower($ex[$paracount-2])=='getattribute')){
|
$routes->add('privatedata_get',
|
||||||
$format=OC_OCS::readdata('format','text');
|
new Route('/privatedata/getattribute/{app}/{key}.{format}',
|
||||||
OC_OCS::privateDataGet($format);
|
array('app' => '',
|
||||||
|
'key' => '',
|
||||||
}elseif(($method=='get') and (strtolower($ex[$paracount-5])=='v1.php')and (strtolower($ex[$paracount-3])=='getattribute')){
|
'format' => '',
|
||||||
$format=OC_OCS::readdata('format','text');
|
'action' => function ($parameters) {
|
||||||
$app=$ex[$paracount-2];
|
$format = $parameters['format'] ? $parameters['format'] : OC_OCS::readdata('format','text');
|
||||||
OC_OCS::privateDataGet($format, $app);
|
$app = addslashes(strip_tags($parameters['app']));
|
||||||
}elseif(($method=='get') and (strtolower($ex[$paracount-6])=='v1.php')and (strtolower($ex[$paracount-4])=='getattribute')){
|
$key = addslashes(strip_tags($parameters['key']));
|
||||||
$format=OC_OCS::readdata('format','text');
|
OC_OCS::privateDataGet($format, $app, $key);
|
||||||
$key=$ex[$paracount-2];
|
}),
|
||||||
$app=$ex[$paracount-3];
|
array('format'=>'xml|json')));
|
||||||
OC_OCS::privateDataGet($format, $app,$key);
|
|
||||||
|
|
||||||
// set - POST DATA
|
// set - POST DATA
|
||||||
}elseif(($method=='post') and (strtolower($ex[$paracount-6])=='v1.php')and (strtolower($ex[$paracount-4])=='setattribute')){
|
$routes->add('privatedata_set',
|
||||||
$format=OC_OCS::readdata('format','text');
|
new Route('/privatedata/setattribute/{app}/{key}.{format}',
|
||||||
$key=$ex[$paracount-2];
|
array('format'=>'',
|
||||||
$app=$ex[$paracount-3];
|
'action' => function ($parameters) {
|
||||||
$value=OC_OCS::readdata('value','text');
|
$format = $parameters['format'] ? $parameters['format'] : OC_OCS::readdata('format','text');
|
||||||
OC_OCS::privatedataset($format, $app, $key, $value);
|
$app = addslashes(strip_tags($parameters['app']));
|
||||||
|
$key = addslashes(strip_tags($parameters['key']));
|
||||||
|
$value=OC_OCS::readdata('value','text');
|
||||||
|
OC_OCS::privateDataSet($format, $app, $key, $value);
|
||||||
|
}),
|
||||||
|
array('_method'=>'post',
|
||||||
|
'format'=>'xml|json')));
|
||||||
// delete - POST DATA
|
// delete - POST DATA
|
||||||
}elseif(($method=='post') and (strtolower($ex[$paracount-6])=='v1.php')and (strtolower($ex[$paracount-4])=='deleteattribute')){
|
$routes->add('privatedata_delete',
|
||||||
$format=OC_OCS::readdata('format','text');
|
new Route('/privatedata/deleteattribute/{app}/{key}.{format}',
|
||||||
$key=$ex[$paracount-2];
|
array('format'=>'',
|
||||||
$app=$ex[$paracount-3];
|
'action' => function ($parameters) {
|
||||||
OC_OCS::privatedatadelete($format, $app, $key);
|
$format = $parameters['format'] ? $parameters['format'] : OC_OCS::readdata('format','text');
|
||||||
|
$app = addslashes(strip_tags($parameters['app']));
|
||||||
|
$key = addslashes(strip_tags($parameters['key']));
|
||||||
|
OC_OCS::privateDataDelete($format, $app, $key);
|
||||||
|
}),
|
||||||
|
array('_method'=>'post',
|
||||||
|
'format'=>'xml|json')));
|
||||||
|
|
||||||
}else{
|
$context = new RequestContext($_SERVER['REQUEST_URI'], $method);
|
||||||
|
|
||||||
|
$matcher = new UrlMatcher($routes, $context);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$parameters = $matcher->match($_SERVER['PATH_INFO']);
|
||||||
|
$action = $parameters['action'];
|
||||||
|
unset($parameters['action']);
|
||||||
|
call_user_func($action, $parameters);
|
||||||
|
} catch (ResourceNotFoundException $e) {
|
||||||
$format=OC_OCS::readdata('format','text');
|
$format=OC_OCS::readdata('format','text');
|
||||||
$txt='Invalid query, please check the syntax. API specifications are here: http://www.freedesktop.org/wiki/Specifications/open-collaboration-services. DEBUG OUTPUT:'."\n";
|
$txt='Invalid query, please check the syntax. API specifications are here: http://www.freedesktop.org/wiki/Specifications/open-collaboration-services. DEBUG OUTPUT:'."\n";
|
||||||
$txt.=OC_OCS::getdebugoutput();
|
$txt.=OC_OCS::getdebugoutput();
|
||||||
|
|
Loading…
Reference in New Issue