pluginhost: add helper methods to get private/public pluginmethod endpoint URLs

This commit is contained in:
Andrew Dolgov 2019-08-15 20:23:45 +03:00
parent e46ed1ff97
commit 10c63ed582
2 changed files with 31 additions and 2 deletions

View File

@ -491,4 +491,34 @@ class PluginHost {
function get_owner_uid() {
return $this->owner_uid;
}
// handled by classes/pluginhandler.php, requires valid session
function get_method_url($sender, $method, $params) {
return get_self_url_prefix() . "/backend.php?" .
http_build_query(
array_merge(
[
"op" => "pluginhandler",
"plugin" => strtolower(get_class($sender)),
"pmethod" => $method
],
$params));
}
// WARNING: endpoint in public.php, exposed to unauthenticated users
function get_public_method_url($sender, $method, $params) {
if ($sender->is_public_method($method)) {
return get_self_url_prefix() . "/public.php?" .
http_build_query(
array_merge(
[
"op" => "pluginhandler",
"plugin" => strtolower(get_class($sender)),
"pmethod" => $method
],
$params));
} else {
user_error("get_public_method_url: requested method '$method' of '" . get_class($sender) . "' is private.");
}
}
}

View File

@ -141,8 +141,7 @@ class Af_Proxy_Http extends Plugin {
}
}
return get_self_url_prefix() . "/public.php?op=pluginhandler&plugin=af_proxy_http&pmethod=imgproxy&url=" .
urlencode($url);
return $this->host->get_public_method_url($this, "imgproxy", ["url" => $url]);
}
}
}