#include <utility>
#include "inspircd.h"
-#include "users.h"
-#include "channels.h"
-#include "configreader.h"
-#include "modules.h"
#include "inspsocket.h"
#include "httpd.h"
#include "json.h"
{
void MthModuleVersion (HTTPRequest *http, json::Value &request, json::Value &response)
{
- std::string result = "GetVersion().ToString()";
+ Version v = this->GetVersion();
+ std::string result = ConvToStr(v.Major) + "." + ConvToStr(v.Minor) + "." + ConvToStr(v.Revision) + "." + ConvToStr(v.Build);
response["result"] = result;
}
}
/* Send the document back to m_httpd */
- HTTPDocument response(http->sock, &data, 200, "X-Powered-By: m_rpc_json.so\r\n"
- "Content-Type: application/json; charset=iso-8859-1\r\n");
+ HTTPDocument response(http->sock, &data, 200);
+ response.headers.SetHeader("X-Powered-By", "m_rpc_json.so");
+ response.headers.SetHeader("Content-Type", "application/json; charset=iso-8859-1");
+ response.headers.SetHeader("Connection", "Keep-Alive");
Request req((char*)&response, (Module*)this, event->GetSource());
req.Send();
}
}
};
-static void
-unreachable_internal (char const *file, int line, char const *function)
-{
- char buf[1024];
- snprintf (buf, 1024, "%s (%d) [%s] critical: Unreachable line reached.",
- file, line, function);
-
- throw std::runtime_error (buf);
-}
-
-static void
-throw_unless_internal (char const *file, int line, char const *function, char const *condition)
-{
- char buf[1024];
- snprintf (buf, 1024, "%s (%d) [%s] critical: Assertion `%s' failed.",
- file, line, function, condition);
-
- throw std::runtime_error (buf);
-}
-
-static void
-throw_msg_unless_internal (char const *file, int line, char const *function, char const *message)
-{
- char buf[1024];
- snprintf (buf, 1024, "%s (%d) [%s] critical: %s.",
- file, line, function, message);
-
- throw std::runtime_error (buf);
-}
-
-#define throw_unreachable unreachable_internal (__FILE__, __LINE__, CURFUNC)
-#define throw_unless(condition) if (!expect_false (condition)) throw_unless_internal (__FILE__, __LINE__, CURFUNC, #condition)
-#define throw_msg_unless(condition, message) if (!expect_false (condition)) throw_msg_unless_internal (__FILE__, __LINE__, CURFUNC, message)
-
-
namespace json
{
ValueIteratorBase::ValueIteratorBase ()
throw std::runtime_error (buf);
}
+
+#define throw_unreachable unreachable_internal (__FILE__, __LINE__, CURFUNC)
+#define throw_unless(condition) if (!expect_false (condition)) throw_unless_internal (__FILE__, __LINE__, CURFUNC, #condition)
+#define throw_msg_unless(condition, message) if (!expect_false (condition)) throw_msg_unless_internal (__FILE__, __LINE__, CURFUNC, message)
const Value Value::null;
const int Value::minInt = int (~ (unsigned (-1)/2));
Value response (objectValue);
Reader r;
Writer w;
-
+
+ response["error"] = Value(nullValue);
+ response["result"] = Value(nullValue);
+
parse_success = r.parse (request_text, request_text + strlen (request_text), request);
-
+
+ response["id"] = request["id"];
+
service (http, request, response);
text = w.write (response);