From 93c7a850d63c4f93afdad5b10750de51c8418143 Mon Sep 17 00:00:00 2001 From: Claire Strodtbeck Date: Tue, 16 Jun 2020 13:06:43 -0700 Subject: [PATCH] GetRoomAliases() now works. TODO: get friendly name of 1:1 chats --- MatrixDotNetLib/.vs/MatrixDotNetLib/v16/.suo | Bin 53248 -> 56832 bytes MatrixDotNetLib/MatrixDotNetCmd/Program.cs | 99 ++++++--- ...rixDotNetCmd.csprojAssemblyReference.cache | Bin 6992 -> 6992 bytes MatrixDotNetLib/MatrixDotNetLib/MatrixApis.cs | 199 +++++++++--------- .../MatrixDotNetLib/MatrixRoomAliases.cs | 13 ++ .../MatrixDotNetLib/MatrixRoomManager.cs | 10 + .../MatrixDotNetLib/MatrixSessionManager.cs | 25 ++- MatrixDotNetLib/MatrixDotNetLib/MatrixUtil.cs | 15 -- .../Debug/netcoreapp3.1/MatrixDotNetLib.dll | Bin 24064 -> 24064 bytes .../Debug/netcoreapp3.1/MatrixDotNetLib.pdb | Bin 6192 -> 6372 bytes ...ixDotNetLib.csproj.CoreCompileInputs.cache | 2 +- ...rixDotNetLib.csprojAssemblyReference.cache | Bin 104852 -> 424 bytes .../Debug/netcoreapp3.1/MatrixDotNetLib.dll | Bin 24064 -> 24064 bytes .../Debug/netcoreapp3.1/MatrixDotNetLib.pdb | Bin 6192 -> 6372 bytes Scripts/Read response as async.linq | 42 ++++ 15 files changed, 247 insertions(+), 158 deletions(-) create mode 100644 MatrixDotNetLib/MatrixDotNetLib/MatrixRoomAliases.cs create mode 100644 MatrixDotNetLib/MatrixDotNetLib/MatrixRoomManager.cs create mode 100644 Scripts/Read response as async.linq diff --git a/MatrixDotNetLib/.vs/MatrixDotNetLib/v16/.suo b/MatrixDotNetLib/.vs/MatrixDotNetLib/v16/.suo index 4280dc45d9b0a1b763902982b9a756d3029a40a0..7db536c2cb2286bbe118561d659436eb6629cb88 100644 GIT binary patch delta 3985 zcmdT{dr(wm6u;lyWgo)A0?V>y;(~$%$fGPVN$)OXY8Zm$BVQm3N-ZqHQa}$bh}ASr z1A8jTD3!{ZUIsUd7}Tp-8kzaZoN+XrX8NP4OoJXwww<#NTFmTaPJJ`KIp;gycfapD zzw_O5?iDvE#9l>9I-IE18uT0&%5fZz_}T4tqu>;9Mibpx*v?$MJybM|-4dO1giXK! z;X0`2>)BBlP_1TBP^Y*@^%R=#4S_*Lg4T>GuHYU`kGB>o?J6|HB1ZWJXpmaYdHp56 zegaCRPme=69ueW|d!KZ>ld+$KxC#-DNJP-N;dRXdT{d>25jP?ty{9mMpiQ(aLc?MN z&9tFhj_|KYvKae!B31<0%Y6DBD3?O3cD_qhu6yj6G(c}VHrHo`HUKT>GEktt>qTDy^U#}GVD}6Tmd1K4a>pT`K-3ym_ zyRJ|tV{4?EFgFUQ33sz~P!rL>o`ivjeeh01hH4I;>~I7OhSv`p%C=t1pNfzMqXv0) zNE$FTFmNW_s-bYBTW$!~kCXb7QW%(H5;dAYt21UI4=+xA#X$bg#}SeXQPKs4mD7&t z*ksh`a{E_uO;ti|Ty6;U>1FlX*#a1dYhd%F8p~?N_o$`8aVq9A^^jcO~o! znTG4oW%93udq_Xz>}MLfg#kwRA>}95C=E==W1juB0mG6rO{ruysV@IPWk)98l_fF| zN5(;%u^^}y=k0_aN9SpVKk*0Nw}shCN{edj&SlQ>%8W@F76_Zssik+8A=L2xj8R!H zOKa~+c>Il7FE5U_9=fXYwP~A1zIwAQ-dgtNPZev~s$6YZy!EYS`=R>X-<_1^##_Jo z`q0&%>$|dcFO0WBzS<1JOxYEetz*RHg?OfyH85rYJkMnsijJQk73DV%@qO&VlqP6c z$1Ei*oLwrF-oB2xQubVgVaN$hmz;S@p4p)8npuz?ngPNh3{3uBrHB2g0eeG#)+0W; zV`-+J@+HqRC9GeX%pQhLy92&iq=N3ZO*%>pl!-`Afre$t=v8C)C>o!V%FW@bI0xpx zD$Ek)Tq-vkWf@n2`L&vJqLuU&+#+rXXU35#)T=!?cslH;hzyL`r1VTr%nFBMhWl0R zjxz5^8a;mY4e{0wD#pk3zjACRmmhDv6p@4ns!QQ|N8)+zQo5o9N^aMg(*){0QjkN}_Gw+`ewfnAP`o|Wsc zdfYF9aF5*8ATSUflwI|5ph-d#lLS%2K(jd$5Zb z6n<1j;!C9FK7^v?$E6KTtqi_vPJ_bcCm^{cjrEZ^xXR%uFS3^vRhLwQyv73NCK1lI zO@#P0@4=Qwk1Nz%4m}|yx9C|ot>)IU#mD8urP@U$|4 zPCktNAP@WCe#@d>@DVxBL91gjh)*ZNS%(S#R4i|A2Vs*)r{#vlhw7=f{TJfnQW)uy zc-s|nF)CD6{sQgzb@My4zXUPsRiN)qzc@wU+PXk$*;dJ*#gRGGk>qFkd4-e9mE3zU z88mfIWy@jJwphuuzWq1$?VBth>=LndSz*Rj0~j}d0rDo{e48ZpJjZZgG4%INq`M() z>nUZf51Pgl;Fky$#o?thl`F;qO20Yh`qrp@bHGv_%?wg(Z#0ADOB4Ryqr4|`GzP30 zrN6(n;g06Y&q@_x3j6cp&K(4Ew;7JNkEgmX343J*C)>w?S$`#*O-zF2TaWycHGTmf Cv`|3+ delta 3293 zcmchZeNaMgmB2cKp=pEQ23T#JZL^byA)FK?F>PWLBa#f?fjAD8rDrU_SvR zkHjO3kVqsMVYUyUOhKxVq@XSWr5Vw}pfVYH6s^h)*egRSaB=DtPh!i6JcX=7o<`Oq zEQCsw8inhLS+A*%JcqcE2VX!Eha!|FWBM& zv>t5n4*EPy#gBzj1)9RS8~QK-8zr$Y9cQOUWP^7W7_5~I#OZ`-j(#dmX&sd2fGue= z7^C%c1xzJ5s2*&|r{Mj?DNv&Qgno%e5!9PvdSovMbH(=I8A5>;$}Fu!2cZBnq}XB&qp=vtW4 zIp`X&r3Yv>*fP2~BPUK9u22O&EAVj8OuV~1lKQeZZ_;HJg?KkfPeG^ukR{~!T|K4M z;?#dx zJ-+J4T*-RQXXGHIUI|LmK}z90Q#MpJei+4)&CW?CEpXbj7=#xz)C`{5Wat}Jz*l3- z!MRo8TgSz;kQTCwwBeb-PL5C*Y#D@=jT-P}=|gYc4g?zE*hDV;aV(O?fNQ-vt_`g^ z5$2xBM}qEoklO3h%SbEv8L7gvqK(){6S1P-HvHd%+GetY=%DnaJ6t)1{Eh+o3n=bz zMK#D%+DH!BO4=aMu}O4VoYcSbC`Uv7!+@fdb8(1+El<&?2Q5?+qNfCInbL3vkB?1i zUGKp+@qf;VeqmDnCpj^JYe%R074j4LGSEfx$ttp%zu)Dl=CsesJA+sy#xa6WBbU8uj zmLTKeW6*mw9*o-yOWAdZT`T^}?1Q88*@W*cAN(2wI$gmv^g@xn0>ZkB{BD6ldshWi z>>qg?U;Q?$t|qLnMpB2TK?C;Kj_tq}EB)Z+BtOMvQpA{tY0HDs9#=#OUfbAhB8*&v zhPMuieO?cRZ%*cd`K?2ceI^&qANmb^dvFm9?{#?Hk|?|(QHbA{1Gn8(vkSnprVxZ4 z3BSFrEXM;}n(@3i=7QHhD*)HwKhZGgd-rYeo0G9LZZ}(w{L@K2*cQZyful68XjV(K zQYp5}M349pjhr(kOC<5hj}L{!`R5E%rD4_V#kObb zwz>@sR**&oa2?BkK)w>ZdnKxd;eLl)Ey8IDoF8E2?2~?kOoUS3o78ue!th}=+&dZ$ z184R>AUC^NB=Rp^>SOZ0+}ycV1qa@2^^U)fugz0m>+Ki3KR3Xlb}i&xTr!u4jYBhu z@K0#vcrHStDM{?Trs8l~{`LLvWqz#q`qv$J^%yFIJ6~srrlDpE86T90C1d4OE{Qil z)&Cec$CunUMZnE;#R-?M7tT%v(@;NfLp7pq - /// Gets or sets login session token - /// - public string Token { get; set; } - - /// - /// Gets or sets server FQDN - /// - public string Server { get; set; } - - /// - /// Gets or sets the login session as an object - /// - public MatrixLoginResponse Session { get; set; } + void RoomMenu() + { + 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:"; + + for (int i = 0; i < rooms.Joined.Count(); i++) + { + string roomId = rooms.Joined[i]; + // get the aliases for the room + MatrixRoomAliases roomAliases = session.GetRoomAliases(roomId); + + if (roomAliases.Aliases.Count() == 0) + { + roomList += "\n[" + i + "] " + roomId; + } + else + { + roomList += "\n[" + i + "] " + roomAliases.Aliases[0]; + } + } + + roomList += "\n"; + + Console.Write(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."); + string stdIn = Console.ReadLine(); + SlashInput(stdIn); + } + else + { + int roomListInt = Convert.ToInt32(roomListItem); + + string theRoomId = rooms.Joined[roomListInt]; + } + } + + void SlashInput(string stdIn) + { + // read the input and figure out what to do with it + switch (stdIn) + { + case "/join": + RoomMenu(); + break; + case "": + break; + } + } + } } } diff --git a/MatrixDotNetLib/MatrixDotNetCmd/obj/Debug/netcoreapp3.1/MatrixDotNetCmd.csprojAssemblyReference.cache b/MatrixDotNetLib/MatrixDotNetCmd/obj/Debug/netcoreapp3.1/MatrixDotNetCmd.csprojAssemblyReference.cache index f1a238b4cf5d7e67178b67dbca1fc1575caebd2e..eb6758726146d046cfff8fd9d312c93d7b25fb97 100644 GIT binary patch delta 26 icmca$cEN0eKO^JD%>j&?8QIP%o@F)=+RVx9E&%|ClL(st delta 26 icmca$cEN0eKO^Ic%>j&?8QD(W-JY>na5E>fy95A}o(c;9 diff --git a/MatrixDotNetLib/MatrixDotNetLib/MatrixApis.cs b/MatrixDotNetLib/MatrixDotNetLib/MatrixApis.cs index 18f56df..fae3ede 100644 --- a/MatrixDotNetLib/MatrixDotNetLib/MatrixApis.cs +++ b/MatrixDotNetLib/MatrixDotNetLib/MatrixApis.cs @@ -6,64 +6,63 @@ namespace MatrixDotNetLib { public class MatrixApis { + public static class Server + { + /// + /// Gets discovery information about the domain. + /// + /// + /// https://matrix.org/docs/api/client-server/#!/Server32administration/getWellknown + /// + public static string Discovery = "/.well-known/matrix/client"; + + /// + /// Gets the versions of the specifications supported by the server. + /// + /// + /// https://matrix.org/docs/api/client-server/#!/Server32administration/getVersions + /// + public static string Versions = "/_matrix/client/versions"; - public static class Server - { - /// - /// Gets discovery information about the domain. - /// - /// - /// https://matrix.org/docs/api/client-server/#!/Server32administration/getWellknown - /// - public static string Discovery = "/.well-known/matrix/client"; - - /// - /// Gets the versions of the specifications supported by the server. - /// - /// - /// https://matrix.org/docs/api/client-server/#!/Server32administration/getVersions - /// - public static string Versions = "/_matrix/client/versions"; - - /// - /// Gets information about the server's supported feature set and other relevant capabilities. - /// - /// - /// https://matrix.org/docs/api/client-server/#!/Capabilities/getCapabilities - /// - public static string Capabilities = "/_matrix/client/r0/capabilities"; - - /// - /// Gets information about a particular user. - /// - /// - /// https://matrix.org/docs/api/client-server/#!/Server32administration/getWhoIs - /// - public static string Whois = "/_matrix/client/r0/admin/whois/{userid}"; - - /// - /// Performs a full text search across different categories. Posts with a search object. - /// - /// - /// https://matrix.org/docs/api/client-server/#!/Search/search - /// - public static string Search = "/_matrix/client/r0/search"; - - /// - /// Performs a user search. Posts with a user search object. - /// - /// - /// https://matrix.org/docs/api/client-server/#!/User32data/searchUserDirectory - /// - public static string UserSearch = "/_matrix/client/r0/user_directory/search"; - - /// - /// Lists the public rooms on the server. Posts with a filter object. - /// - /// - /// https://matrix.org/docs/api/client-server/#!/Room32discovery/getPublicRooms - /// - public static string RoomList = "/_matrix/client/r0/publicrooms"; + /// + /// Gets information about the server's supported feature set and other relevant capabilities. + /// + /// + /// https://matrix.org/docs/api/client-server/#!/Capabilities/getCapabilities + /// + public static string Capabilities = "/_matrix/client/r0/capabilities"; + + /// + /// Gets information about a particular user. + /// + /// + /// https://matrix.org/docs/api/client-server/#!/Server32administration/getWhoIs + /// + public static string Whois = "/_matrix/client/r0/admin/whois/{UserId}"; + + /// + /// Performs a full text search across different categories. Posts with a search object. + /// + /// + /// https://matrix.org/docs/api/client-server/#!/Search/search + /// + public static string Search = "/_matrix/client/r0/search"; + + /// + /// Performs a user search. Posts with a user search object. + /// + /// + /// https://matrix.org/docs/api/client-server/#!/User32data/searchUserDirectory + /// + public static string UserSearch = "/_matrix/client/r0/user_directory/search"; + + /// + /// Lists the public rooms on the server. Posts with a filter object. + /// + /// + /// https://matrix.org/docs/api/client-server/#!/Room32discovery/getPublicRooms + /// + public static string RoomList = "/_matrix/client/r0/publicrooms"; /// /// Updates the visibility of a given room in the directory. Puts a visibility object. @@ -71,7 +70,7 @@ namespace MatrixDotNetLib /// /// https://matrix.org/docs/api/client-server/#!/Application32service32room32directory32management/updateAppserviceRoomDirectoryVsibility /// - public static string ManageRooms = "/_matrix/client/r0/directory/list/appservice/{networkid}/{roomid}"; + public static string ManageRooms = "/_matrix/client/r0/directory/list/appservice/{NetworkId}/{RoomId}"; /// /// Upgrades the given room to a particular room version. Posts with a room upgrade object. @@ -79,7 +78,7 @@ namespace MatrixDotNetLib /// /// https://matrix.org/docs/api/client-server/#!/Room32upgrades/upgradeRoom /// - public static string UpgradeRoom = "/_matrix/client/r0/rooms/{roomid}/upgrade"; + public static string UpgradeRoom = "/_matrix/client/r0/rooms/{RoomId}/upgrade"; /// /// Gets an OpenID token object for use with another service. Posts with a userId parameter. @@ -87,7 +86,7 @@ namespace MatrixDotNetLib /// /// https://matrix.org/docs/api/client-server/#!/OpenID/requestOpenIdToken /// - public static string Openid = "/_matrix/client/r0/user/{userid}/openid/request_token"; + public static string Openid = "/_matrix/client/r0/user/{UserId}/openid/request_token"; /// /// Gets client credentials for use when initiating a call. @@ -96,7 +95,7 @@ namespace MatrixDotNetLib /// https://matrix.org/docs/api/client-server/#!/VOIP/getTurnServer /// public static string Voip = "/_matrix/client/r0/voip/turnserver"; - } + } public static class Key { @@ -138,7 +137,7 @@ namespace MatrixDotNetLib /// /// Private string for device URL /// - private static string _deviceIdUrl = "/_matrix/client/r0/devices/{deviceId}"; + private static string _deviceIdUrl = "/_matrix/client/r0/devices/{DeviceId}"; /// /// Gets information about all devices for the current user. @@ -186,7 +185,7 @@ namespace MatrixDotNetLib /// /// https://matrix.org/docs/api/client-server/#!/Send45to45Device32messaging/sendToDevice /// - public static string Send = "/_matrix/client/r0/sendtodevice/{eventtype}/{txnid}"; + public static string Send = "/_matrix/client/r0/sendtodevice/{EventType}/{TxnId}"; } public static class Media @@ -206,7 +205,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Save = "/_matrix/media/r0/download/{servername}/{mediaid}"; + public static string Save = "/_matrix/media/r0/download/{ServerName}/{MediaId}"; /// /// @@ -214,7 +213,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Saveas = "/_matrix/media/r0/download/{servername}/{mediaid}/{filename}"; + public static string Saveas = "/_matrix/media/r0/download/{ServerName}/{MediaId}/{Filename}"; /// /// @@ -230,7 +229,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Thumb = "/_matrix/media/r0/thumbnail/{servername}/{mediaid}"; + public static string Thumb = "/_matrix/media/r0/thumbnail/{ServerName}/{MediaId}"; /// /// @@ -286,7 +285,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Manage = "/_matrix/client/r0/pushrules/{scope}/{kind}/{ruleid}"; + public static string Manage = "/_matrix/client/r0/pushrules/{scope}/{Kind}/{RuleId}"; /// /// @@ -294,7 +293,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Actions = "/_matrix/client/r0/pushrules/{scope}/{kind}/{ruleid}/actions"; + public static string Actions = "/_matrix/client/r0/pushrules/{scope}/{Kind}/{RuleId}/actions"; /// /// @@ -302,7 +301,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Toggle = "/_matrix/client/r0/pushrules/{scope}/{kind}/{ruleid}/enabled"; + public static string Toggle = "/_matrix/client/r0/pushrules/{scope}/{Kind}/{RuleId}/enabled"; } public static class User @@ -354,7 +353,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Profile = "/_matrix/client/r0/profile/{userid}"; + public static string Profile = "/_matrix/client/r0/profile/{UserId}"; /// /// @@ -362,7 +361,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Avatar = "/_matrix/client/r0/profile/{userid}/avtatar_url"; + public static string Avatar = "/_matrix/client/r0/profile/{UserId}/avtatar_url"; /// /// @@ -370,7 +369,7 @@ namespace MatrixDotNetLib /// /// /// - public static string DisplayName = "/_matrix/client/r0/profile/{userid}/displayname"; + public static string DisplayName = "/_matrix/client/r0/profile/{UserId}/displayname"; /// /// @@ -378,7 +377,7 @@ namespace MatrixDotNetLib /// /// /// - public static string ExtraInfo = "/_matrix/client/r0/user/{userid}/account_data/{type}"; + public static string ExtraInfo = "/_matrix/client/r0/user/{UserId}/account_data/{type}"; /// /// @@ -386,7 +385,7 @@ namespace MatrixDotNetLib /// /// /// - public static string EventFilter = "/_matrix/client/r0/user/{userid}/filter"; + public static string EventFilter = "/_matrix/client/r0/user/{UserId}/filter"; /// /// Gets a list of the user's current rooms. @@ -418,7 +417,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Status = "/_matrix/client/r0/presence/{userid}/status"; + public static string Status = "/_matrix/client/r0/presence/{UserId}/status"; } public static class UserRoom @@ -430,7 +429,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Extrainfo = "/_matrix/client/r0/user/{userid}/rooms/{roomid}/account_data/{type}"; + public static string Extrainfo = "/_matrix/client/r0/user/{UserId}/rooms/{RoomId}/account_data/{type}"; /// /// @@ -438,7 +437,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Tags = "/_matrix/client/r0/user/{userid}/rooms/{roomid}/tags"; + public static string Tags = "/_matrix/client/r0/user/{UserId}/rooms/{RoomId}/tags"; } public static class Room @@ -458,7 +457,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Aliases = "/_matrix/client/unstable/org.matrix.msc2432/rooms/{roomid}/aliases"; + public static string Aliases = "/_matrix/client/unstable/org.matrix.msc2432/rooms/{RoomId}/aliases"; /// /// @@ -466,7 +465,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Active = "/_matrix/client/r0/rooms/{roomid}/joined_members"; + public static string Active = "/_matrix/client/r0/rooms/{RoomId}/joined_members"; /// /// @@ -474,7 +473,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Members = "/_matrix/client/r0/rooms/{roomid}/members"; + public static string Members = "/_matrix/client/r0/rooms/{RoomId}/members"; /// /// @@ -482,7 +481,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Messages = "/_matrix/client/r0/rooms/{roomid}/messages"; + public static string Messages = "/_matrix/client/r0/rooms/{RoomId}/messages"; /// /// @@ -490,7 +489,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Join = "/_matrix/client/r0/join/{roomidoralias}"; + public static string Join = "/_matrix/client/r0/join/{RoomIdOrAlias}"; /// /// @@ -498,7 +497,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Ban = "/_matrix/client/r0/rooms/{roomid}/ban"; + public static string Ban = "/_matrix/client/r0/rooms/{RoomId}/ban"; /// /// @@ -506,7 +505,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Forget = "/_matrix/client/r0/rooms/{roomid}/forget"; + public static string Forget = "/_matrix/client/r0/rooms/{RoomId}/forget"; /// /// @@ -514,7 +513,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Invite = "/_matrix/client/r0/rooms/{roomid}/invite"; + public static string Invite = "/_matrix/client/r0/rooms/{RoomId}/invite"; /// /// @@ -522,7 +521,7 @@ namespace MatrixDotNetLib /// /// /// - public static string IdJoin = "/_matrix/client/r0/rooms/{roomid}/join"; + public static string IdJoin = "/_matrix/client/r0/rooms/{RoomId}/join"; /// /// @@ -530,7 +529,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Kick = "/_matrix/client/r0/rooms/{roomid}/kick"; + public static string Kick = "/_matrix/client/r0/rooms/{RoomId}/kick"; /// /// @@ -538,7 +537,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Leave = "/_matrix/client/r0/rooms/{roomid}/leave"; + public static string Leave = "/_matrix/client/r0/rooms/{RoomId}/leave"; /// /// @@ -546,7 +545,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Unban = "/_matrix/client/r0/rooms/{roomid}/unban"; + public static string Unban = "/_matrix/client/r0/rooms/{RoomId}/unban"; /// /// @@ -554,7 +553,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Marker = "/_matrix/client/r0/rooms/{roomid}/read_markers"; + public static string Marker = "/_matrix/client/r0/rooms/{RoomId}/read_markers"; } public static class RoomEvent @@ -566,7 +565,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Context = "/_matrix/client/r0/rooms/{roomid}/context/{eventid}"; + public static string Context = "/_matrix/client/r0/rooms/{RoomId}/context/{EventId}"; /// /// @@ -574,7 +573,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Event = "/_matrix/client/r0/rooms/{roomid}/event/{eventid}"; + public static string Event = "/_matrix/client/r0/rooms/{RoomId}/event/{EventId}"; /// /// @@ -582,7 +581,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Receipt = "/_matrix/client/r0/rooms/{roomid}/receipt/{receipttype}/{eventid}"; + public static string Receipt = "/_matrix/client/r0/rooms/{RoomId}/receipt/{ReceiptType}/{EventId}"; /// /// @@ -590,7 +589,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Redact = "/_matrix/client/r0/rooms/{roomid}/redact/{eventid}/{txnid}"; + public static string Redact = "/_matrix/client/r0/rooms/{RoomId}/redact/{EventId}/{TxnId}"; /// /// @@ -598,7 +597,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Send = "/_matrix/client/r0/rooms/{roomid}/send/{eventtype}/{txnid}"; + public static string Send = "/_matrix/client/r0/rooms/{RoomId}/send/{EventType}/{TxnId}"; /// /// @@ -606,7 +605,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Typing = "/_matrix/client/r0/rooms/{roomid}/typing/{userid}"; + public static string Typing = "/_matrix/client/r0/rooms/{RoomId}/typing/{UserId}"; /// /// @@ -614,7 +613,7 @@ namespace MatrixDotNetLib /// /// /// - public static string Flag = "/_matrix/client/r0/rooms/{roomid}/report/{eventid}"; + public static string Flag = "/_matrix/client/r0/rooms/{RoomId}/report/{EventId}"; } public static class RoomState @@ -626,7 +625,7 @@ namespace MatrixDotNetLib /// /// /// - public static string List = "/_matrix/client/r0/rooms/{roomid}/state"; + public static string List = "/_matrix/client/r0/rooms/{RoomId}/state"; /// /// @@ -634,7 +633,7 @@ namespace MatrixDotNetLib /// /// /// - public static string State = "/_matrix/client/r0/rooms/{roomid}/state/{eventtype}/{statekey}"; + public static string State = "/_matrix/client/r0/rooms/{RoomId}/state/{EventType}/{StateKey}"; } } @@ -643,7 +642,7 @@ namespace MatrixDotNetLib public string DeviceId { get; set; } public string EventId { get; set; } public string EventType { get; set; } - public string FileName { get; set; } + public string Filename { get; set; } public string FilterId { get; set; } public string Kind { get; set; } public string MediaId { get; set; } diff --git a/MatrixDotNetLib/MatrixDotNetLib/MatrixRoomAliases.cs b/MatrixDotNetLib/MatrixDotNetLib/MatrixRoomAliases.cs new file mode 100644 index 0000000..af3a016 --- /dev/null +++ b/MatrixDotNetLib/MatrixDotNetLib/MatrixRoomAliases.cs @@ -0,0 +1,13 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace MatrixDotNetLib +{ + public class MatrixRoomAliases + { + [JsonProperty("aliases")] + public string[] Aliases { get; set; } + } +} diff --git a/MatrixDotNetLib/MatrixDotNetLib/MatrixRoomManager.cs b/MatrixDotNetLib/MatrixDotNetLib/MatrixRoomManager.cs new file mode 100644 index 0000000..4ced7d5 --- /dev/null +++ b/MatrixDotNetLib/MatrixDotNetLib/MatrixRoomManager.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace MatrixDotNetLib +{ + public class MatrixRoomManager + { + } +} diff --git a/MatrixDotNetLib/MatrixDotNetLib/MatrixSessionManager.cs b/MatrixDotNetLib/MatrixDotNetLib/MatrixSessionManager.cs index fd5aca6..79556e2 100644 --- a/MatrixDotNetLib/MatrixDotNetLib/MatrixSessionManager.cs +++ b/MatrixDotNetLib/MatrixDotNetLib/MatrixSessionManager.cs @@ -82,12 +82,22 @@ namespace MatrixDotNetLib /// public MatrixUserRooms GetRooms() { - string responseJson = ApiResult(MatrixApis.User.Rooms, httpAction.GET); - MatrixUserRooms theRooms = JsonConvert.DeserializeObject(responseJson); + return (MatrixUserRooms)JsonConvert.DeserializeObject(responseJson); + } + + /// + /// Gets the aliases for the given (string)roomId + /// + /// + /// + public MatrixRoomAliases GetRoomAliases(string roomId) + { + MatrixApiEntities entities = new MatrixApiEntities() { RoomId = roomId }; + string responseJson = ApiResult(MatrixApis.Room.Aliases, httpAction.GET, entities: entities); - return theRooms; + return (MatrixRoomAliases)JsonConvert.DeserializeObject(responseJson); } public enum httpAction @@ -114,8 +124,7 @@ namespace MatrixDotNetLib // if an access token exists, create a bearer authorization header if (this.Token != null) { - client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", this.Token); - + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", this.Token); } // init empty string @@ -140,17 +149,17 @@ namespace MatrixDotNetLib foreach (Match match in rgx.Matches(url)) { string oldVal = match.Value; - string prop = util.UpperFirst(match.Groups[1].Value); + string prop = match.Groups[1].Value; // check if property exists in entity list try { // get value of property through GetType().GetProperty().GetValue() // sauce: https://www.techrepublic.com/article/applied-reflection-dynamically-accessing-properties-of-a-class-at-runtime/ - string newVal = entities.GetType().GetProperty(prop).GetValue(entities).ToString(); + string newVal = WebUtility.UrlEncode(entities.GetType().GetProperty(prop).GetValue(entities).ToString()); // return URL with entities replaced and URL-encoded - url = WebUtility.UrlEncode(url.Replace(oldVal, newVal)); + url = url.Replace(oldVal, newVal); } catch { diff --git a/MatrixDotNetLib/MatrixDotNetLib/MatrixUtil.cs b/MatrixDotNetLib/MatrixDotNetLib/MatrixUtil.cs index 2cc60cd..3d0eafe 100644 --- a/MatrixDotNetLib/MatrixDotNetLib/MatrixUtil.cs +++ b/MatrixDotNetLib/MatrixDotNetLib/MatrixUtil.cs @@ -6,20 +6,5 @@ namespace MatrixDotNetLib { public class MatrixUtil { - /// - /// Returns string with first letter capitalized - /// - /// - /// - public string UpperFirst(string s) - { - // Check for empty string. - if (string.IsNullOrEmpty(s)) - { - return string.Empty; - } - // Return char and concat substring. - return char.ToUpper(s[0]) + s.Substring(1); - } } } diff --git a/MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.dll b/MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.dll index 61bb19a095d85562310e713af8f3d6c3166676ce..8749b638310ad781c99d3983795fc5c9d1788c7f 100644 GIT binary patch delta 9279 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 delta 2072 zcmYk7drTBp6voe;9oX3&78clDP_!&B%R^COZN(J2YfZ!!in@Zv2NgjHcFb%#MYX$vEOB`W;XlHIlptx zy=Ugm%$?f>XBP}Sk4oV$;QsQ870Y1v zf=4kXV`)S47VtOsmJS|RIN#G5Jmp9!t+z~_JUE0ft)2ar#eyCT{yZoJ@r!8RBtMWIV+d2ZxW|1-Uc}d%oB%Gnyewbi&N&v{|A_*n6G4!4iLu1g#&==D&8^u_7 z9m}Of7Di1_06GI*fhM4PP?43<3y=nVIC9+dxg1}?M@=t|zC4xMDy6`0dK^23{CX^4 zw5XX4-T+nvw@5n2fa{PO6ZtrB1paoxcJT3OU$0L9UjXNed?I)*?$I{Rel&0(a2J6* zQQ!jSp;<9_6O;tzKfYE~&?DyS@v?z=ezSpjzS_V%&mTPFcz=x{zzb>(%qQSy`Dg&o z*BO}S`BfY9I}FV84F=}p8x4%SpPCE-UeIh{KEW##^|%2Ze`+-_uWd7M4!GUG%fY)0 zTm*jAz&W&*XtyDdih>RU_kmwCuoJw;z&yX#z`Wr;&YDv#Ffj^h_ zVMqMJs;kZ$zpwjRo$>RS?T7Y_e7)p@UFpI;soOxBuyb@9%n&wPx80(?Th#Xm?h$XlYheUo@G#nmT6QBqo54C+IGXHQSK>{789R8F^^QuN_ocvm7M#g~YgjN69sGph-|b@E zC9LNGNxf4n)Q}nWN?~tiUzvn|e=6%g$p#in5i5&)gq@$+%Bu0H+FjAQwI#o%RoTd7 zRaJYAy7RwVd8)BC`{cgig4XZfO{fW9aXN<1wUl4{_jQN%t7ERz^P?8)e34~n>z$>n zS$o^*G3#saQ1d1`eTS~O_e}k?bItkl!TL`lbEeK6-aj+1!I9P#^0ogldE)Mk1tzJ!D}b} z_IVm*D;4p8haaA^Qx>9S2l}*St}J#*+u?HO{)duhd3O4M;&_x)bfzI(#lxHIRD#H| z&LVBpRTBF?;yyi8-1((uO)6o9nlCAfwQC(o8*E>NE`_d!u7_@hZint@<4I{+N3zGf PB3u^sg{!sCk~9AYF9}uo 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 17cb158..ef03dfd 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 @@ -533436dc4ebb032189320843d6e1e024aef4bca8 +5eb8af853df6cefc73690046f1829a4a47fc69f4 diff --git a/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.csprojAssemblyReference.cache b/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.csprojAssemblyReference.cache index c7e9bdd652ddbd42897e80b041492983ebb435ea..d339bfd9a98aecb29431b4fc97d7666a01424a81 100644 GIT binary patch delta 30 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 z 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 diff --git a/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.dll b/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.dll index 61bb19a095d85562310e713af8f3d6c3166676ce..8749b638310ad781c99d3983795fc5c9d1788c7f 100644 GIT binary patch delta 9279 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 delta 2072 zcmYk7drTBp6voe;9oX3&78clDP_!&B%R^COZN(J2YfZ!!in@Zv2NgjHcFb%#MYX$vEOB`W;XlHIlptx zy=Ugm%$?f>XBP}Sk4oV$;QsQ870Y1v zf=4kXV`)S47VtOsmJS|RIN#G5Jmp9!t+z~_JUE0ft)2ar#eyCT{yZoJ@r!8RBtMWIV+d2ZxW|1-Uc}d%oB%Gnyewbi&N&v{|A_*n6G4!4iLu1g#&==D&8^u_7 z9m}Of7Di1_06GI*fhM4PP?43<3y=nVIC9+dxg1}?M@=t|zC4xMDy6`0dK^23{CX^4 zw5XX4-T+nvw@5n2fa{PO6ZtrB1paoxcJT3OU$0L9UjXNed?I)*?$I{Rel&0(a2J6* zQQ!jSp;<9_6O;tzKfYE~&?DyS@v?z=ezSpjzS_V%&mTPFcz=x{zzb>(%qQSy`Dg&o z*BO}S`BfY9I}FV84F=}p8x4%SpPCE-UeIh{KEW##^|%2Ze`+-_uWd7M4!GUG%fY)0 zTm*jAz&W&*XtyDdih>RU_kmwCuoJw;z&yX#z`Wr;&YDv#Ffj^h_ zVMqMJs;kZ$zpwjRo$>RS?T7Y_e7)p@UFpI;soOxBuyb@9%n&wPx80(?Th#Xm?h$XlYheUo@G#nmT6QBqo54C+IGXHQSK>{789R8F^^QuN_ocvm7M#g~YgjN69sGph-|b@E zC9LNGNxf4n)Q}nWN?~tiUzvn|e=6%g$p#in5i5&)gq@$+%Bu0H+FjAQwI#o%RoTd7 zRaJYAy7RwVd8)BC`{cgig4XZfO{fW9aXN<1wUl4{_jQN%t7ERz^P?8)e34~n>z$>n zS$o^*G3#saQ1d1`eTS~O_e}k?bItkl!TL`lbEeK6-aj+1!I9P#^0ogldE)Mk1tzJ!D}b} z_IVm*D;4p8haaA^Qx>9S2l}*St}J#*+u?HO{)duhd3O4M;&_x)bfzI(#lxHIRD#H| z&LVBpRTBF?;yyi8-1((uO)6o9nlCAfwQC(o8*E>NE`_d!u7_@hZint@<4I{+N3zGf PB3u^sg{!sCk~9AYF9}uo diff --git a/Scripts/Read response as async.linq b/Scripts/Read response as async.linq new file mode 100644 index 0000000..46960f0 --- /dev/null +++ b/Scripts/Read response as async.linq @@ -0,0 +1,42 @@ + + <RuntimeDirectory>\System.Net.Http.dll + System.Net.Http + System.Net.Http.Headers + System.Threading.Tasks + + +string Token = "MDAxY2xvY2F0aW9uIHBvc3QuaHlydWxlLmNjCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyOWNpZCB1c2VyX2lkID0gQGNsYWlyZTpwb3N0Lmh5cnVsZS5jYwowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVpcCw0Q0xXeno5RWVIemsKMDAyZnNpZ25hdHVyZSC-SU60mVgCMmO7leht6DEkzsRkjIMeQnuAbQzNLRemEgo"; +string Url = "https://post.hyrule.cc/_matrix/client/r0/joined_rooms"; + +HttpClient client = new HttpClient(); + +string newUrl = Url + "?access_token=" + Token; + +HttpResponseMessage response = await client.GetAsync(newUrl); + +string result = ""; + +if (response.IsSuccessStatusCode) +{ + result = await response.Content.ReadAsStringAsync(); +} + +Console.WriteLine(result); + +Console.WriteLine(); + +HttpClient client2 = new HttpClient(); + +client2.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Token); + +HttpResponseMessage response2 = await client2.GetAsync(Url); + +string result2 = ""; + +if (response2.IsSuccessStatusCode) +{ + result2 = await response2.Content.ReadAsStringAsync(); +} + +Console.WriteLine((int)response2.StatusCode + " : " + response2.StatusCode); +Console.WriteLine(result2); \ No newline at end of file