using System; using System.IO; using MatrixDotNetLib; using Newtonsoft.Json; 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(); // input server Console.Write("Enter Matrix server FQDN:"); string server = Console.ReadLine(); // input username Console.Write("Enter Matrix username:"); string user = Console.ReadLine(); // input pass string pass = ""; Console.Write("Enter Matrix password: "); // capture key input and replace with * in console session ConsoleKeyInfo key; do { key = Console.ReadKey(true); // Backspace Should Not Work if (key.Key != ConsoleKey.Backspace) { pass += key.KeyChar; Console.Write("*"); } else { Console.Write("\b"); } } // stop once user hits Enter while (key.Key != ConsoleKey.Enter); pass = pass.Trim(); Console.WriteLine(); Console.WriteLine("Logging in..."); // log in to Matrix and get a token // response.Token try { // create a new response object; trim password to remove added \r character MatrixLoginResponse response = session.Login(server, user, pass); // 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]); } catch(Exception ex) { // something bad happened Console.WriteLine("Error!"); // 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; } } }