From 1364c498500d0e9ac2d62e5c00ca39ba6b7c62ba Mon Sep 17 00:00:00 2001 From: Claire Strodtbeck Date: Sat, 20 Jun 2020 11:49:31 -0700 Subject: [PATCH] TODO: room joining --- .../DesignTimeBuild/.dtbcache.v2 | Bin 68974 -> 76342 bytes MatrixDotNetLib/.vs/MatrixDotNetLib/v16/.suo | Bin 56832 -> 54272 bytes .../MatrixDotNetCmd/MatrixDotNetCmd.csproj | 4 + MatrixDotNetLib/MatrixDotNetCmd/Program.cs | 76 +- .../MatrixDotNetCmd.assets.cache | Bin 671 -> 3326 bytes ...rixDotNetCmd.csprojAssemblyReference.cache | Bin 6992 -> 116255 bytes .../MatrixDotNetCmd.csproj.nuget.dgspec.json | 6 + .../MatrixDotNetCmd/obj/project.assets.json | 1311 ++++++++++++++++- .../MatrixDotNetCmd/obj/project.nuget.cache | 22 +- MatrixDotNetLib/MatrixDotNetLib/MatrixApis.cs | 36 +- MatrixDotNetLib/MatrixDotNetLib/MatrixRoom.cs | 16 + .../MatrixDotNetLib/MatrixRoomDirectory.cs | 22 + .../MatrixDotNetLib/MatrixRoomEntry.cs | 37 + .../MatrixDotNetLib/MatrixSessionManager.cs | 43 +- .../Debug/netcoreapp3.1/MatrixDotNetLib.dll | Bin 24064 -> 27136 bytes .../Debug/netcoreapp3.1/MatrixDotNetLib.pdb | Bin 6372 -> 7488 bytes ...ixDotNetLib.csproj.CoreCompileInputs.cache | 2 +- ...rixDotNetLib.csprojAssemblyReference.cache | Bin 424 -> 104852 bytes .../Debug/netcoreapp3.1/MatrixDotNetLib.dll | Bin 24064 -> 27136 bytes .../Debug/netcoreapp3.1/MatrixDotNetLib.pdb | Bin 6372 -> 7488 bytes 20 files changed, 1542 insertions(+), 33 deletions(-) create mode 100644 MatrixDotNetLib/MatrixDotNetLib/MatrixRoom.cs create mode 100644 MatrixDotNetLib/MatrixDotNetLib/MatrixRoomDirectory.cs create mode 100644 MatrixDotNetLib/MatrixDotNetLib/MatrixRoomEntry.cs diff --git a/MatrixDotNetLib/.vs/MatrixDotNetLib/DesignTimeBuild/.dtbcache.v2 b/MatrixDotNetLib/.vs/MatrixDotNetLib/DesignTimeBuild/.dtbcache.v2 index 0fedc34830245f4179fef3639683cc6f1b4fc927..7569cbf16b02b09caf30a7d6ca122008be43100d 100644 GIT binary patch literal 76342 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 literal 68974 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 delta 6428 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 diff --git a/MatrixDotNetLib/MatrixDotNetCmd/MatrixDotNetCmd.csproj b/MatrixDotNetLib/MatrixDotNetCmd/MatrixDotNetCmd.csproj index d886501..ecebafd 100644 --- a/MatrixDotNetLib/MatrixDotNetCmd/MatrixDotNetCmd.csproj +++ b/MatrixDotNetLib/MatrixDotNetCmd/MatrixDotNetCmd.csproj @@ -5,6 +5,10 @@ netcoreapp3.1 + + + + diff --git a/MatrixDotNetLib/MatrixDotNetCmd/Program.cs b/MatrixDotNetLib/MatrixDotNetCmd/Program.cs index 5cb6afd..4a41df2 100644 --- a/MatrixDotNetLib/MatrixDotNetCmd/Program.cs +++ b/MatrixDotNetLib/MatrixDotNetCmd/Program.cs @@ -1,4 +1,7 @@ using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.Specialized; using System.IO; using System.Linq; using System.Runtime.CompilerServices; @@ -66,7 +69,7 @@ namespace MatrixDotNetCmd Console.WriteLine("Logged in!"); // show the room menu - RoomMenu(); + RoomMenu(false); } catch(Exception ex) { @@ -77,18 +80,57 @@ namespace MatrixDotNetCmd Console.WriteLine(ex.Message); } - void RoomMenu() + void RoomMenu(bool getPublic) { - MatrixUserRooms rooms = session.GetRooms(); - // prompt user to choose a room // i guess we should find an alias for each room, if it exists string roomList = "Select a room:"; + List rooms = new List(); + + OrderedDictionary roomz = new OrderedDictionary(); - for (int i = 0; i < rooms.Joined.Count(); i++) + if(getPublic) + { + // get public room directory + MatrixRoomDirectory pubRooms = session.GetPublicRooms(); + + // display first page of rooms + // I might complete this but rn I do not care enough + foreach(MatrixRoomEntry rm in pubRooms.Rooms) + { + if (rm.Alias != null) + { + rooms.Add(rm.Alias); + roomz.Add(rm.RoomId, rm.Alias); + } + else if (rm.Aliases != null) + { + rooms.Add(rm.Aliases.First()); + roomz.Add(rm.RoomId, rm.Aliases.First()); + } + else + { + rooms.Add(rm.RoomId); + roomz.Add(rm.RoomId, rm.RoomId); + } + } + } + else { - string roomId = rooms.Joined[i]; + MatrixUserRooms urooms = session.GetRooms(); + + foreach(string room in urooms.Joined) + { + roomz.Add(room, room); + } + + rooms = urooms.Joined.ToList(); + } + + for (int i = 0; i < rooms.Count(); i++) + { + string roomId = rooms[i]; // get the aliases for the room MatrixRoomAliases roomAliases = session.GetRoomAliases(roomId); @@ -99,19 +141,20 @@ namespace MatrixDotNetCmd else { roomList += "\n[" + i + "] " + roomAliases.Aliases[0]; + roomz[roomId] = roomAliases.Aliases[0]; } } - roomList += "\n"; + //roomList += "\n\n"; - Console.Write(roomList); + Console.WriteLine(roomList); string roomListItem = Console.ReadLine(); if (roomListItem.Trim() == "") { // user didn't select a room, now what? - Console.WriteLine("You didn't select a room. Type /join #roomId to join a room, or /join to view a list of public rooms."); + Console.WriteLine("You didn't select a room. Type /join #roomId to join a room, /join to view a list of public rooms, or /mine to view a list of your joined rooms"); string stdIn = Console.ReadLine(); SlashInput(stdIn); } @@ -119,7 +162,12 @@ namespace MatrixDotNetCmd { int roomListInt = Convert.ToInt32(roomListItem); - string theRoomId = rooms.Joined[roomListInt]; + string theRoomId = roomz.Cast().ElementAt(1).Key.ToString(); + + string theRoomAlias = roomz[roomListInt].ToString(); + + // now we can join the room or something + } } @@ -129,9 +177,13 @@ namespace MatrixDotNetCmd switch (stdIn) { case "/join": - RoomMenu(); + RoomMenu(true); + break; + case "/mine": + RoomMenu(false); break; - case "": + case "/quit": + System.Environment.Exit(0); break; } } diff --git a/MatrixDotNetLib/MatrixDotNetCmd/obj/Debug/netcoreapp3.1/MatrixDotNetCmd.assets.cache b/MatrixDotNetLib/MatrixDotNetCmd/obj/Debug/netcoreapp3.1/MatrixDotNetCmd.assets.cache index 9c7f5c47867335e5db34c638723f526cd07d4c03..ef0cc44365dd5d1dfdf7f057cba17a98e9911a79 100644 GIT binary patch literal 3326 zcmcImUr!T35C;JjMFbHQ{8v!)?W!U%G5TOytW~KER87obvRt=i^}5^aZWZtgs1JSs zAAI!D@F{%o*$?DQZ?|l(J=!Q+b_jsd9wO=Q}TT-RU z=k&c6T#1VI-YCKSo433h-l89}4H(i&6J92=3`)PSXZaW`y>b|im`H>0J_Ldhhe1$( z7zFi4Kv2Ka3yIoRn%2BPgdq(y15lo-(}0nX?a;D++gk(>l2%+?Hv#HeG%w@KTicuG z!o=Jl%ux`8i3vrRs7IKnf7K^U+2EShXcDX?3u`s9b735ZFfNQS_(vG1w=m$d?U{nV z^D8WnqPbOtJ>wxD?-*38qai&mxzSjZjPRe?H|s#*d=!b!E=;T$pW;v)WyQd zE}EP(CRs+RTqw-~sjcN_4Qw>0Gn_a1FVjZOX;{!N;{ zRa!9z1hp4Bv|drN8q@3@Z8}M{43ucdfGTg5Mqew0LkURqGH#8c-9pt&yDA3lOlliV2t-zB+j@XvzX>ppX@?eXlH z?!7bXWcVC}ax*+*AfkT149}W*p9lNIS#?>*gJLt}Vp%(?cI7uX+lse5=ghQ`mqP@Y zcI+YeoCk5&bOHYH)S!O9HC=@9OCXm)QXq36pALF`?-@Vf<;?@kewKFy>~MKkK~f+K zAojTiALE5aj_P7`8_AdBO=`*=egW4QXbp#>E6Rx?(VKa0re1@ZNw;5E(y@kzyLH@{ z7f6kcn{VUR(ssfyqvT}Zo;aFZ_3~QGnTtEANcvkKJO$W zP!SY>n6Z=j*%c;6W(vXtVKn1pdnR#KkP-!ulF2qK9AF+;!{khsOjQn`948QitmOt` U9w6ogVr0NK`6@^6>U+*dB(1& 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

