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

master
dufraissejeremy 2 years ago
parent eb364c285b
commit 38dea6765b
  1. 33
      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");
}
}
Loading…
Cancel
Save