From f0b5656fdaafb71ce7a673c708c51130bda88a7c Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sun, 11 Mar 2018 11:16:39 -0700 Subject: [PATCH] ircd::m: Push user creation out to module. --- ircd/m/m.cc | 23 +++++--------------- modules/Makefile.am | 1 + modules/client/user/create.cc | 40 +++++++++++++++++++++++++++++++++++ modules/client/user/user.h | 9 ++++++++ 4 files changed, 55 insertions(+), 18 deletions(-) create mode 100644 modules/client/user/create.cc diff --git a/ircd/m/m.cc b/ircd/m/m.cc index fdb2fa0a9..8072ffc1b 100644 --- a/ircd/m/m.cc +++ b/ircd/m/m.cc @@ -744,27 +744,14 @@ ircd::m::user ircd::m::create(const id::user &user_id, const json::members &contents) { - const m::user user + using prototype = user (const id::user &, const json::members &); + + static import function { - user_id + "client_user", "user_create" }; - const m::room::id::buf user_room_id - { - user.room_id() - }; - - //TODO: ABA - //TODO: TXN - m::room user_room - { - create(user_room_id, m::me.user_id, "user") - }; - - //TODO: ABA - //TODO: TXN - send(user.users, m::me.user_id, "ircd.user", user.user_id, contents); - return user; + return function(user_id, contents); } bool diff --git a/modules/Makefile.am b/modules/Makefile.am index abfd0e18d..ba7421141 100644 --- a/modules/Makefile.am +++ b/modules/Makefile.am @@ -171,6 +171,7 @@ client_client_user_la_SOURCES = \ client/user/filter.cc \ client/user/account_data.cc \ client/user/rooms.cc \ + client/user/create.cc \ client/user/user.cc \ ### diff --git a/modules/client/user/create.cc b/modules/client/user/create.cc new file mode 100644 index 000000000..ed8fb87aa --- /dev/null +++ b/modules/client/user/create.cc @@ -0,0 +1,40 @@ +// Matrix Construct +// +// Copyright (C) Matrix Construct Developers, Authors & Contributors +// Copyright (C) 2016-2018 Jason Volk +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice is present in all copies. The +// full license for this software is available in the LICENSE file. + +#include "user.h" + +using namespace ircd; + +extern "C" m::user +user_create(const m::user::id &user_id, + const json::members &contents) +{ + const m::user user + { + user_id + }; + + const m::room::id::buf user_room_id + { + user.room_id() + }; + + //TODO: ABA + //TODO: TXN + m::room user_room + { + m::create(user_room_id, m::me.user_id, "user") + }; + + //TODO: ABA + //TODO: TXN + send(user.users, m::me.user_id, "ircd.user", user.user_id, contents); + return user; +} diff --git a/modules/client/user/user.h b/modules/client/user/user.h index c9baeafcb..f4ea265f2 100644 --- a/modules/client/user/user.h +++ b/modules/client/user/user.h @@ -54,3 +54,12 @@ ircd::resource::response put__rooms(ircd::client &client, const ircd::resource::request &request, const ircd::m::user::id &user_id); + +/////////////////////////////////////////////////////////////////////////////// +// +// create.cc +// + +extern "C" ircd::m::user +user_create(const ircd::m::user::id &, + const ircd::json::members &);