More generic method handlers now

This commit is contained in:
KimLS 2014-08-05 14:30:23 -07:00
parent 2ed960d733
commit c6d8b7e337
3 changed files with 16 additions and 34 deletions

View File

@ -10,11 +10,11 @@ extern std::map<std::string, MethodHandler> unauthorized_methods;
void register_authorized_methods()
{
authorized_methods["WebInterface.Authorize"] = std::make_pair(0, handle_method_token_auth);
authorized_methods["World.ListZones"] = std::make_pair(10, handle_method_no_args);
authorized_methods["World.GetZoneDetails"] = std::make_pair(10, handle_method_get_zone_info);
authorized_methods["Zone.Subscribe"] = std::make_pair(10, handle_method_subscribe);
authorized_methods["Zone.Unsubscribe"] = std::make_pair(10, handle_method_subscribe);
authorized_methods["Zone.GetInitialEntityPositions"] = std::make_pair(10, handle_method_zone_no_args);
authorized_methods["World.ListZones"] = std::make_pair(10, handle_method_world);
authorized_methods["World.GetZoneDetails"] = std::make_pair(10, handle_method_world);
authorized_methods["Zone.Subscribe"] = std::make_pair(10, handle_method_zone);
authorized_methods["Zone.Unsubscribe"] = std::make_pair(10, handle_method_zone);
authorized_methods["Zone.GetInitialEntityPositions"] = std::make_pair(10, handle_method_zone);
}
void register_unauthorized_methods()
@ -40,32 +40,16 @@ void handle_method_token_auth(per_session_data_eqemu *session, rapidjson::Docume
}
}
void handle_method_no_args(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method)
{
void handle_method_world(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method) {
CheckParams(2, "[zone_id, instance_id]");
VerifyID();
CalculateSize();
WriteWebProtocolPacket();
}
void handle_method_zone(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method) {
CheckParams(0, "[]");
VerifyID();
CalculateSize();
WriteWebProtocolPacket();
}
void handle_method_get_zone_info(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method)
{
CheckParams(1, "[zoneserver_id]");
VerifyID();
CalculateSize();
WriteWebProtocolPacket();
}
void handle_method_subscribe(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method) {
CheckParams(3, "[zone_id, instance_id, event_name]");
VerifyID();
CalculateSize();
WriteWebProtocolPacket();
}
void handle_method_zone_no_args(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method) {
CheckParams(2, "[zone_id, instance_id]");
VerifyID();
CalculateSize();
WriteWebProtocolPacket();
}

View File

@ -76,10 +76,8 @@
void register_methods();
void handle_method_token_auth(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method);
void handle_method_no_args(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method);
void handle_method_get_zone_info(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method);
void handle_method_subscribe(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method);
void handle_method_zone_no_args(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method);
void handle_method_zone(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method);
void handle_method_world(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method);
#endif

View File

@ -132,7 +132,7 @@ int callback_eqemu(libwebsocket_context *context, libwebsocket *wsi, libwebsocke
static struct libwebsocket_protocols protocols[] = {
{ "http-only", callback_http, 0, 0, },
{ "eqemu", callback_eqemu, sizeof(per_session_data_eqemu), 65536, },
{ "eqemu", callback_eqemu, sizeof(per_session_data_eqemu), 1048576, },
{ nullptr, nullptr, 0, 0 }
};