Browse Source

ApiResult now works to retrieve data via GET using an access token!

master
Claire 4 years ago
parent
commit
3e07fd307c
  1. BIN
      MatrixDotNetLib/.vs/MatrixDotNetLib/v16/.suo
  2. 11
      MatrixDotNetLib/MatrixDotNetCmd/Program.cs
  3. BIN
      MatrixDotNetLib/MatrixDotNetCmd/obj/Debug/netcoreapp3.1/MatrixDotNetCmd.csprojAssemblyReference.cache
  4. 706
      MatrixDotNetLib/MatrixDotNetLib/MatrixApis.cs
  5. 118
      MatrixDotNetLib/MatrixDotNetLib/MatrixSessionManager.cs
  6. BIN
      MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.dll
  7. BIN
      MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.pdb
  8. 2
      MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.csproj.CoreCompileInputs.cache
  9. BIN
      MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.csprojAssemblyReference.cache
  10. BIN
      MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.dll
  11. BIN
      MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.pdb

BIN
MatrixDotNetLib/.vs/MatrixDotNetLib/v16/.suo

diff.bin_not_shown

11
MatrixDotNetLib/MatrixDotNetCmd/Program.cs

@ -51,6 +51,8 @@ namespace MatrixDotNetCmd
// stop once user hits Enter
while (key.Key != ConsoleKey.Enter);
pass = pass.Trim();
Console.WriteLine();
Console.WriteLine("Logging in...");
@ -59,19 +61,20 @@ namespace MatrixDotNetCmd
try
{
// create a new response object; trim password to remove added \r character
MatrixLoginResponse response = session.Login(server, user, pass.Trim());
MatrixLoginResponse response = session.Login(server, user, pass);
// notify user is logged in
Console.WriteLine("Logged in!");
// assign globals
globals.Token = response.Token;
session.Token = response.Token;
globals.Server = server;
session.Server = server;
globals.Session = response;
MatrixUserRooms rooms = session.GetRooms(globals.Token);
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]);
}

BIN
MatrixDotNetLib/MatrixDotNetCmd/obj/Debug/netcoreapp3.1/MatrixDotNetCmd.csprojAssemblyReference.cache

diff.bin_not_shown

706
MatrixDotNetLib/MatrixDotNetLib/MatrixApis.cs

