From 38dea6765b59940e276884619f059ca990af9057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Dufraisse?= Date: Thu, 2 Mar 2023 18:34:36 +0100 Subject: [PATCH] feat(Api pages/name/md): manage several levels --- SeacmsAppPlugin.php | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/SeacmsAppPlugin.php b/SeacmsAppPlugin.php index 722bc47..b3dcae2 100644 --- a/SeacmsAppPlugin.php +++ b/SeacmsAppPlugin.php @@ -37,7 +37,10 @@ class SeacmsAppPlugin extends AbstractPicoPlugin implements LateApiAware 'POST pages/(.*)/create' => 'createPage', // TODO only define for POST 'GET pages' => 'apiPagesBase', 'GET pages/(.*)' => 'apiPageBase', - 'GET pages/(.*)/md' => 'apiPageAsMd' + 'GET pages/(.*)/md' => 'apiPageAsMd', + 'GET pages/(.*)/(.*)/md' => 'apiPageAsMd2Levels', + 'GET pages/(.*)/(.*)/(.*)/md' => 'apiPageAsMd3Levels', + 'GET pages/(.*)/(.*)/(.*)/(.*)/md' => 'apiPageAsMd4Levels', ]; } @@ -100,11 +103,37 @@ class SeacmsAppPlugin extends AbstractPicoPlugin implements LateApiAware $pages = $this->getPico()->getPages(); if (array_key_exists($pageName,$pages)){ - return new MdResponse(200,$pages[$pageName]['raw_content']); + return new MdResponse(200,$pages[$pageName]['raw_content'],[ + 'Content-Disposition' => 'inline; filename="'.str_replace('/','-',$pageName).'.md"' + ]); } else { return new JsonResponse(404,['code'=>404,'reason'=>"Page '$pageName' has not been found !"]); } } + /** + * method to see page as md + * @return JsonResponse + */ + public function apiPageAsMd2Levels(string $folder1,string $pageName): JsonResponse + { + return $this->apiPageAsMd("$folder1/$pageName"); + } + /** + * method to see page as md + * @return JsonResponse + */ + public function apiPageAsMd3Levels(string $folder1,string $folder2,string $pageName): JsonResponse + { + return $this->apiPageAsMd("$folder1/$folder2/$pageName"); + } + /** + * method to see page as md + * @return JsonResponse + */ + public function apiPageAsMd4Levels(string $folder1,string $folder2,string $folder3,string $pageName): JsonResponse + { + return $this->apiPageAsMd("$folder1/$folder2/$folder3/$pageName"); + } } \ No newline at end of file