@@ -681,19 +681,6 @@ final class CommandHandler
681681 quot, user.watched_usernames.join(j_quot), quot
682682 ).replace(d_quot, " " );
683683
684- const rooms_owner = text(
685- quot, server.db.rooms(username).join(j_quot), quot
686- ).replace(d_quot, " " );
687-
688- const rooms_member = text(
689- quot, server.db.rooms(null , username).join(j_quot), quot
690- ).replace(d_quot, " " );
691-
692- const rooms_operator = text(
693- quot, server.db.rooms(null , username, RoomMemberType.operator)
694- .join(j_quot), quot
695- ).replace(d_quot, " " );
696-
697684 auto obfuscation_type = " null" ;
698685 if (user.obfuscation_type == ObfuscationType.rotated)
699686 obfuscation_type = text(quot, " rotated" , quot);
@@ -703,61 +690,73 @@ final class CommandHandler
703690 quot, cast (uint ) user.obfuscation_type, quot
704691 );
705692
706- Appender! string output;
707- output ~= text(
708- " {" ,
709- " \n \" username\" : \" " , username, " \" ," ,
710- " \n \" session_data\" : {" ,
711- " \n \" status\" : \" " , status, " \" ," ,
712- " \n \" client_version\" : \" " , user.client_version, " \" ," ,
713- " \n \" ip_address\" : \" " , user.address.toAddrString ~ " \" ," ,
714- " \n \" port\" : " , user.address.port, " ," ,
715- " \n \" obfuscated_port\" : " , user.obfuscated_port, " ," ,
716- " \n \" obfuscation_type\" : " , obfuscation_type, " ," ,
717- " \n \" accept_room_invitations\" : " , accept_invitations, " ," ,
718- " \n \" joined_global_room\" : " , joined_global_room, " ," ,
719- " \n \" liked_items\" : [" , liked_items, " ]," ,
720- " \n \" hated_items\" : [" , hated_items, " ]," ,
721- " \n \" joined_rooms\" : [" , joined_rooms, " ]," ,
722- " \n \" watched_users\" : [" , watched_users, " ]" ,
723- " \n }," ,
724- " \n \" persistent_data\" : {" ,
725- " \n \" admin_until\" : " , admin, " ," ,
726- " \n \" privileged_until\" : " , privileged, " ," ,
727- " \n \" supporter\" : " , supporter, " ," ,
728- " \n \" searchable\" : " , searchable, " ," ,
729- " \n \" num_files\" : " , user.shared_files, " ," ,
730- " \n \" num_folders\" : " , user.shared_folders, " ," ,
731- " \n \" upload_speed\" : " , user.upload_speed, " ," ,
732- " \n \" private_rooms_owner\" : [" , rooms_owner, " ]," ,
733- " \n \" private_rooms_member\" : [" , rooms_member, " ]," ,
734- " \n \" private_rooms_operator\" : [" , rooms_operator, " ]," ,
735- " \n \" room_tickers\" : {" ,
736- );
693+ string rooms (bool is_owner = true ) {
694+ Appender! string output;
695+ const rooms = is_owner
696+ ? server.db.rooms(username) : server.db.rooms(null , username);
697+ if (rooms.length == 0 )
698+ return output[];
699+
700+ auto first = true ;
701+ foreach (ref room_name ; rooms) {
702+ const owner = server.db.get_room_owner(room_name);
703+ const members = text(
704+ quot,
705+ server.db.room_members! (RoomMemberType.any)(room_name)
706+ .join(j_quot), quot
707+ ).replace(d_quot, " " );
708+
709+ const operators = text(
710+ quot,
711+ server.db.room_members! (RoomMemberType.operator)(room_name)
712+ .join(j_quot), quot
713+ ).replace(d_quot, " " );
714+
715+ if (! first) output ~= " ," ;
716+ output ~= text(
717+ " \n {" ,
718+ " \n \" room_name\" : \" " , room_name, " \" ," ,
719+ " \n \" owner\" : \" " , owner, " \" ," ,
720+ " \n \" members\" : [" , members, " ]," ,
721+ " \n \" operators\" : [" , operators, " ]" ,
722+ " \n }"
723+ );
724+ first = false ;
725+ }
726+ output ~= " \n " ;
727+ return output[];
728+ }
729+
730+ string tickers () {
731+ Appender! string output;
732+ const tickers = server.db.user_tickers! (RoomType.any)(username);
733+ if (tickers.length == 0 )
734+ return output[];
737735
738- const tickers = server.db.user_tickers! (RoomType.any)(username);
739- if (tickers.length > 0 ) {
740736 auto first = true ;
741737 foreach (ticker ; tickers) {
738+ const name = ticker.room_name;
739+ const content = ticker.content;
740+
742741 if (! first) output ~= " ," ;
743742 output ~= text(
744- " \n \" " , ticker.room_name, " \" : \" " ,
745- ticker.content, " \" "
743+ " \n {" ,
744+ " \n \" room_name\" : \" " , name, " \" ," ,
745+ " \n \" content\" : \" " , content, " \" " ,
746+ " \n }"
746747 );
747748 first = false ;
748749 }
749750 output ~= " \n " ;
751+ return output[];
750752 }
751753
752- output ~= text(
753- " }" ,
754- " \n }," ,
755- " \n \" volatile_data\" : {" ,
756- " \n \" private_messages_queued\" : [" ,
757- );
754+ string pms () {
755+ Appender! string output;
756+ const pms = server.get_queued_pms(username);
757+ if (pms.length == 0 )
758+ return output[];
758759
759- const pms = server.get_queued_pms(username);
760- if (pms.length > 0 ) {
761760 auto first = true ;
762761 foreach (pm ; pms) {
763762 const id = pm.id;
@@ -777,13 +776,42 @@ final class CommandHandler
777776 first = false ;
778777 }
779778 output ~= " \n " ;
779+ return output[];
780780 }
781781
782- output ~= text(
783- " ]" ,
782+ return text (
783+ " {" ,
784+ " \n \" username\" : \" " , username, " \" ," ,
785+ " \n \" session_data\" : {" ,
786+ " \n \" status\" : \" " , status, " \" ," ,
787+ " \n \" client_version\" : \" " , user.client_version, " \" ," ,
788+ " \n \" ip_address\" : \" " , user.address.toAddrString ~ " \" ," ,
789+ " \n \" port\" : " , user.address.port, " ," ,
790+ " \n \" obfuscated_port\" : " , user.obfuscated_port, " ," ,
791+ " \n \" obfuscation_type\" : " , obfuscation_type, " ," ,
792+ " \n \" accept_room_invitations\" : " , accept_invitations, " ," ,
793+ " \n \" joined_global_room\" : " , joined_global_room, " ," ,
794+ " \n \" liked_items\" : [" , liked_items, " ]," ,
795+ " \n \" hated_items\" : [" , hated_items, " ]," ,
796+ " \n \" joined_rooms\" : [" , joined_rooms, " ]," ,
797+ " \n \" watched_users\" : [" , watched_users, " ]" ,
798+ " \n }," ,
799+ " \n \" persistent_data\" : {" ,
800+ " \n \" admin_until\" : " , admin, " ," ,
801+ " \n \" privileged_until\" : " , privileged, " ," ,
802+ " \n \" supporter\" : " , supporter, " ," ,
803+ " \n \" searchable\" : " , searchable, " ," ,
804+ " \n \" num_files\" : " , user.shared_files, " ," ,
805+ " \n \" num_folders\" : " , user.shared_folders, " ," ,
806+ " \n \" upload_speed\" : " , user.upload_speed, " ," ,
807+ " \n \" private_rooms_owner\" : {" , rooms, " }" ,
808+ " \n \" private_rooms_member\" : {" , rooms(false ), " }" ,
809+ " \n \" room_tickers\" : {" , tickers, " }" ,
810+ " \n }," ,
811+ " \n \" volatile_data\" : {" ,
812+ " \n \" private_messages_queued\" : [" , pms, " ]" ,
784813 " \n }" ,
785814 " \n }"
786815 );
787- return output[];
788816 }
789817}
0 commit comments