@ -7,120 +7,636 @@ namespace MatrixDotNetLib
public class MatrixApis
{
public class Server
public static class Server
{
/// <summary>
/// Gets discovery information about the domain.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/Server32administration/getWellknown
/// </remarks>
public static string Discovery = "/.well-known/matrix/client";
/// <summary>
/// Gets the versions of the specifications supported by the server.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/Server32administration/getVersions
/// </remarks>
public static string Versions = "/_matrix/client/versions";
/// <summary>
/// Gets information about the server's supported feature set and other relevant capabilities.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/Capabilities/getCapabilities
/// </remarks>
public static string Capabilities = "/_matrix/client/r0/capabilities";
/// <summary>
/// Gets information about a particular user.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/Server32administration/getWhoIs
/// </remarks>
public static string Whois = "/_matrix/client/r0/admin/whois/{userid}";
/// <summary>
/// Performs a full text search across different categories. Posts with a search object.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/Search/search
/// </remarks>
public static string Search = "/_matrix/client/r0/search";
/// <summary>
/// Performs a user search. Posts with a user search object.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/User32data/searchUserDirectory
/// </remarks>
public static string UserSearch = "/_matrix/client/r0/user_directory/search";
/// <summary>
/// Lists the public rooms on the server. Posts with a filter object.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/Room32discovery/getPublicRooms
/// </remarks>
public static string RoomList = "/_matrix/client/r0/publicrooms";
public static string ManageRooms = "/_matrix/client/r0/directory/list/appservice/{networkid}/{roomid}";
public static string UpgradeRoom = "/_matrix/client/r0/rooms/{roomid}/upgrade";
public static string Openid = "/_matrix/client/r0/user/{userid}/openid/request_token";
public static string Voip = "/_matrix/client/r0/voip/turnserver";
}
public class Key
{
public static string Latest = "/_matrix/client/r0/keys/changes";
public static string Claim = "/_matrix/client/r0/keys/claim";
public static string Download = "/_matrix/client/r0/keys/query";
public static string Upload = "/_matrix/client/r0/keys/upload";
}
/// <summary>
/// Updates the visibility of a given room in the directory. Puts a visibility object.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/Application32service32room32directory32management/updateAppserviceRoomDirectoryVsibility
/// </remarks>
public static string ManageRooms = "/_matrix/client/r0/directory/list/appservice/{networkid}/{roomid}";
public class Device
{
public static string Manage = "/_matrix/client/r0/devices";
public static string MultiDelete = "/_matrix/client/r0/delete_devices";
public static string Send = "/_matrix/client/r0/sendtodevice/{eventtype}/{txnid}";
}
/// <summary>
/// Upgrades the given room to a particular room version. Posts with a room upgrade object.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/Room32upgrades/upgradeRoom
/// </remarks>
public static string UpgradeRoom = "/_matrix/client/r0/rooms/{roomid}/upgrade";
public class Media
{
public static string Config = "/_matrix/media/r0/config";
public static string Save = "/_matrix/media/r0/download/{servername}/{mediaid}";
public static string Saveas = "/_matrix/media/r0/download/{servername}/{mediaid}/{filename}";
public static string Preview = "/_matrix/media/r0/preview_url";
public static string Thumb = "/_matrix/media/r0/thumbnail/{servername}/{mediaid}";
public static string Upload = "/_matrix/media/r0/upload";
}
/// <summary>
/// Gets an OpenID token object for use with another service. Posts with a userId parameter.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/OpenID/requestOpenIdToken
/// </remarks>
public static string Openid = "/_matrix/client/r0/user/{userid}/openid/request_token";
public class Notifier
{
public static string Notifiers = "/_matrix/client/r0/notifications";
public static string Pushers = "/_matrix/client/r0/pushers";
public static string Set = "/_matrix/client/r0/pushers/set";
public static string Rules = "/_matrix/client/r0/pushrules/";
/// <summary>
/// Gets client credentials for use when initiating a call.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/VOIP/getTurnServer
/// </remarks>
public static string Voip = "/_matrix/client/r0/voip/turnserver";
}
public class NotifierRule
{
public static string Manage = "/_matrix/client/r0/pushrules/{scope}/{kind}/{ruleid}";
public static string Actions = "/_matrix/client/r0/pushrules/{scope}/{kind}/{ruleid}/actions";
public static string Toggle = "/_matrix/client/r0/pushrules/{scope}/{kind}/{ruleid}/enabled";
}
public static class Key
{
/// <summary>
/// Gets a list of users who have updated their device identity keys.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/End45to45end32encryption/getKeysChanges
/// </remarks>
public static string Latest = "/_matrix/client/r0/keys/changes";
public static class User
{
public static string Thirdparty = "/_matrix/client/r0/account/3pid";
public static string Deactivate = "/_matrix/client/r0/account/deactivate";
public static string Password = "/_matrix/client/r0/account/password";
public static string Register = "/_matrix/client/r0/register";
public static string WhoAmI = "/_matrix/client/r0/account/whoami";
public static string Profile = "/_matrix/client/r0/profile/{userid}";
public static string Avatar = "/_matrix/client/r0/profile/{userid}/avtatar_url";
public static string DisplayName = "/_matrix/client/r0/profile/{userid}/displayname";
public static string ExtraInfo = "/_matrix/client/r0/user/{userid}/account_data/{type}";
public static string EventFilter = "/_matrix/client/r0/user/{userid}/filter";
public static string Rooms = "/_matrix/client/r0/joined_rooms";
public static string Login = "/_matrix/client/r0/login";
public static string Logout = "/_matrix/client/r0/logout";
public static string Status = "/_matrix/client/r0/presence/{userid}/status";
}
/// <summary>
/// Claims one-time keys for use in pre-key messages. Posts with a key object.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/End45to45end32encryption/claimKeys
/// </remarks>
public static string Claim = "/_matrix/client/r0/keys/claim";
public class UserRoom
{
public static string Extrainfo = "/_matrix/client/r0/user/{userid}/rooms/{roomid}/account_data/{type}";
public static string Tags = "/_matrix/client/r0/user/{userid}/rooms/{roomid}/tags";
}
/// <summary>
/// Returns the current devices and identity keys for the given users. Posts with a key object.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/End45to45end32encryption/queryKeys
/// </remarks>
public static string Download = "/_matrix/client/r0/keys/query";
public class Room
{
public static string Create = "/_matrix/client/r0/createroom";
public static string Aliases = "/_matrix/client/unstable/org.matrix.msc2432/rooms/{roomid}/aliases";
public static string Active = "/_matrix/client/r0/rooms/{roomid}/joined_members";
public static string Members = "/_matrix/client/r0/rooms/{roomid}/members";
public static string Messages = "/_matrix/client/r0/rooms/{roomid}/messages";
public static string Join = "/_matrix/client/r0/join/{roomidoralias}";
public static string Ban = "/_matrix/client/r0/rooms/{roomid}/ban";
public static string Forget = "/_matrix/client/r0/rooms/{roomid}/forget";
public static string Invite = "/_matrix/client/r0/rooms/{roomid}/invite";
public static string IdJoin = "/_matrix/client/r0/rooms/{roomid}/join";
public static string Kick = "/_matrix/client/r0/rooms/{roomid}/kick";
public static string Leave = "/_matrix/client/r0/rooms/{roomid}/leave";
public static string Unban = "/_matrix/client/r0/rooms/{roomid}/unban";
public static string Marker = "/_matrix/client/r0/rooms/{roomid}/read_markers";
}
/// <summary>
/// Publishes end-to-end encryption keys for the device. Posts with a key object.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/End45to45end32encryption/uploadKeys
/// </remarks>
public static string Upload = "/_matrix/client/r0/keys/upload";
}
public class RoomEvent
{
public static string Context = "/_matrix/client/r0/rooms/{roomid}/context/{eventid}";
public static string Event = "/_matrix/client/r0/rooms/{roomid}/event/{eventid}";
public static string Receipt = "/_matrix/client/r0/rooms/{roomid}/receipt/{receipttype}/{eventid}";
public static string Redact = "/_matrix/client/r0/rooms/{roomid}/redact/{eventid}/{txnid}";
public static string Send = "/_matrix/client/r0/rooms/{roomid}/send/{eventtype}/{txnid}";
public static string Typing = "/_matrix/client/r0/rooms/{roomid}/typing/{userid}";
public static string Flag = "/_matrix/client/r0/rooms/{roomid}/report/{eventid}";
}
public static class Device
{
/// <summary>
/// Private string for device URL
/// </summary>
private static string _deviceIdUrl = "/_matrix/client/r0/devices/{deviceId}";
public class RoomState
{
public static string List = "/_matrix/client/r0/rooms/{roomid}/state";
public static string State = "/_matrix/client/r0/rooms/{roomid}/state/{eventtype}/{statekey}";
}
}
/// <summary>
/// Gets information about all devices for the current user.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/Device32management/getDevices
/// </remarks>
public static string Manage = "/_matrix/client/r0/devices";
/// <summary>
/// Deletes the given device, and invalidates any access token associated with it. Deletes with interactive auth object and deviceId parameter.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/Device32management/deleteDevice
/// </remarks>
public static string Delete = _deviceIdUrl;
/// <summary>
/// Gets information on a single device, by device id. Gets with deviceId parameter.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/Device32management/getDevice
/// </remarks>
public static string Info = _deviceIdUrl;
/// <summary>
/// Updates the metadata (display name) on the given device. Puts a device metadata object with deviceId parameter.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/Device32management/updateDevice
/// </remarks>
public static string Update = _deviceIdUrl;
/// <summary>
/// Deletes the given devices, and invalidates any access token associated with them. Posts with an interactive auth + device list object.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/Device32management/deleteDevices
/// </remarks>
public static string MultiDelete = "/_matrix/client/r0/delete_devices";
/// <summary>
/// Sends send-to-device events to the given devices. Puts a device message object with eventType and txnId parameters.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/Send45to45Device32messaging/sendToDevice
/// </remarks>
public static string Send = "/_matrix/client/r0/sendtodevice/{eventtype}/{txnid}";
}
public static class Media
{
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Config = "/_matrix/media/r0/config";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Save = "/_matrix/media/r0/download/{servername}/{mediaid}";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Saveas = "/_matrix/media/r0/download/{servername}/{mediaid}/{filename}";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Preview = "/_matrix/media/r0/preview_url";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Thumb = "/_matrix/media/r0/thumbnail/{servername}/{mediaid}";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Upload = "/_matrix/media/r0/upload";
}
public static class Notifier
{
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Notifiers = "/_matrix/client/r0/notifications";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Pushers = "/_matrix/client/r0/pushers";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Set = "/_matrix/client/r0/pushers/set";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Rules = "/_matrix/client/r0/pushrules/";
}
public static class NotifierRule
{
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Manage = "/_matrix/client/r0/pushrules/{scope}/{kind}/{ruleid}";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Actions = "/_matrix/client/r0/pushrules/{scope}/{kind}/{ruleid}/actions";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Toggle = "/_matrix/client/r0/pushrules/{scope}/{kind}/{ruleid}/enabled";
}
public static class User
{
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Thirdparty = "/_matrix/client/r0/account/3pid";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Deactivate = "/_matrix/client/r0/account/deactivate";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Password = "/_matrix/client/r0/account/password";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Register = "/_matrix/client/r0/register";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string WhoAmI = "/_matrix/client/r0/account/whoami";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Profile = "/_matrix/client/r0/profile/{userid}";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Avatar = "/_matrix/client/r0/profile/{userid}/avtatar_url";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string DisplayName = "/_matrix/client/r0/profile/{userid}/displayname";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string ExtraInfo = "/_matrix/client/r0/user/{userid}/account_data/{type}";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string EventFilter = "/_matrix/client/r0/user/{userid}/filter";
/// <summary>
/// Gets a list of the user's current rooms.
/// </summary>
/// <remarks>
/// https://matrix.org/docs/api/client-server/#!/Room32membership/getJoinedRooms
/// </remarks>
public static string Rooms = "/_matrix/client/r0/joined_rooms";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Login = "/_matrix/client/r0/login";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Logout = "/_matrix/client/r0/logout";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Status = "/_matrix/client/r0/presence/{userid}/status";
}
public static class UserRoom
{
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Extrainfo = "/_matrix/client/r0/user/{userid}/rooms/{roomid}/account_data/{type}";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Tags = "/_matrix/client/r0/user/{userid}/rooms/{roomid}/tags";
}
public static class Room
{
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Create = "/_matrix/client/r0/createroom";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Aliases = "/_matrix/client/unstable/org.matrix.msc2432/rooms/{roomid}/aliases";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Active = "/_matrix/client/r0/rooms/{roomid}/joined_members";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Members = "/_matrix/client/r0/rooms/{roomid}/members";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Messages = "/_matrix/client/r0/rooms/{roomid}/messages";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Join = "/_matrix/client/r0/join/{roomidoralias}";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Ban = "/_matrix/client/r0/rooms/{roomid}/ban";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Forget = "/_matrix/client/r0/rooms/{roomid}/forget";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Invite = "/_matrix/client/r0/rooms/{roomid}/invite";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string IdJoin = "/_matrix/client/r0/rooms/{roomid}/join";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Kick = "/_matrix/client/r0/rooms/{roomid}/kick";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Leave = "/_matrix/client/r0/rooms/{roomid}/leave";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Unban = "/_matrix/client/r0/rooms/{roomid}/unban";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Marker = "/_matrix/client/r0/rooms/{roomid}/read_markers";
}
public static class RoomEvent
{
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Context = "/_matrix/client/r0/rooms/{roomid}/context/{eventid}";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Event = "/_matrix/client/r0/rooms/{roomid}/event/{eventid}";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Receipt = "/_matrix/client/r0/rooms/{roomid}/receipt/{receipttype}/{eventid}";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Redact = "/_matrix/client/r0/rooms/{roomid}/redact/{eventid}/{txnid}";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Send = "/_matrix/client/r0/rooms/{roomid}/send/{eventtype}/{txnid}";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Typing = "/_matrix/client/r0/rooms/{roomid}/typing/{userid}";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string Flag = "/_matrix/client/r0/rooms/{roomid}/report/{eventid}";
}
public static class RoomState
{
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string List = "/_matrix/client/r0/rooms/{roomid}/state";
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
public static string State = "/_matrix/client/r0/rooms/{roomid}/state/{eventtype}/{statekey}";
}
}
public class MatrixApiEntities
{

118
MatrixDotNetLib/MatrixDotNetLib/MatrixSessionManager.cs

@ -1,6 +1,7 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
@ -13,10 +14,21 @@ namespace MatrixDotNetLib
{
public class MatrixSessionManager
{
/// <summary>
/// Gets or sets the authentication token.
/// </summary>
public string Token { get; set; }
/// <summary>
/// Gets or sets the Matrix homeserver FQDN.
/// </summary>
public string Server { get; set; }
/// <summary>
/// Gets or sets the login session as a MatrixLoginResponse object.
/// </summary>
public MatrixLoginResponse LoginSession { get; set; }
/// <summary>
/// Logs the user in with specified server and credentials.
/// </summary>
@ -27,6 +39,9 @@ namespace MatrixDotNetLib
/// <returns></returns>
public MatrixLoginResponse Login(string server, string user, string pass, string device = "")
{
// set the object's server
this.Server = server;
MatrixLoginIdentifier userId = new MatrixLoginIdentifier()
{
IdType = "m.id.user",
@ -45,51 +60,34 @@ namespace MatrixDotNetLib
theRequest.DeviceId = device;
}
// create a web request
string loginUrl = "https://" + server + MatrixApis.User.Login;
// serialize object into JSON
string requestJson = JsonConvert.SerializeObject(theRequest);
string responseJson = ApiResult(MatrixApis.User.Login, httpAction.GET, requestJson);
string responseJson = ApiResult(MatrixApis.User.Login, httpAction.POST, requestJson);
MatrixLoginResponse response = JsonConvert.DeserializeObject<MatrixLoginResponse>(responseJson);
return response;
//// simplest implementation
//// might not work for UWP
//// sauce: https://stackoverflow.com/questions/5527316/how-to-set-the-content-of-an-httpwebrequest-in-c
//HttpContent requestContent = new StringContent(requestJson, Encoding.UTF8, "application/json");
// we're logged in, so set the object's token
this.Token = response.Token;
//HttpClient client = new HttpClient();
//client.BaseAddress = new Uri(loginUrl);
//client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// also set the object's session data
this.LoginSession = response;
//HttpResponseMessage responseMessage = client.PostAsync(loginUrl, requestContent).Result;
//string responseString = responseMessage.Content.ReadAsStringAsync().Result;
//if(responseString.Contains("errcode"))
//{
// // deserialize into error object
// MatrixError error = JsonConvert.DeserializeObject<MatrixError>(responseString);
return response;
}
// // convert error object to a string
// string errMsg = error.ErrorCode + ": " + error.ErrorMessage;
/// <summary>
/// Gets the logged-in user's currently-joined rooms.
/// </summary>
/// <returns></returns>
public MatrixUserRooms GetRooms()
{
// // throw exception (can be caught and handled gracefully)
// throw new Exception(errMsg);
//}
//else
//{
// MatrixLoginResponse response = JsonConvert.DeserializeObject<MatrixLoginResponse>(responseString);
string responseJson = ApiResult(MatrixApis.User.Rooms, httpAction.GET);
// return response;
//}
}
MatrixUserRooms theRooms = JsonConvert.DeserializeObject<MatrixUserRooms>(responseJson);
public MatrixUserRooms GetRooms(string token)
{
return theRooms;
}
public enum httpAction
@ -109,10 +107,17 @@ namespace MatrixDotNetLib
// replace all entities in param
string url = "https://" + this.Server + api;
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(url);
// if an access token exists, create a bearer authorization header
if (this.Token != null)
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", this.Token);
}
// init empty string
string responseString = "";
@ -143,6 +148,7 @@ namespace MatrixDotNetLib
// 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();
// return URL with entities replaced and URL-encoded
url = WebUtility.UrlEncode(url.Replace(oldVal, newVal));
}
@ -171,8 +177,6 @@ namespace MatrixDotNetLib
responseMessage = client.PutAsync(url, requestContent).Result;
break;
}
responseString = responseMessage.Content.ReadAsStringAsync().Result;
}
else
{
@ -188,6 +192,8 @@ namespace MatrixDotNetLib
}
}
responseString = responseMessage.Content.ReadAsStringAsync().Result;
if (responseString.Contains("errcode"))
{
// deserialize into error object
@ -199,10 +205,48 @@ namespace MatrixDotNetLib
// throw exception (can be caught and handled gracefully)
throw new Exception(errMsg);
}
else if (responseMessage.StatusCode != HttpStatusCode.OK)
{
// web server responded with an HTTP status code other than 200 OK
string errMsg = "Server returned " + (int)responseMessage.StatusCode + ": " + responseMessage.StatusCode.ToString();
throw new Exception(errMsg);
}
else
{
return responseString;
}
}
}
}
}
//// simplest implementation
//// might not work for UWP
//// sauce: https://stackoverflow.com/questions/5527316/how-to-set-the-content-of-an-httpwebrequest-in-c
//HttpContent requestContent = new StringContent(requestJson, Encoding.UTF8, "application/json");
//HttpClient client = new HttpClient();
//client.BaseAddress = new Uri(loginUrl);
//client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
//HttpResponseMessage responseMessage = client.PostAsync(loginUrl, requestContent).Result;
//string responseString = responseMessage.Content.ReadAsStringAsync().Result;
//if(responseString.Contains("errcode"))
//{
// // deserialize into error object
// MatrixError error = JsonConvert.DeserializeObject<MatrixError>(responseString);
// // convert error object to a string
// string errMsg = error.ErrorCode + ": " + error.ErrorMessage;
// // throw exception (can be caught and handled gracefully)
// throw new Exception(errMsg);
//}
//else
//{
// MatrixLoginResponse response = JsonConvert.DeserializeObject<MatrixLoginResponse>(responseString);
// return response;
//}

BIN
MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.dll

diff.bin_not_shown

BIN
MatrixDotNetLib/MatrixDotNetLib/bin/Debug/netcoreapp3.1/MatrixDotNetLib.pdb

diff.bin_not_shown

2
MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.csproj.CoreCompileInputs.cache

@ -1 +1 @@
f16bca70409c8e2ae88277b1bedf2f151bb03767
533436dc4ebb032189320843d6e1e024aef4bca8

BIN
MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.csprojAssemblyReference.cache

diff.bin_not_shown

BIN
MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.dll

diff.bin_not_shown

BIN
MatrixDotNetLib/MatrixDotNetLib/obj/Debug/netcoreapp3.1/MatrixDotNetLib.pdb

diff.bin_not_shown
Loading…
Cancel
Save