add support for plugins adding API methods
This commit is contained in:
parent
5e725f9c8c
commit
79f9bef767
3 changed files with 54 additions and 2 deletions
|
@ -464,8 +464,19 @@ class API extends Handler {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function index() {
|
function index($method) {
|
||||||
print $this->wrap(self::STATUS_ERR, array("error" => 'UNKNOWN_METHOD'));
|
global $pluginhost;
|
||||||
|
|
||||||
|
$plugin = $pluginhost->get_api_method(strtolower($method));
|
||||||
|
|
||||||
|
if ($plugin && method_exists($plugin, $method)) {
|
||||||
|
$reply = $plugin->$method();
|
||||||
|
|
||||||
|
print $this->wrap($reply[0], $reply[1]);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
print $this->wrap(self::STATUS_ERR, array("error" => 'UNKNOWN_METHOD', "method" => $method));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function shareToPublished() {
|
function shareToPublished() {
|
||||||
|
|
|
@ -7,6 +7,7 @@ class PluginHost {
|
||||||
private $commands = array();
|
private $commands = array();
|
||||||
private $storage = array();
|
private $storage = array();
|
||||||
private $feeds = array();
|
private $feeds = array();
|
||||||
|
private $api_methods = array();
|
||||||
private $owner_uid;
|
private $owner_uid;
|
||||||
private $debug;
|
private $debug;
|
||||||
|
|
||||||
|
@ -347,5 +348,14 @@ class PluginHost {
|
||||||
return PLUGIN_FEED_BASE_INDEX - 1 + abs($feed);
|
return PLUGIN_FEED_BASE_INDEX - 1 + abs($feed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function add_api_method($name, $sender) {
|
||||||
|
if ($this->is_system($sender)) {
|
||||||
|
$this->api_methods[strtolower($name)] = $sender;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_api_method($name) {
|
||||||
|
return $this->api_methods[$name];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
31
plugins/example_api/init.php
Normal file
31
plugins/example_api/init.php
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
class Example_Api extends Plugin {
|
||||||
|
|
||||||
|
// Demonstrates adding a method to the API
|
||||||
|
// Plugin methods return an array containint
|
||||||
|
// 1. status (STATUS_OK or STATUS_ERR)
|
||||||
|
// 2. arbitrary payload
|
||||||
|
|
||||||
|
private $link;
|
||||||
|
private $host;
|
||||||
|
|
||||||
|
function about() {
|
||||||
|
return array(1.0,
|
||||||
|
"Example plugin adding an API method",
|
||||||
|
"fox",
|
||||||
|
true,
|
||||||
|
"http://tt-rss.org/");
|
||||||
|
}
|
||||||
|
|
||||||
|
function init($host) {
|
||||||
|
$this->link = $host->get_link();
|
||||||
|
$this->host = $host;
|
||||||
|
|
||||||
|
$host->add_api_method("example_testmethod", $this);
|
||||||
|
}
|
||||||
|
|
||||||
|
function example_testmethod() {
|
||||||
|
return array(API::STATUS_OK, array("current_time" => time()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
Loading…
Reference in a new issue