public function init(Application $app, $options = array())
 {
     parent::init($app, $options);
     // list content
     $app->get('/1/{repositoryName}/content', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::index');
     // get record (additional query parameters: timeshift, language)
     $app->get('/1/{repositoryName}/content/{contentTypeName}/record/{id}', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::getOne');
     $app->get('/1/{repositoryName}/content/{contentTypeName}/record/{id}/{workspace}', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::getOne');
     $app->get('/1/{repositoryName}/content/{contentTypeName}/record/{id}/{workspace}/{clippingName}', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::getOne');
     // get records (additional query parameters: timeshift, language, order, properties, limit, page, subset, filter)
     $app->get('/1/{repositoryName}/content/{contentTypeName}/records', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::getMany');
     $app->get('/1/{repositoryName}/content/{contentTypeName}/records/{workspace}', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::getMany');
     $app->get('/1/{repositoryName}/content/{contentTypeName}/records/{workspace}/{clippingName}', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::getMany');
     // delete record (additional query parameter: language)
     $app->delete('/1/{repositoryName}/content/{contentTypeName}/record/{id}', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::deleteOne');
     $app->delete('/1/{repositoryName}/content/{contentTypeName}/record/{id}/{workspace}', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::deleteOne');
     // delete records (additional query parameter: language, reset)
     $app->delete('/1/{repositoryName}/content/{contentTypeName}/records', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::truncate');
     $app->delete('/1/{repositoryName}/content/{contentTypeName}/records/{workspace}', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::truncate');
     // insert/update record (additional query parameters: record, language)
     $app->post('/1/{repositoryName}/content/{contentTypeName}/records', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::post');
     $app->post('/1/{repositoryName}/content/{contentTypeName}/records/{workspace}', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::post');
     $app->post('/1/{repositoryName}/content/{contentTypeName}/records/{workspace}/{clippingName}', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::post');
     // sort records (additional query parameters: list, language)
     $app->post('/1/{repositoryName}/content/{contentTypeName}/sort-records', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::sort');
     $app->post('/1/{repositoryName}/content/{contentTypeName}/sort-records/{workspace}', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::sort');
     // simplification routes, solely for human interaction with the api
     $app->get('/1/{repositoryName}/content/{contentTypeName}', 'AnyContent\\Repository\\Modules\\Core\\ContentRecords\\ContentController::getContentShortCut');
 }
 public function init(Application $app, $options = array())
 {
     parent::init($app, $options);
     $app['repos'] = $app->share(function ($app) {
         return new RepositoryManager($app);
     });
     // get info on repositories
     $app->get('/1/{repositoryName}/info', 'AnyContent\\Repository\\Modules\\Core\\Repositories\\RepositoryController::index');
     $app->get('/1/{repositoryName}/info/{workspace}', 'AnyContent\\Repository\\Modules\\Core\\Repositories\\RepositoryController::index');
     // get cmdl for a content type
     $app->get('/1/{repositoryName}/content/{contentTypeName}/cmdl', 'AnyContent\\Repository\\Modules\\Core\\Repositories\\RepositoryController::cmdl');
     $app->get('/1/{repositoryName}/content/{contentTypeName}/cmdl/{locale}', 'AnyContent\\Repository\\Modules\\Core\\Repositories\\RepositoryController::cmdl');
     // update cmdl for a content type / create content type
     $app->post('/1/{repositoryName}/content/{contentTypeName}/cmdl', 'AnyContent\\Repository\\Modules\\Core\\Repositories\\RepositoryController::postContentTypeCMDL');
     $app->post('/1/{repositoryName}/content/{contentTypeName}/cmdl/{locale}', 'AnyContent\\Repository\\Modules\\Core\\Repositories\\RepositoryController::postContentTypeCMDL');
     // delete content type
     $app->delete('/1/{repositoryName}/content/{contentTypeName}', 'AnyContent\\Repository\\Modules\\Core\\Repositories\\RepositoryController::deleteContentType');
     // update cmdl for a config type / create config type
     $app->post('/1/{repositoryName}/config/{configTypeName}/cmdl', 'AnyContent\\Repository\\Modules\\Core\\Repositories\\RepositoryController::postConfigTypeCMDL');
     $app->post('/1/{repositoryName}/config/{configTypeName}/cmdl/{locale}', 'AnyContent\\Repository\\Modules\\Core\\Repositories\\RepositoryController::postConfigTypeCMDL');
     // delete config type
     $app->delete('/1/{repositoryName}/config/{configTypeName}', 'AnyContent\\Repository\\Modules\\Core\\Repositories\\RepositoryController::deleteConfigType');
     // simplification routes, solely for human interaction with the api
     $app->get('/', 'AnyContent\\Repository\\Modules\\Core\\Repositories\\RepositoryController::welcomeShortCut');
     $app->get('/1', 'AnyContent\\Repository\\Modules\\Core\\Repositories\\RepositoryController::welcome');
     $app->get('/1/', 'AnyContent\\Repository\\Modules\\Core\\Repositories\\RepositoryController::welcome');
     $app->get('/1/{repositoryName}', 'AnyContent\\Repository\\Modules\\Core\\Repositories\\RepositoryController::getInfoShortCut');
 }
 public function init(Application $app, $options = array())
 {
     parent::init($app, $options);
     $app->before(function (Request $request, Application $app) {
         $username = null;
         $firstname = null;
         $lastname = null;
         if ($request->query->has('userinfo')) {
             $userinfo = $request->get('userinfo');
             $username = @$userinfo['username'];
             $firstname = @$userinfo['firstname'];
             $lastname = @$userinfo['lastname'];
         }
         $app['repos']->setUserInfo($request->getUser(), $username, $firstname, $lastname);
     });
 }
 public function init(Application $app, $options = array())
 {
     parent::init($app, $options);
     // list configs
     $app->get('/1/{repositoryName}/config', 'AnyContent\\Repository\\Controller\\ConfigController::index');
     // get cmdl for a config type
     $app->get('/1/{repositoryName}/config/{configTypeName}/cmdl', 'AnyContent\\Repository\\Controller\\ConfigController::cmdl');
     $app->get('/1/{repositoryName}/config/{configTypeName}/cmdl/{locale}', 'AnyContent\\Repository\\Controller\\ConfigController::cmdl');
     // get config (additional query parameters: timeshift, language)
     $app->get('/1/{repositoryName}/config/{configTypeName}/record', 'AnyContent\\Repository\\Controller\\ConfigController::getConfig');
     $app->get('/1/{repositoryName}/config/{configTypeName}/record/{workspace}', 'AnyContent\\Repository\\Controller\\ConfigController::getConfig');
     // insert/update config (additional query parameters: language)
     $app->post('/1/{repositoryName}/config/{configTypeName}/record', 'AnyContent\\Repository\\Controller\\ConfigController::post');
     $app->post('/1/{repositoryName}/config/{configTypeName}/record/{workspace}', 'AnyContent\\Repository\\Controller\\ConfigController::post');
     // simplification routes, solely for human interaction with the api
     $app->get('/1/{repositoryName}/config/{configTypeName}', 'AnyContent\\Repository\\Controller\\ConfigController::getConfigShortCut');
 }
 public function init(Application $app, $options = array())
 {
     parent::init($app, $options);
     // get binary file
     $app->get('/1/{repositoryName}/file/{path}', 'AnyContent\\Repository\\Controller\\FilesController::binary')->assert('path', '.+');
     // list files
     $app->get('/1/{repositoryName}/files', 'AnyContent\\Repository\\Controller\\FilesController::scan');
     $app->get('/1/{repositoryName}/files/', 'AnyContent\\Repository\\Controller\\FilesController::scan');
     $app->get('/1/{repositoryName}/files/{path}', 'AnyContent\\Repository\\Controller\\FilesController::scan')->assert('path', '.+');
     // save file (post body contains binary)
     $app->post('/1/{repositoryName}/file/{path}', 'AnyContent\\Repository\\Controller\\FilesController::postFile')->assert('path', '.+');
     // create folder
     $app->post('/1/{repositoryName}/files/{path}', 'AnyContent\\Repository\\Controller\\FilesController::createFolder')->assert('path', '.+');
     // delete file
     $app->delete('/1/{repositoryName}/file/{path}', 'AnyContent\\Repository\\Controller\\FilesController::deleteFile')->assert('path', '.+');
     // delete files
     $app->delete('/1/{repositoryName}/files/{path}', 'AnyContent\\Repository\\Controller\\FilesController::deleteFiles')->assert('path', '.+');
     $app->delete('/1/{repositoryName}/files', 'AnyContent\\Repository\\Controller\\FilesController::deleteFiles');
     $app->delete('/1/{repositoryName}/files/', 'AnyContent\\Repository\\Controller\\FilesController::deleteFiles');
 }
 public function init(Application $app, $options = array())
 {
     parent::init($app, $options);
     $app->registerCMDLAccessAdapter('directory', 'AnyContent\\Repository\\Modules\\Core\\DirectoryCMDLAccessAdapter\\DirectoryCMDLAccessAdapter');
 }
 public function init(Application $app, $options = array())
 {
     parent::init($app, $options);
     $app->before('AnyContent\\Repository\\Modules\\Core\\ResponseCache\\ResponseCache::before');
     $app->after('AnyContent\\Repository\\Modules\\Core\\ResponseCache\\ResponseCache::after');
 }
 public function init(Application $app, $options = array())
 {
     parent::init($app, $options);
     $app->after(function (Request $request, Response $response, Application $app) {
         if ($response->headers->has('content-type')) {
             if ($response->headers->get('content-type') == 'application/json') {
                 // http://stackoverflow.com/questions/6054033/pretty-printing-json-with-php
                 $json = $response->getContent();
                 $result = '';
                 $level = 0;
                 $prev_char = '';
                 $in_quotes = false;
                 $ends_line_level = NULL;
                 $json_length = strlen($json);
                 for ($i = 0; $i < $json_length; $i++) {
                     $char = $json[$i];
                     $new_line_level = NULL;
                     $post = "";
                     if ($ends_line_level !== NULL) {
                         $new_line_level = $ends_line_level;
                         $ends_line_level = NULL;
                     }
                     if ($char === '"' && $prev_char != '\\') {
                         $in_quotes = !$in_quotes;
                     } else {
                         if (!$in_quotes) {
                             switch ($char) {
                                 case '}':
                                 case ']':
                                     $level--;
                                     $ends_line_level = NULL;
                                     $new_line_level = $level;
                                     break;
                                 case '{':
                                 case '[':
                                     $level++;
                                 case ',':
                                     $ends_line_level = $level;
                                     break;
                                 case ':':
                                     $post = " ";
                                     break;
                                 case " ":
                                 case "\t":
                                 case "\n":
                                 case "\r":
                                     $char = "";
                                     $ends_line_level = $new_line_level;
                                     $new_line_level = NULL;
                                     break;
                             }
                         }
                     }
                     if ($new_line_level !== NULL) {
                         $result .= "\n" . str_repeat("  ", $new_line_level);
                     }
                     $result .= $char . $post;
                     $prev_char = $char;
                 }
                 $response->setContent($result);
             }
         }
     });
 }
 public function init(Application $app, $options = array())
 {
     parent::init($app, $options);
     $app->post('/1/{repositoryName}', 'AnyContent\\Repository\\Modules\\Core\\SuperAdmin\\RepositoryController::createRepository');
     $app->delete('/1/{repositoryName}', 'AnyContent\\Repository\\Modules\\Core\\SuperAdmin\\RepositoryController::discardRepository');
 }