feat(Api pages/name/md): manage several levels

This commit is contained in:
Jérémy Dufraisse 2023-03-02 18:34:36 +01:00
parent eb364c285b
commit 38dea6765b

View File

@ -37,7 +37,10 @@ class SeacmsAppPlugin extends AbstractPicoPlugin implements LateApiAware
'POST pages/(.*)/create' => 'createPage', // TODO only define for POST 'POST pages/(.*)/create' => 'createPage', // TODO only define for POST
'GET pages' => 'apiPagesBase', 'GET pages' => 'apiPagesBase',
'GET pages/(.*)' => 'apiPageBase', '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(); $pages = $this->getPico()->getPages();
if (array_key_exists($pageName,$pages)){ 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 { } else {
return new JsonResponse(404,['code'=>404,'reason'=>"Page '$pageName' has not been found !"]); 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");
}
} }