wip
This commit is contained in:
parent
134c8f8618
commit
bba2c49bb5
9
_admin.php
Normal file
9
_admin.php
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('DC_CONTEXT_ADMIN')) { return; }
|
||||||
|
|
||||||
|
$_menu['Blog']->addItem(__('Rest API'),
|
||||||
|
'plugin.php?p=rest',
|
||||||
|
urldecode(dcPage::getPF('rest/rest_api.png')),
|
||||||
|
preg_match('/plugin.php\?p=rest(&.*)?$/',$_SERVER['REQUEST_URI']),
|
||||||
|
$core->auth->check('contentadmin',$core->blog->id));
|
|
@ -16,8 +16,5 @@ $this->registerModule(
|
||||||
/* Description*/ "A JSON/REST API for Dotclear",
|
/* Description*/ "A JSON/REST API for Dotclear",
|
||||||
/* Author */ "Gnieark",
|
/* Author */ "Gnieark",
|
||||||
/* Version */ '0.0.6',
|
/* Version */ '0.0.6',
|
||||||
array(
|
/* Permissions */ 'usage,contentadmin'
|
||||||
'permissions' => 'usage,contentadmin',
|
|
||||||
'type' => 'plugin',
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
|
12
_prepend.php
Normal file
12
_prepend.php
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<?php
|
||||||
|
if (!defined('DC_RC_PATH')) { return; }
|
||||||
|
|
||||||
|
$core->url->register('rest','rest','^rest(?:/(.*))?$',array('rest','makeResponse'));
|
||||||
|
class rest extends dcUrlHandlers
|
||||||
|
{
|
||||||
|
|
||||||
|
public function makeResponse(){
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
180
entry_points.yaml
Normal file
180
entry_points.yaml
Normal file
|
@ -0,0 +1,180 @@
|
||||||
|
blogs:
|
||||||
|
description: SCRUD (search create update delete Blogs)
|
||||||
|
swaggerDoc: blogs.yaml
|
||||||
|
entryPoints:
|
||||||
|
getBlogs:
|
||||||
|
title: Get blogs
|
||||||
|
method: GET
|
||||||
|
pattern: /^blogs($|/(.*)$)/
|
||||||
|
class: blogs
|
||||||
|
function: getBlogs
|
||||||
|
params:
|
||||||
|
- args
|
||||||
|
specs:
|
||||||
|
description: Return this API swagger definitions.
|
||||||
|
swaggerDoc: specs.yaml
|
||||||
|
entryPoints:
|
||||||
|
getSpecs: get the swagger specification
|
||||||
|
method: GET
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
array("method" =>"GET",
|
||||||
|
"URLmatch" => "/^blogs$/",
|
||||||
|
"object" => "RestQueryGetBlogs",
|
||||||
|
"arguments" => array(),
|
||||||
|
"limit_results" => true,
|
||||||
|
"title" => "list blogs"
|
||||||
|
),
|
||||||
|
array("method" => "GET",
|
||||||
|
"URLmatch" => "/^specs($|\/(.*)$)/",
|
||||||
|
"object" => "RestQueryGetSpecs",
|
||||||
|
"arguments" => array("args"),
|
||||||
|
),
|
||||||
|
array("method" => "GET",
|
||||||
|
"URLmatch" => '/^blogs\/(.*)$/',
|
||||||
|
"object" => "RestQueryGetBlog",
|
||||||
|
"arguments" => array("args"),
|
||||||
|
),
|
||||||
|
array("method" => "GET",
|
||||||
|
"URLmatch" => '/^documentation($|\/)/',
|
||||||
|
"object" => "RestDocumentation",
|
||||||
|
"arguments" => array("args")
|
||||||
|
|
||||||
|
),
|
||||||
|
array("method" => "GET",
|
||||||
|
"URLmatch" => '/^((.*)\/settings|(.*)\/settings\/(.*))$/',
|
||||||
|
"object" => "RestQueryGetBlogSettings",
|
||||||
|
"arguments" => array("args"),
|
||||||
|
"limit_results" => true,
|
||||||
|
"title" => "list settings"
|
||||||
|
),
|
||||||
|
array("method" => "GET",
|
||||||
|
"URLmatch" => '/^(.*)\/posts$/',
|
||||||
|
"object" => "RestQueryGetPosts",
|
||||||
|
"arguments" => array("args"),
|
||||||
|
"limit_results" => true,
|
||||||
|
"title" => "list posts"
|
||||||
|
|
||||||
|
),
|
||||||
|
array("method" => "GET",
|
||||||
|
"URLmatch" => '/^(.*)\/post\/(.*)$/',
|
||||||
|
"object" => "RestQueryGetPosts",
|
||||||
|
"arguments" => array("args")
|
||||||
|
),
|
||||||
|
array("method" => "GET",
|
||||||
|
"URLmatch" => '/^(.*)\/metas$/',
|
||||||
|
"object" => "RestQueryGetMetas",
|
||||||
|
"arguments" => array("args"),
|
||||||
|
"limit_results" => true,
|
||||||
|
"title" => "list metas"
|
||||||
|
),
|
||||||
|
array("method" => "GET",
|
||||||
|
"URLmatch" => '/^(.*)\/categories($|\/(.*)$)/',
|
||||||
|
"object" => "RestQueryGetCategories",
|
||||||
|
"arguments" => array("args"),
|
||||||
|
"limit_results" => true,
|
||||||
|
"title" => "list categories"
|
||||||
|
),
|
||||||
|
array("method" => "GET",
|
||||||
|
"URLmatch" => '/^(.*)\/comments($|\/(.*)$)/',
|
||||||
|
"object" => "RestQueryGetComments",
|
||||||
|
"arguments" => array("args")
|
||||||
|
),
|
||||||
|
array("method" => "POST",
|
||||||
|
"URLmatch" => '/^blogs$/',
|
||||||
|
"object" => "RestQueryPostBlogs",
|
||||||
|
"arguments" => array("body"),
|
||||||
|
),
|
||||||
|
array("method" => "POST",
|
||||||
|
"URLmatch" => '/^(.*)\/settings\/(.*)$/',
|
||||||
|
"object" => "RestQueryPostBlogSettings",
|
||||||
|
"arguments" => array("args","body")
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"method" => "POST",
|
||||||
|
"URLmatch" => '/^(.*)\/post$/',
|
||||||
|
"object" => "RestQueryPostPost",
|
||||||
|
"arguments" => array("args","body")
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"method" => "POST",
|
||||||
|
"URLmatch" => '/^(.*)\/categories$/',
|
||||||
|
"object" => "RestQueryPostCategories",
|
||||||
|
"arguments" => array("args","body"),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"method" => "POST",
|
||||||
|
"URLmatch" => '/^(.*)\/metas$/',
|
||||||
|
"object" => "RestQueryPostMetas",
|
||||||
|
"arguments" => array("args", "body")
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"method" => "POST",
|
||||||
|
"URLmatch" => '/^(.*)\/(.*)\/comments$/',
|
||||||
|
"object" => "RestQueryPostComments",
|
||||||
|
"arguments" => array("args","body")
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"method" => "PUT",
|
||||||
|
"URLmatch" => '/^blogs\/(.*)$/',
|
||||||
|
"object" => "ResQueryPutBlogs",
|
||||||
|
"arguments" => array("args","body")
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"method" => "PATCH",
|
||||||
|
"URLmatch" => '/^blogs\/(.*)$/',
|
||||||
|
"object" => "ResQueryPatchBlogs",
|
||||||
|
"arguments" => array("args","body")
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"method" => "PATCH",
|
||||||
|
"URLmatch" => '/^(.*)\/(.*)\/meta\/(.*)$/',
|
||||||
|
"object" => "ResQueryPatchMeta",
|
||||||
|
"arguments" => array("args","body")
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"method" => "PATCH",
|
||||||
|
"URLmatch" => '/^(.*)\/categories\/(.*)$/',
|
||||||
|
"object" => "RestQueryPatchCategories",
|
||||||
|
"arguments" => array("args","body")
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"method" => "DELETE",
|
||||||
|
"URLmatch" => '/^blogs\/(.*)$/',
|
||||||
|
"object" => "ResQueryDeleteBlogs",
|
||||||
|
"arguments" => array("args", "body")
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"method" => "DELETE",
|
||||||
|
"URLmatch" => '/^(.*)\/settings\/(.*)$/',
|
||||||
|
"object" => "RestQueryDeleteBlogSettings",
|
||||||
|
"arguments" => array("args","body")
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"method" => "DELETE",
|
||||||
|
"URLmatch" => '/^(.*)\/(.*)\/metas$/',
|
||||||
|
"object" => "RestQueryDeletePostMeta",
|
||||||
|
"arguments" => array("args","body")
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"method" => "DELETE",
|
||||||
|
"URLmatch" => '/^(.*)\/(.*)\/meta\/(.*)$/',
|
||||||
|
"object" => "RestQueryDeletePostMeta",
|
||||||
|
"arguments" => array("args")
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"method" => "DELETE",
|
||||||
|
"URLmatch" => '/^(.*)\/categories\/(.*)$/',
|
||||||
|
"object" => "RestQueryDeleteCategories",
|
||||||
|
"arguments" => array("args","body")
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"method" => "DELETE",
|
||||||
|
"URLmatch" => '/(^(.*)\/comments\/(.*)|^(.*)\/comments)$/',
|
||||||
|
"object" => "RestQueryDeleteComments",
|
||||||
|
"arguments" => array("args","body"),
|
||||||
|
),
|
||||||
|
|
||||||
|
);
|
79
index.php
Normal file
79
index.php
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
<?php
|
||||||
|
if (!defined('DC_CONTEXT_ADMIN')) { return; }
|
||||||
|
|
||||||
|
// Setting default parameters if missing configuration
|
||||||
|
$core->blog->settings->addNamespace('rest');
|
||||||
|
if (is_null($core->blog->settings->rest->rest_active)) {
|
||||||
|
try {
|
||||||
|
$core->blog->settings->rest->put('rest_active',false,'boolean',true);
|
||||||
|
$core->blog->settings->rest->put('rest_send_cors_headers',true,'boolean',true);
|
||||||
|
$core->blog->triggerBlog();
|
||||||
|
http::redirect($p_url);
|
||||||
|
}
|
||||||
|
catch (Exception $e) {
|
||||||
|
$core->error->add($e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//a form is submitted
|
||||||
|
if (!empty($_POST['saveconfig'])){
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$core->blog->settings->addNameSpace('rest');
|
||||||
|
$active = (empty($_POST['active'])) ? false : true;
|
||||||
|
$core->blog->settings->rest->put('rest_active',$active,'boolean');
|
||||||
|
|
||||||
|
$sendHeaders = (empty($_POST['sendHeaders'])) ? false : true;
|
||||||
|
$core->blog->settings->rest->put('rest_send_cors_headers',$sendHeaders,'boolean');
|
||||||
|
|
||||||
|
dcPage::addSuccessNotice(__('Configuration successfully updated.'));
|
||||||
|
http::redirect($p_url);
|
||||||
|
}catch (Exception $e)
|
||||||
|
{
|
||||||
|
$core->error->add($e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
http::redirect($p_url.'&saveconfig=1');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getting current parameters
|
||||||
|
$active = (boolean)$core->blog->settings->rest->rest_active;
|
||||||
|
$sendHeaders =(boolean)$core->blog->settings->rest->rest_send_cors_headers;
|
||||||
|
|
||||||
|
|
||||||
|
?><html>
|
||||||
|
<head>
|
||||||
|
<title><?php echo __('REST API configuration'); ?></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h2><?php echo __('Your API key');?></h2>
|
||||||
|
<?php
|
||||||
|
// Settings form is only available for super admins.
|
||||||
|
if($core->auth->isSuperAdmin()):
|
||||||
|
?>
|
||||||
|
<h2><?php echo __('API Settings');?></h2>
|
||||||
|
<form method="post" action="<?php http::getSelfURI(); ?>">
|
||||||
|
<?php echo $core->formNonce(); ?>
|
||||||
|
<p>
|
||||||
|
<?php echo form::checkbox('active', 1, $active); ?>
|
||||||
|
<label class="classic" for="active"> <?php echo __('Enable REST API');?></label>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<?php echo form::checkbox('sendHeaders', 1, $sendHeaders); ?>
|
||||||
|
<label class="classic" for="sendHeaders"> <?php echo __('Send the Cross Origin Domain http headers');?></label>
|
||||||
|
</p>
|
||||||
|
<p> To do: list here all api access points and acl</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p><input type="submit" name="saveconfig" value="<?php echo __('Save configuration'); ?>" /></p>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
<?php endif; ?>
|
||||||
|
<h2><?php echo __('Documentation');?></h2>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
BIN
rest_api.png
Executable file
BIN
rest_api.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 675 B |
Loading…
Reference in New Issue
Block a user