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