summaryrefslogtreecommitdiff
path: root/modules/extra/xmlrpc.cpp
diff options
context:
space:
mode:
authorSadie Powell <sadie@witchery.services>2025-03-17 12:58:22 +0000
committerSadie Powell <sadie@witchery.services>2025-03-17 12:58:22 +0000
commitbb1f93f1508ebdd0a6bef227cf924229dd05497b (patch)
tree807223c968d79a37c125cb2b5f41248f5ed6a45a /modules/extra/xmlrpc.cpp
parent85fbc500d8bcc83a26f3227c90cb82896b767d62 (diff)
Switch RPC event registration to use the service system.
Diffstat (limited to 'modules/extra/xmlrpc.cpp')
-rw-r--r--modules/extra/xmlrpc.cpp28
1 files changed, 5 insertions, 23 deletions
diff --git a/modules/extra/xmlrpc.cpp b/modules/extra/xmlrpc.cpp
index e0efd1a9c..de23f0dc1 100644
--- a/modules/extra/xmlrpc.cpp
+++ b/modules/extra/xmlrpc.cpp
@@ -23,8 +23,6 @@ class XMLRPCServiceInterface final
, public HTTPPage
{
private:
- RPC::Events events;
-
static void SendError(HTTPReply &reply, xmlrpc_env &env)
{
Log(LOG_DEBUG) << "XML-RPC error " << env.fault_code << ": " << env.fault_string;
@@ -75,21 +73,6 @@ public:
{
}
- const RPC::Events &GetEvents() override
- {
- return events;
- }
-
- bool Register(RPC::Event *event) override
- {
- return this->events.emplace(event->GetEvent(), event).second;
- }
-
- bool Unregister(RPC::Event *event) override
- {
- return this->events.erase(event->GetEvent()) != 0;
- }
-
bool OnRequest(HTTPProvider *provider, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply) override
{
xmlrpc_env env;
@@ -110,8 +93,8 @@ public:
request.name = method;
delete method;
- auto event = this->events.find(request.name);
- if (event == this->events.end())
+ ServiceReference<RPC::Event> event(RPC_EVENT, request.name);
+ if (!event)
{
xmlrpc_env_set_fault(&env, RPC::ERR_METHOD_NOT_FOUND, "Method not found");
SendError(reply, env);
@@ -152,17 +135,16 @@ public:
}
xmlrpc_DECREF(params);
- auto *eh = event->second;
- if (request.data.size() < eh->GetMinParams())
+ if (request.data.size() < event->GetMinParams())
{
auto error = Anope::printf("Not enough parameters (given %zu, expected %zu)",
- request.data.size(), eh->GetMinParams());
+ request.data.size(), event->GetMinParams());
xmlrpc_env_set_fault(&env, RPC::ERR_INVALID_PARAMS, error.c_str());
SendError(reply, env);
return true;
}
- if (!eh->Run(this, client, request))
+ if (!event->Run(this, client, request))
return false;
this->Reply(request);