public Task <JObject> TransportAsync(SyncEndpoint endpoint, JObject contents) { switch (endpoint) { case SyncEndpoint.BeginSession: return(Task.FromResult(_serverSession.BeginSession(contents))); case SyncEndpoint.EndSession: return(Task.FromResult(_serverSession.EndSession(contents))); case SyncEndpoint.GetChanges: return(Task.FromResult(_serverSession.GetChanges(contents))); case SyncEndpoint.GetItemData: return(Task.FromResult(_serverSession.GetItemData(contents))); case SyncEndpoint.GetItemDataBatch: return(Task.FromResult(_serverSession.GetItemDataBatch(contents))); case SyncEndpoint.PutChanges: return(Task.FromResult(_serverSession.PutChanges(contents))); case SyncEndpoint.PutItemDataBatch: return(Task.FromResult(_serverSession.PutItemDataBatch(contents))); case SyncEndpoint.ApplyChanges: return(Task.FromResult(_serverSession.ApplyChanges(contents))); default: throw new Exception("Unknown endpoint"); } }
public MatrixApi(Uri url) { if (url != null && url.IsWellFormedOriginalString() && !url.IsAbsoluteUri) { throw new MatrixException(Resources.InvalidUrl); } _isAppservice = false; Backend = new HttpBackend(url, UserId); BaseUrl = url; Rng = new Random(DateTime.Now.Millisecond); Room = new RoomApi(this); LoginEndpoint = new LoginEndpoint(this); VersionsEndpoint = new VersionsEndpoint(this); Device = new DeviceApi(this); Media = new MediaApi(this); Profile = new ProfileApi(this); Sync = new SyncEndpoint(this); RoomDirectory = new RoomDirectoryApi(this); }
public async Task <JObject> TransportAsync(SyncEndpoint endpoint, JObject contents) { var request = new JObject(contents); AddCredentials(request); var content = new StringContent(request.ToString(), Encoding.UTF8, "application/json"); var compressedContent = new CompressedContent(content, "gzip"); Uri remoteEndpoint; switch (endpoint) { case SyncEndpoint.BeginSession: remoteEndpoint = new Uri(_remoteAddress, "beginSession"); break; case SyncEndpoint.EndSession: remoteEndpoint = new Uri(_remoteAddress, "endSession"); break; case SyncEndpoint.GetChanges: remoteEndpoint = new Uri(_remoteAddress, "getChanges"); break; case SyncEndpoint.GetItemData: remoteEndpoint = new Uri(_remoteAddress, "getItemData"); break; case SyncEndpoint.GetItemDataBatch: remoteEndpoint = new Uri(_remoteAddress, "getItemDataBatch"); break; case SyncEndpoint.PutChanges: remoteEndpoint = new Uri(_remoteAddress, "putChanges"); break; case SyncEndpoint.PutItemDataBatch: remoteEndpoint = new Uri(_remoteAddress, "putItemDataBatch"); break; case SyncEndpoint.ApplyChanges: remoteEndpoint = new Uri(_remoteAddress, "applyChanges"); break; default: throw new Exception("Unknown endpoint"); } var responseMessage = await Client.PostAsync(remoteEndpoint, compressedContent); var responseString = await responseMessage.Content.ReadAsStringAsync(); if (!responseMessage.IsSuccessStatusCode) { throw new Exception(String.Format("Remote call failed (HTTP Status Code {0}): {1}", responseMessage.StatusCode, responseString)); } var response = JObject.Parse(responseString); if (response["ErrorCode"] != null) { throw new Exception(String.Format("Remote call failed with error code {0} - {1}", response["ErrorCode"], response["ErrorMessage"])); } return(response); }