;pB zJG4Bgw1Ia$5B+}HLx12p^oQvV{i)}nKSypood5l6m@g2id4j$~jygd`4f7o~xKGgc z$juI_KOj<*>W|1#RE^8-S8Q-o{T;d4LG=$rYEs>Z97WYQt9e*#Q=;V3mozot=i|f$4 zq&xH;o`>EGx%Ke>_peO5DXMx2Nq0uoxa^8OsrJqqs(oBk`=+Bh(39$Z$n`FZgVdpQ zS=^r;S{Fq85h(FI^f2URM}ZlxsOkbUf>AXJ%otCq`yksbVb(+F|*R=mzRMsUDdr)h%9tk5W{10bazY5=Ej* zzreAcRFBV;>J~q%Cn&1=te(iI8ja0qo>b4s8mecys4itxjRJhGC)M+_hUx__su!lC zdYLEH%d>`Ry^HD zDsNi@_jpphFH@>pyav8sQPnl@Dn^ygDw6guum*p*r)3^NZan~h|Do_&L~2gUJc=C8 zX_+TIsXm=GRG)ECU6+pP3!YS8${MOKyQse6psM=8fj2#=zMVBx-*HiWmr*sk5FdF` z{UmFsu6I%Wlu^Z>smA6jq}8R%5 zHD&Iznv2}*IIB$%sd-lOkfYA3ajgnZs?D>8Y6}%z z)g3*lcF2_K7ViUhR8(~zxD%s_3OH2*@9IglYo=7UcprFoMOF8K_i#`py7UX|?Mbyq z)==%~qFT(T8rNz+PpbX1hUx$p)q&}#9^grJaMn;A;-XsOpo(VJ{sl&QQavbZsE&3~ z9mA*+N16|&Utppq)zYk?I@v{a3ZrUVtA}_}oslWkE#BD7R8)0iGmBBBvq^0${Q~8l zRIN;@Zt=#ZQc=~7O%AesxYm>Ef~=vs&_%V5QKf>btEHno zsV>fx>K4CNmnf?GT0Pc5RbQ(oc~U(kQ>t71T0K=!)z|82jH*$9&+?>tPS#Le=AwFT zlB%MqXZJ7iqZ^S8mia0s9wvcsxxa-z0s5E&B*m$ z6174dS}%#Zg&o?KFKGgIcpmyLKaDX zC@_zCQhhvYs6OGM`eZt)&w5gQE^DYh@1pvGgQ~9FU-hDz{~B_;W$?vH``e5$D@Fxn zyK;O8EL35|CRvGKtO}+qYz@cfD)BW*Y!0-fZycIar1Zf<&neP(yrODJ->x$c@IE_$ zQCR7Fb?)h8`Z$?=0R0*b`cfH1;ChY5=bi_kuTPl~(5I+8DbN?E+!4_CgvcpiX0?ch2<^Zx-P C_7n~P delta 1425 zcmZuwTT4_?6yE#jnQ#1J)<6tx6S zBr4?JsU}p3EdNFu6bUcGNZkEi+UjK~5At+8_Az^5gjaReQAX@1a3U$YkuLjHm93}G zb#F@c{Eln`<;{V}ycL_8i(Rt(C+A{QhG?X$XmT8AO`3d4H~FZV1n5h>Tr~+&-b~#O z4S>JTvZf8uOj*%F;6&2oL%PX()ufd^*DF#c=1wJTl=sOOe|^UcahUd^-O;5rDg7>8 z`mHM6L0{^X>fIk@^2hBm((Qz9m!kVBUH7G`djh&u>XExC@0Ck8yfH)cK)P3vUQL&N zu1fb2!>l2|zgk=Fy0B3A#W=z-cNpSqWK%y{n2zy!%4P6RvAsUZ= 1.0.0" + "MatrixDotNetLib >= 1.0.0", + "System.Collections.Specialized >= 4.3.0" ] }, "packageFolders": { @@ -109,6 +1412,12 @@ }, "frameworks": { "netcoreapp3.1": { + "dependencies": { + "System.Collections.Specialized": { + "target": "Package", + "version": "[4.3.0, )" + } + }, "imports": [ "net461", "net462", diff --git a/MatrixDotNetLib/MatrixDotNetCmd/obj/project.nuget.cache b/MatrixDotNetLib/MatrixDotNetCmd/obj/project.nuget.cache index 198184d..7668932 100644 --- a/MatrixDotNetLib/MatrixDotNetCmd/obj/project.nuget.cache +++ b/MatrixDotNetLib/MatrixDotNetCmd/obj/project.nuget.cache @@ -1,10 +1,28 @@ { "version": 2, - "dgSpecHash": "8K9QsUKHtNC7PQ873ayC0GHP0lzCog8MTKCNWMZpyzUOnHRnzzR9zoCKZj29McVjauf8VButj3vnkK+05EZTuA==", + "dgSpecHash": "gh4758M0XWKdnbAuiUsvkVtqh82+N/bkCf1KzJxu9ZhL8LktmgTG0/UO95U541U2RezmrouG7omHkJBEYFVrsQ==", "success": true, "projectFilePath": "D:\\Source\\MatrixDotNetLib\\MatrixDotNetLib\\MatrixDotNetCmd\\MatrixDotNetCmd.csproj", "expectedPackageFiles": [ - "C:\\Users\\Claire\\.nuget\\packages\\newtonsoft.json\\12.0.3\\newtonsoft.json.12.0.3.nupkg.sha512" + "C:\\Users\\Claire\\.nuget\\packages\\microsoft.netcore.platforms\\1.1.0\\microsoft.netcore.platforms.1.1.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\microsoft.netcore.targets\\1.1.0\\microsoft.netcore.targets.1.1.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\newtonsoft.json\\12.0.3\\newtonsoft.json.12.0.3.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.collections.nongeneric\\4.3.0\\system.collections.nongeneric.4.3.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.collections.specialized\\4.3.0\\system.collections.specialized.4.3.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.diagnostics.debug\\4.3.0\\system.diagnostics.debug.4.3.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.globalization\\4.3.0\\system.globalization.4.3.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.globalization.extensions\\4.3.0\\system.globalization.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.io\\4.3.0\\system.io.4.3.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.reflection\\4.3.0\\system.reflection.4.3.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.reflection.primitives\\4.3.0\\system.reflection.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.resources.resourcemanager\\4.3.0\\system.resources.resourcemanager.4.3.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.runtime\\4.3.0\\system.runtime.4.3.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.runtime.extensions\\4.3.0\\system.runtime.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.runtime.handles\\4.3.0\\system.runtime.handles.4.3.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.runtime.interopservices\\4.3.0\\system.runtime.interopservices.4.3.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.text.encoding\\4.3.0\\system.text.encoding.4.3.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.threading\\4.3.0\\system.threading.4.3.0.nupkg.sha512", + "C:\\Users\\Claire\\.nuget\\packages\\system.threading.tasks\\4.3.0\\system.threading.tasks.4.3.0.nupkg.sha512" ], "logs": [] } \ No newline at end of file diff --git a/MatrixDotNetLib/MatrixDotNetLib/MatrixApis.cs b/MatrixDotNetLib/MatrixDotNetLib/MatrixApis.cs index fae3ede..52ab865 100644 --- a/MatrixDotNetLib/MatrixDotNetLib/MatrixApis.cs +++ b/MatrixDotNetLib/MatrixDotNetLib/MatrixApis.cs @@ -62,7 +62,7 @@ namespace MatrixDotNetLib /// /// https://matrix.org/docs/api/client-server/#!/Room32discovery/getPublicRooms /// - public static string RoomList = "/_matrix/client/r0/publicrooms"; + public static string RoomList = "/_matrix/client/r0/publicRooms"; ///

/// Updates the visibility of a given room in the directory. Puts a visibility object. @@ -94,7 +94,7 @@ namespace MatrixDotNetLib /// /// https://matrix.org/docs/api/client-server/#!/VOIP/getTurnServer /// - public static string Voip = "/_matrix/client/r0/voip/turnserver"; + public static string Voip = "/_matrix/client/r0/voip/turnServer"; } public static class Key @@ -442,6 +442,10 @@ namespace MatrixDotNetLib public static class Room { + /// + /// Private string for room URL + /// + private static string roomBase = "/_matrix/client/r0/rooms/{RoomId}"; /// /// @@ -449,7 +453,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Create = "/_matrix/client/r0/createroom"; + public static string Create = "/_matrix/client/r0/createRoom"; /// /// @@ -465,7 +469,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Active = "/_matrix/client/r0/rooms/{RoomId}/joined_members"; + public static string Active = roomBase + "/joined_members"; /// /// @@ -473,7 +477,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Members = "/_matrix/client/r0/rooms/{RoomId}/members"; + public static string Members = roomBase + "/members"; /// /// @@ -481,7 +485,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Messages = "/_matrix/client/r0/rooms/{RoomId}/messages"; + public static string Messages = roomBase + "/messages"; /// /// @@ -497,7 +501,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Ban = "/_matrix/client/r0/rooms/{RoomId}/ban"; + public static string Ban = roomBase + "/ban"; /// /// @@ -505,7 +509,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Forget = "/_matrix/client/r0/rooms/{RoomId}/forget"; + public static string Forget = roomBase + "/forget"; /// /// @@ -513,15 +517,15 @@ namespace MatrixDotNetLib /// /// /// - public static string Invite = "/_matrix/client/r0/rooms/{RoomId}/invite"; + public static string Invite = roomBase + "/invite"; /// - /// + /// Starts the user participating in the given room. Posts RoomId (not alias). /// /// - /// + /// https://matrix.org/docs/api/client-server/#!/Room32membership/joinRoomById /// - public static string IdJoin = "/_matrix/client/r0/rooms/{RoomId}/join"; + public static string IdJoin = roomBase + "/join"; /// /// @@ -529,7 +533,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Kick = "/_matrix/client/r0/rooms/{RoomId}/kick"; + public static string Kick = roomBase + "/kick"; /// /// @@ -537,7 +541,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Leave = "/_matrix/client/r0/rooms/{RoomId}/leave"; + public static string Leave = roomBase + "/leave"; /// /// @@ -545,7 +549,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Unban = "/_matrix/client/r0/rooms/{RoomId}/unban"; + public static string Unban = roomBase + "/unban"; /// /// @@ -553,7 +557,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Marker = "/_matrix/client/r0/rooms/{RoomId}/read_markers"; + public static string Marker = roomBase + "/read_markers"; } public static class RoomEvent diff --git a/MatrixDotNetLib/MatrixDotNetLib/MatrixRoom.cs b/MatrixDotNetLib/MatrixDotNetLib/MatrixRoom.cs new file mode 100644 index 0000000..05d53d1 --- /dev/null +++ b/MatrixDotNetLib/MatrixDotNetLib/MatrixRoom.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace MatrixDotNetLib +{ + public class MatrixRoom + { + /// + /// Gets or sets the chat room id. + /// + [JsonProperty("room_id")] + public string RoomId { get; set; } + } +} diff --git a/MatrixDotNetLib/MatrixDotNetLib/MatrixRoomDirectory.cs b/MatrixDotNetLib/MatrixDotNetLib/MatrixRoomDirectory.cs new file mode 100644 index 0000000..fff02f9 --- /dev/null +++ b/MatrixDotNetLib/MatrixDotNetLib/MatrixRoomDirectory.cs @@ -0,0 +1,22 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace MatrixDotNetLib +{ + public class MatrixRoomDirectory + { + [JsonProperty("chunk")] + public MatrixRoomEntry[] Rooms { get; set; } + + [JsonProperty("next_batch")] + public string NextPage { get; set; } + + [JsonProperty("prev_batch")] + public string PrevPage { get; set; } + + [JsonProperty("total_room_count_estimate")] + public int RoomTotal { get; set; } + } +} \ No newline at end of file diff --git a/MatrixDotNetLib/MatrixDotNetLib/MatrixRoomEntry.cs b/MatrixDotNetLib/MatrixDotNetLib/MatrixRoomEntry.cs new file mode 100644 index 0000000..78be9ee --- /dev/null +++ b/MatrixDotNetLib/MatrixDotNetLib/MatrixRoomEntry.cs @@ -0,0 +1,37 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace MatrixDotNetLib +{ + public class MatrixRoomEntry + { + [JsonProperty("aliases")] + public string[] Aliases { get; set; } + + [JsonProperty("canonical_alias")] + public string Alias { get; set; } + + [JsonProperty("avatar_url")] + public string Avatar { get; set; } + + [JsonProperty("guest_can_join")] + public bool GuestAccess { get; set; } + + [JsonProperty("name")] + public string Name { get; set; } + + [JsonProperty("num_joined_members")] + public int Members { get; set; } + + [JsonProperty("room_id")] + public string RoomId { get; set; } + + [JsonProperty("topic")] + public string Topic { get; set; } + + [JsonProperty("world_readable")] + public bool Readable { get; set; } + } +} diff --git a/MatrixDotNetLib/MatrixDotNetLib/MatrixSessionManager.cs b/MatrixDotNetLib/MatrixDotNetLib/MatrixSessionManager.cs index 79556e2..787a024 100644 --- a/MatrixDotNetLib/MatrixDotNetLib/MatrixSessionManager.cs +++ b/MatrixDotNetLib/MatrixDotNetLib/MatrixSessionManager.cs @@ -2,10 +2,12 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.Linq; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Reflection.Metadata.Ecma335; +using System.Runtime.CompilerServices; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; @@ -100,6 +102,41 @@ namespace MatrixDotNetLib return (MatrixRoomAliases)JsonConvert.DeserializeObject(responseJson); } + public MatrixRoomDirectory GetPublicRooms(int limit = 0, string page = null, string server = null) + { + string[] querystring = { }; + + if (limit > 0) + { + querystring.Append("limit=" + limit); + } + + if (page != null) + { + querystring.Append("since=" + page); + } + + if (server != null) + { + querystring.Append("server=" + server); + } + + string responseJson = ""; + + if (querystring.Count() > 0) + { + string qs = string.Join("&", querystring); + + responseJson = ApiResult(MatrixApis.Server.RoomList, httpAction.GET, query: qs); + } + else + { + responseJson = ApiResult(MatrixApis.Server.RoomList, httpAction.GET); + } + + return (MatrixRoomDirectory)JsonConvert.DeserializeObject(responseJson); + } + public enum httpAction { DELETE, @@ -108,7 +145,7 @@ namespace MatrixDotNetLib PUT } - public string ApiResult(string api, httpAction action = httpAction.GET, string json = null, MatrixApiEntities entities = null) + public string ApiResult(string api, httpAction action = httpAction.GET, string json = null, MatrixApiEntities entities = null, string query = null) { // simplest implementation // might not work for UWP @@ -210,6 +247,8 @@ namespace MatrixDotNetLib // convert error object to a string string errMsg = error.ErrorCode + ": " + error.ErrorMessage; + errMsg += "\n\nAPI accessed : " + url; + errMsg += "\nToken Used : " + (this.Token.Length > 0 ? "yes" : "no"); // throw exception (can be caught and handled gracefully) throw new Exception(errMsg); @@ -218,6 +257,8 @@ namespace MatrixDotNetLib { // web server responded with an HTTP status code other than 200 OK string errMsg = "Server returned " + (int)responseMessage.StatusCode + ": " + responseMessage.StatusCode.ToString(); + errMsg += "\n\nAPI accessed : " + url; + errMsg += "\nToken Used : " + (this.Token.Length > 0 ? "yes" : "no"); throw new Exception(errMsg); } else diff --git a/MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.dll b/MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.dll index 8749b638310ad781c99d3983795fc5c9d1788c7f..81cd71fb0822492176d5e4d2e94ae5092b44df86 100644 GIT binary patch literal 27136 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 delta 8788 zcmcgxdw3M}x&CHmclJKJGn<42NZ1XRY!V3fn;<5FKveF6hKnY0k%+pm309>t3(_cR zZR1!Jsu+9*%3Cz{8RJkbS4XF3_}B8oyk*+z7pm)3`SODW-H331keUL~ALCS~OskkJc4d%%A)v{aX-Di>b|`q5j{1iY9mVko zWkJFtesHwJ4sFC#w4`NQ!-KY!t%6T)P+JE3n4f15x8uXtl0Q=oCwDa_(S|h)CliG= z$l~ZLdpKBj1b}==r_Oegwr!Wzg>VGzvbtn#Wx%u(**Z=d35eBV<}h$_!|)yorQOjd zV{xp?n3IwylpV`*9K(1(G?@D##*&=?o-DSDhvV30aLU#uOY9OJl$rY%#KAElQx0sh zpWUx*BJ!^ZWhY^mdKQP}3$5e}Em>-p4xcuQa@}ZB2qybG{WFu1C1sR1z!~sG2@bNx zD;&<821u6KWrd;?Ob*0c2iAD;NOcTrenPJwx z+yWg86Zhr5#|)G6<%$e2%)^&k%WMj>mzhlktJ#<9?*l)b-KEUjX-s!8J%ibc%<4H6 zOPL&{5kAH8mrM8&Y2cjY%+3Vc%rZayYc}I+b{1IfR?eHr>{Vu{lnZ3`fmDvm%>{4d8FD^6L9{o2sJut{%*B2kmB7o5T9Qj3VE1&ajV zN?a5%>AB!MD@-?`M3_DWT2vCA6?LfC-U>WwZjF}EbN20VlYSd}EM7u?4KptaToiF= zCUW}IW9GXFleR>-+Trj;5sR|+EOZ}&SCxqWdfbGyE8AOn{#C%jRu_hydr$;$|2wfE6)xaeTf13O!Xh?iDR`Dx! zrzOh8bB2av^F)kgF&;Qr?N6{Or7@!3jv3R(?@KX?~%d zbTNz;iMm^=RN--pGrN^?&lfpRy05_z=HNmZX&tQ-wNYXt=?YORWN4#kgD5A$-H)Lw zX{(l?y*N==eM^)NC*){4ovsq~9g|f9T`dZqeW=-VjVtmqoJpf;E^QJu66e-vT1ej( zRVhUm)3u_m!orTGm9$yZw?(bSwTru7XmhL$r!uR1a0ZX2Yj9HQI5$5<=4!5pVMq1r zG>sk>bSL>(JZ3O>u*B>@=4Y;dJ9d8Q-~++J=w9*N0>492#|mzjXt`j47cvW_-|*jx{6h3T{|@j% zPC$lo(6@_wkvd&cVVU@U(p?_!OFB1LFM&b+-QZJzB@}e71Ktv6{GP>FA^gu_<|hPy zU^Aa7{$&y7uVUp&=-MdbCW)>Q|5ovT2()RmIKMZqbCL9DkW;Ua2G}XM6O7e@e-k_?!$k-1AC$qR0?f;0O7}|rc0}D0nj}T1OSvjZ zx!c zgU7^*32u{SHwrhTC)arC!IiK%+~Qx<>29#VV&%2R>ptZBnW{*o`~GbxPF+ z6HqrRwJp$%yTolubp{epcPZ8EqNtztDtS4I`ssjD3(RiZI384LshNO!T&V{z&;UK7 z)FBKsK+h}nIbuONqErMmgLF)($rxyePAJtFbQ6#tD*2CCHy&a?Qz~pFpo}!(uOnE7 zfkr5z)DRSnP?1ulRyXd21C^>lyC@A+>KzOwMkAE^5Ce_T1f}i^bh~8HG$jvWX)Kzh z)KV;4oaQOjiddX3Q0jfV8-<#c`n#QgYE>#4@5cAY4N4Wq6HwPEH35@wXsc57n1t)l zO-dd@he`63dJY{X=}x82M#Ccdky4A%u!!y}s8T+Iis?ZW^Kj6L=`p4D;Gh-LGfI7k zSPA`3DFZ#={6C`P^L91$qdukHv^A&`1tndS(uXQ`Q(~W1N}nmUD{(KBQ7MN>GRr7h zP{Eflr7|i~>L@xaqjIIfIN1Hk9jat9mVm4)C@C|5CaM^JDhALQO7W*+0L@nF>1dBO zkmf7(O7tP9CZ(pL`*Lbg>Kt@mPM0dR5^GUGIakT`Sf~oxq}2B#-86`t-<9Hl4kh2XmvFMJLc~ zr4FO$1X@r~viK8esfz8>4r>$XVx_vZ-$JeXM&=}H7v**Yr(rac=-VpwYz$@+edimg zlj#-}J3schHko!PwI-(Plj&}yIuJXJeyr3^#7?817L*Ka3jO>P^`xjyxAgs3P@h6) zWOxxfmAdQ{_4q03^HWq6UfrB*H~SQI>=gCMDe5-r@3aD4R$md~`FO-0|&3WAsN737ve=M8cr+fj&BbZ+E9w`2SWe zM8{(qZc2RLD08t3Q#CMwr*+23f(?R=f(rzj1Y3b7zC;|4730aC^IODufj$dY(`)o> zVg&F=Vhp`N4=1+Kc8MO7%{5sMq1CW-KsCQ-K3$8E`PI0@l(l;8?mJI0avx z>S#JW13X9kMZkKg)1Z*6H4AT1$WC7P7KLzJy-UO%g`CtY{E$L+`h*`-$PQ^dXiXtI zDdA~_?9>ZyP{>ZR@D_#axOov<6tdMNe2+qQdW9cS$WEW|V+z?JT?V9(os{sjLU!tf zHz;JM*%i^EkgdG%EehG`623ToCS|R(@@Li)`oCbyL zH^LugG>g*$blbHS9|u|y=rr;Y*rJgA?eKRSUE=If$o_u#j?pX5A%*N8hJV256X%#h z_Q@|pSIAC^xvQncO8ePr5Z)lX(a!^F7N294>=UGrWD3>`HVftjy99d$DJ+?S&4PKs zK0%7O5{@v|3pNYp3r>{%X2HB*mte18pCHAgf?%^?Ua(iNPcUUkeZgkIyx;(u=A%aZ zE;+V3?MCtJ8lxI~1FXY0y^(kz$InOjMJuWk-Ka5+3^M*8z_>x23r*%vNlsjxIg(>p z>}SNO6aKN}JR)r`7yQ!ZoU%CM3@z$ncb+tEl4g6QbU;$yvT@U=`x8aLe-o!N#?1hJJ=+HkXX=9$aAADww`U`A`(%IuY^y)Dy+ zdHbhN@a!2WP4h<0XzF=w#!H%(>$z{{4O*lP2PTKt%0RE>tm>ZD*_T8RdtuQz!NkHp z-TkMTfBRtWPOJP^v$Gradc&7b$9vqc=1d9%3@2(i85WrlfpW_^%W@iZ-E!tQGn@s^ zV#~6eCf!+Kw-^3(Ct>MU&~Cwx76yWrAER+L_)_F-^rv)98CS!0uC>@+V5D#hOc654 z$$!U0Aiq5r74=V|{EBclNs6X)82dG+(Q;M< z6h$XV3a7NMBHZbUpw!r}Sti?F&x!?hyU|ls05~azsXf2D@CMDxv^4jlEh`s( zm$W(a`MkxCO;n0su}YVCyIV@k9iTgwcn`N!CZ4p0Jh1HOu`~C-ab?T#ZF7IDO$eg>{SPi V5Popu&p^@m9((Oyw9Zk1{{r;GF1G*x diff --git a/MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.pdb b/MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.pdb index 41741d9cec316ad6e284a935104769de01737b90..a75b8e517a67331546b8b67f742431f9913c740a 100644 GIT binary patch delta 2895 zcmY+Gd2AF_9LIm}?R2l%ZM*FrJ%Da4O97i|t!P5H3lzjFlpb8MP*y1PfOZk8;I^f^ zk<#UGP!Qz^@r=?C8qug2l;R&ojc7dMMZg$MG{FN681?&`+2Ui8@B6*a@B5B<^WMzv z#fsCDci$Sn*Gp9LFww1a!Q_{;KMk+{o|;2j7}~ZtKC%kf!?4M_n#AkwCp1DuPnbA!q@orlI12 zCZI(IBE~gyTM%s!cXUGB#-$PuSA!ucW zq@P`aF1sYnbql)3EvXMNg?J9}OGM2p$nTYO2VxCkFX9fwi-^B@hYpB35qHsM%|&r2 z38kRD(38+n=mmaEr4nxmE-`I7U<%F~ zUWRQT@?rsAEP(5oH0aKxm(6?@U3F)X)U(J1W$WzoC8$^zG;Rrs_0Z$cE6@kfchCfn zpxdB0^o(cdi0!l%uQR*x#$n5#dPtZXX>DbL!t5_rnAfpHVfL3Q%>FWk*mh1qXW znEh6T*>6+WiTSBrNpOSp3iAN`evhn}{g}e+Z&aB52NY(1lfvw8RyfWLy72OjOmG)q&js({{pbDU4t^wf z@_yTyOe*t(YCgZ2UPqh%t7q7S*8ev{=&oxF%ZqR!z zVV(MI3bWs*Fb|MWnEj-}>_4I~``Z;}f5!;(opOVLkpv<)*r_o4yA)=Bx5Dh>QC_#g zz4+9QteDT&V+v0IKb~fupQ@pKN`tB3{R(r3CloFMA5fToBc4<^0Dekg_75t|^BuC- zoS(P@U%X?2hEPiLwXvCB0}Xr4SEE_-N=3TPKXO*xjvM03`rI5uO;RyRoB1^D=FxP} zo5(oLPn?^oP}iwpK7z;GKQG;jdNw_cGHC8lh^C;PZecg#T9 z;Alj-+0l(scOF5x(`9_B-(ugeG1}49X-Lm1vB6m7DKmC?n!+8~lU_VGb7}034XMb~ zOBGjszfyW(@Rd!o=e=E<72Dl1ZYan5y)7QRYXyGXH!o~&Z=K!T5p9aKcXX9Ebvl;` zP1p6l+ru;7nX<3+azp-^!d-I)XG}kOc7EXr$G&}wTtmm46>V25?YKovpJ;`f%#eA5 z6-v$Ev&d(WKWrxbksNd4xH)pE4eGF)VO;jwmX327ykSrRe+%r3e! zF*Ce4cTxM;pFaPw@@!GQy-a^@YiQG{ra03O-_Z#HV))e z#Ov_Krdm3)saE5Ur|i;1C@2bSXtom8eCf=jnP4?U*dp;7q!Jz0_hg%Zej}5tV#|zguiT{Oj zB#k#J{CNt^^DirUR6IHhZHo}*0|^&FZ(Nv%s{a* zHBcz~*BeU$3uONr#&dz`PHPX6v7uiA-;2zF69X>~ygu;uz`Fw<4t!#q4^5S+Nk%yD YHkpbU4S9{u)Jv)3sgtQ;<8)r}e{Vf;xBvhE delta 1803 zcmYk7Yitx%6vxkAH*9W6DaYh7e2E=oXSstfnHXvX296HrKVQ3ZEM1`TKi9k63JeWtnTvK?oUre~2C z@S&)gXW;?&|lDMm!Nv+DD;sl8B%A}aEpBx?^$Zsc1p}^wMxvp z`i#V!-z72U+a%_EJD!QKp9#@v@NTd(&4ol^dKLqj>49Y^=m6_!?o(2n1@1xa{d7JX zJcF1YIoIcaUq{@S=KH~y5Lc!-7hH}WpHFih_!n>m*0(3f$3O^+)uMnWT>|EdJL-lO znLBz;V$Sc8nDe~IVm;^ihc7bc_ez|}uT8Hszy*C0^91`O=6t`zoF9;w^Djuu`5}op z&!6hz4+?X^h%~?j2l0t47VzYw67wS(lehtVNa7msVTrl^h{OT#_&p92fAkag1}G04 zmYDOC67zx)iMgIHeqe&$fK{jy)?vR5DjMO7-wdKCB+~Iyb{swir%({qVV^2a+K)Js zK7iF|Gpvi&z#7DzxzQ`1I2&NI={T&9Um+YTeAM}E%S%jV;AMgj=_>pg!$JRK%)%Bq ze}a9?Np1(7c^PMr(Oqvvnq~ZfQ`M=Y*LQ=BL8ED$E68-WE}Z zh!%=yt%yD;qP^R(*H>>@QPd)z)Eu&|^2{DNVVDtW*9%B{ptd^lw&T zUt7+C^;)XCXl-(9!7bs5e;&Ua|0@1%{JZ##_|MkkMKwyI&I%W;RuU2GlcEkSaWQcz O@kQc_6(|m(C;A_U0PU>+ diff --git a/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.csproj.CoreCompileInputs.cache b/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.csproj.CoreCompileInputs.cache index ef03dfd..f0d5155 100644 --- a/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.csproj.CoreCompileInputs.cache +++ b/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -5eb8af853df6cefc73690046f1829a4a47fc69f4 +d134ecf746b427f75753ffff9f48fb08b71ead11 diff --git a/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.csprojAssemblyReference.cache b/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.csprojAssemblyReference.cache index d339bfd9a98aecb29431b4fc97d7666a01424a81..cda2a63cba4306d21cb79e66c557223978d4f362 100644 GIT binary patch literal 104852 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 delta 30 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 delta 8788 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 V5Popu&p^@m9((Oyw9Zk1{{r;GF1G*x diff --git a/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.pdb b/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.pdb index 41741d9cec316ad6e284a935104769de01737b90..a75b8e517a67331546b8b67f742431f9913c740a 100644 GIT binary patch delta 2895 zcmY+Gd2AF_9LIm}?R2l%ZM*FrJ%Da4O97i|t!P5H3lzjFlpb8MP*y1PfOZk8;I^f^ zk<#UGP!Qz^@r=?C8qug2l;R&ojc7dMMZg$MG{FN681?&`+2Ui8@B6*a@B5B<^WMzv z#fsCDci$Sn*Gp9LFww1a!Q_{;KMk+{o|;2j7}~ZtKC%kf!?4M_n#AkwCp1DuPnbA!q@orlI12 zCZI(IBE~gyTM%s!cXUGB#-$PuSA!ucW zq@P`aF1sYnbql)3EvXMNg?J9}OGM2p$nTYO2VxCkFX9fwi-^B@hYpB35qHsM%|&r2 z38kRD(38+n=mmaEr4nxmE-`I7U<%F~ zUWRQT@?rsAEP(5oH0aKxm(6?@U3F)X)U(J1W$WzoC8$^zG;Rrs_0Z$cE6@kfchCfn zpxdB0^o(cdi0!l%uQR*x#$n5#dPtZXX>DbL!t5_rnAfpHVfL3Q%>FWk*mh1qXW znEh6T*>6+WiTSBrNpOSp3iAN`evhn}{g}e+Z&aB52NY(1lfvw8RyfWLy72OjOmG)q&js({{pbDU4t^wf z@_yTyOe*t(YCgZ2UPqh%t7q7S*8ev{=&oxF%ZqR!z zVV(MI3bWs*Fb|MWnEj-}>_4I~``Z;}f5!;(opOVLkpv<)*r_o4yA)=Bx5Dh>QC_#g zz4+9QteDT&V+v0IKb~fupQ@pKN`tB3{R(r3CloFMA5fToBc4<^0Dekg_75t|^BuC- zoS(P@U%X?2hEPiLwXvCB0}Xr4SEE_-N=3TPKXO*xjvM03`rI5uO;RyRoB1^D=FxP} zo5(oLPn?^oP}iwpK7z;GKQG;jdNw_cGHC8lh^C;PZecg#T9 z;Alj-+0l(scOF5x(`9_B-(ugeG1}49X-Lm1vB6m7DKmC?n!+8~lU_VGb7}034XMb~ zOBGjszfyW(@Rd!o=e=E<72Dl1ZYan5y)7QRYXyGXH!o~&Z=K!T5p9aKcXX9Ebvl;` zP1p6l+ru;7nX<3+azp-^!d-I)XG}kOc7EXr$G&}wTtmm46>V25?YKovpJ;`f%#eA5 z6-v$Ev&d(WKWrxbksNd4xH)pE4eGF)VO;jwmX327ykSrRe+%r3e! zF*Ce4cTxM;pFaPw@@!GQy-a^@YiQG{ra03O-_Z#HV))e z#Ov_Krdm3)saE5Ur|i;1C@2bSXtom8eCf=jnP4?U*dp;7q!Jz0_hg%Zej}5tV#|zguiT{Oj zB#k#J{CNt^^DirUR6IHhZHo}*0|^&FZ(Nv%s{a* zHBcz~*BeU$3uONr#&dz`PHPX6v7uiA-;2zF69X>~ygu;uz`Fw<4t!#q4^5S+Nk%yD YHkpbU4S9{u)Jv)3sgtQ;<8)r}e{Vf;xBvhE delta 1803 zcmYk7Yitx%6vxkAH*9W6DaYh7e2E=oXSstfnHXvX296HrKVQ3ZEM1`TKi9k63JeWtnTvK?oUre~2C z@S&)gXW;?&|lDMm!Nv+DD;sl8B%A}aEpBx?^$Zsc1p}^wMxvp z`i#V!-z72U+a%_EJD!QKp9#@v@NTd(&4ol^dKLqj>49Y^=m6_!?o(2n1@1xa{d7JX zJcF1YIoIcaUq{@S=KH~y5Lc!-7hH}WpHFih_!n>m*0(3f$3O^+)uMnWT>|EdJL-lO znLBz;V$Sc8nDe~IVm;^ihc7bc_ez|}uT8Hszy*C0^91`O=6t`zoF9;w^Djuu`5}op z&!6hz4+?X^h%~?j2l0t47VzYw67wS(lehtVNa7msVTrl^h{OT#_&p92fAkag1}G04 zmYDOC67zx)iMgIHeqe&$fK{jy)?vR5DjMO7-wdKCB+~Iyb{swir%({qVV^2a+K)Js zK7iF|Gpvi&z#7DzxzQ`1I2&NI={T&9Um+YTeAM}E%S%jV;AMgj=_>pg!$JRK%)%Bq ze}a9?Np1(7c^PMr(Oqvvnq~ZfQ`M=Y*LQ=BL8ED$E68-WE}Z zh!%=yt%yD;qP^R(*H>>@QPd)z)Eu&|^2{DNVVDtW*9%B{ptd^lw&T zUt7+C^;)XCXl-(9!7bs5e;&Ua|0@1%{JZ##_|MkkMKwyI&I%W;RuU2GlcEkSaWQcz O@kQc_6(|m(C;A_U0PU>+