diff --git a/MatrixDotNetLib/.vs/MatrixDotNetLib/v16/.suo b/MatrixDotNetLib/.vs/MatrixDotNetLib/v16/.suo index 4280dc4..7db536c 100644 Binary files a/MatrixDotNetLib/.vs/MatrixDotNetLib/v16/.suo and b/MatrixDotNetLib/.vs/MatrixDotNetLib/v16/.suo differ diff --git a/MatrixDotNetLib/MatrixDotNetCmd/Program.cs b/MatrixDotNetLib/MatrixDotNetCmd/Program.cs index 1442541..5cb6afd 100644 --- a/MatrixDotNetLib/MatrixDotNetCmd/Program.cs +++ b/MatrixDotNetLib/MatrixDotNetCmd/Program.cs @@ -1,5 +1,7 @@ using System; using System.IO; +using System.Linq; +using System.Runtime.CompilerServices; using MatrixDotNetLib; using Newtonsoft.Json; @@ -8,15 +10,12 @@ namespace MatrixDotNetCmd class Program { static void Main(string[] args) - { - // create new globals object - Globals globals = new Globals(); - + { // start output Console.WriteLine("MatrixDotNetLib v0.1 - A .NET Core library for Matrix"); // create a new Matrix session - MatrixSessionManager session = new MatrixSessionManager(); + MatrixSessionManager session = new MatrixSessionManager(); // input server Console.Write("Enter Matrix server FQDN:"); @@ -66,17 +65,8 @@ namespace MatrixDotNetCmd // notify user is logged in Console.WriteLine("Logged in!"); - // assign globals - globals.Token = response.Token; - globals.Server = server; - globals.Session = response; - - MatrixUserRooms rooms = session.GetRooms(); - - // prompt user to choose a room - // i guess we should find an alias for each room, if it exists - - Console.WriteLine(rooms.Joined[0]); + // show the room menu + RoomMenu(); } catch(Exception ex) { @@ -86,24 +76,65 @@ namespace MatrixDotNetCmd // display the error code and message Console.WriteLine(ex.Message); } - } - } - public class Globals - { - /// - /// 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 f1a238b..eb67587 100644 Binary files a/MatrixDotNetLib/MatrixDotNetCmd/obj/Debug/netcoreapp3.1/MatrixDotNetCmd.csprojAssemblyReference.cache and b/MatrixDotNetLib/MatrixDotNetCmd/obj/Debug/netcoreapp3.1/MatrixDotNetCmd.csprojAssemblyReference.cache differ 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 61bb19a..8749b63 100644 Binary files a/MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.dll and b/MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.dll differ diff --git a/MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.pdb b/MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.pdb index 77e9efc..41741d9 100644 Binary files a/MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.pdb and b/MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.pdb differ 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 c7e9bdd..d339bfd 100644 Binary files a/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.csprojAssemblyReference.cache and b/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.csprojAssemblyReference.cache differ diff --git a/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.dll b/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.dll index 61bb19a..8749b63 100644 Binary files a/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.dll and b/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.dll differ diff --git a/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.pdb b/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.pdb index 77e9efc..41741d9 100644 Binary files a/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.pdb and b/MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.pdb differ 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