private async Task <PNResult <PNSetUuidMetadataResult> > SetUuidMetadata(string uuid, bool includeCustom, Dictionary <string, object> externalQueryParam) { if (string.IsNullOrEmpty(uuid)) { uuid = config.Uuid; } PNResult <PNSetUuidMetadataResult> ret = new PNResult <PNSetUuidMetadataResult>(); RequestState <PNSetUuidMetadataResult> requestState = new RequestState <PNSetUuidMetadataResult>(); requestState.ResponseType = PNOperationType.PNSetUuidMetadataOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; requestState.UsePatchMethod = true; Dictionary <string, object> messageEnvelope = new Dictionary <string, object>(); messageEnvelope.Add("name", uuidName); if (uuidExternalId != null) { messageEnvelope.Add("externalId", uuidExternalId); } if (uuidProfileUrl != null) { messageEnvelope.Add("profileUrl", uuidProfileUrl); } if (uuidEmail != null) { messageEnvelope.Add("email", uuidEmail); } if (uuidCustom != null) { messageEnvelope.Add("custom", uuidCustom); } string patchMessage = jsonLibrary.SerializeToJsonString(messageEnvelope); byte[] patchData = Encoding.UTF8.GetBytes(patchMessage); IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildSetUuidMetadataRequest("PATCH", patchMessage, uuid, includeCustom, externalQueryParam); Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false, patchData).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNSetUuidMetadataResult responseResult = responseBuilder.JsonToObject <PNSetUuidMetadataResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
internal async Task <PNResult <PNChannelGroupsListAllResult> > GetAllChannelGroup(Dictionary <string, object> externalQueryParam) { PNResult <PNChannelGroupsListAllResult> ret = new PNResult <PNChannelGroupsListAllResult>(); IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildGetAllChannelGroupRequest("GET", "", externalQueryParam); RequestState <PNChannelGroupsListAllResult> requestState = new RequestState <PNChannelGroupsListAllResult>(); requestState.ResponseType = PNOperationType.ChannelGroupAllGet; requestState.Reconnect = false; requestState.EndPointOperation = this; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNChannelGroupsListAllResult responseResult = responseBuilder.JsonToObject <PNChannelGroupsListAllResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
private async Task <PNResult <PNDeleteFileResult> > ProcessDeleteFileRequest(Dictionary <string, object> externalQueryParam) { PNResult <PNDeleteFileResult> ret = new PNResult <PNDeleteFileResult>(); if (string.IsNullOrEmpty(this.channelName)) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Invalid Channel name", new ArgumentException("Invalid Channel name")) }; ret.Status = errStatus; return(ret); } if (string.IsNullOrEmpty(this.currentFileId)) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Missing File Id", new ArgumentException("Missing File Id")) }; ret.Status = errStatus; return(ret); } if (string.IsNullOrEmpty(this.currentFileName)) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Invalid file name", new ArgumentException("Invalid file name")) }; ret.Status = errStatus; return(ret); } IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildGetFileUrlOrDeleteReqest("DELETE", "", this.channelName, this.currentFileId, this.currentFileName, externalQueryParam, PNOperationType.PNFileUrlOperation); RequestState <PNDeleteFileResult> requestState = new RequestState <PNDeleteFileResult>(); requestState.ResponseType = PNOperationType.PNDeleteFileOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; requestState.UsePostMethod = false; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNDeleteFileResult responseResult = responseBuilder.JsonToObject <PNDeleteFileResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
public static async Task ThenWithAsyncAuditPushChannelProvisionsShouldReturnSuccess() #endif { server.ClearRequests(); receivedMessage = false; currentTestCase = "ThenWithAsyncAuditPushChannelProvisionsShouldReturnSuccess"; if (PubnubCommon.EnableStubTest) { Assert.Ignore("Cannot run static unit test on AuditPushChannelProvisions"); return; } PNConfiguration config = new PNConfiguration { SubscribeKey = PubnubCommon.SubscribeKey, Uuid = "mytestuuid", Secure = false }; if (PubnubCommon.PAMServerSideRun) { config.PublishKey = PubnubCommon.PublishKey; config.SecretKey = PubnubCommon.SecretKey; } else if (!string.IsNullOrEmpty(authKey) && !PubnubCommon.SuppressAuthKey) { config.AuthKey = authKey; } server.RunOnHttps(false); pubnub = createPubNubInstance(config); manualResetEventWaitTimeout = (PubnubCommon.EnableStubTest) ? 1000 : 310 * 1000; mrePush = new ManualResetEvent(false); #if NET40 PNResult <PNPushListProvisionsResult> resp = Task.Factory.StartNew(async() => await pubnub.AuditPushChannelProvisions().DeviceId("4e71acc275a8eeb400654d923724c073956661455697c92ca6c5438f2c19aa7b").PushType(PNPushType.APNS) .ExecuteAsync()).Result.Result; #else PNResult <PNPushListProvisionsResult> resp = await pubnub.AuditPushChannelProvisions().DeviceId("4e71acc275a8eeb400654d923724c073956661455697c92ca6c5438f2c19aa7b").PushType(PNPushType.APNS) .ExecuteAsync(); #endif if (resp.Result != null) { receivedMessage = true; } pubnub.Destroy(); pubnub.PubnubUnitTest = null; pubnub = null; Assert.IsTrue(receivedMessage, "With Async AuditPushChannelProvisions Failed"); }
private async Task <PNResult <PNAddMessageActionResult> > Publish(string channel, long messageTimetoken, PNMessageAction messageAction, Dictionary <string, object> externalQueryParam) { PNResult <PNAddMessageActionResult> ret = new PNResult <PNAddMessageActionResult>(); if (string.IsNullOrEmpty(channel) || string.IsNullOrEmpty(channel.Trim()) || messageAction == null) { PNStatus status = new PNStatus(); status.Error = true; status.ErrorData = new PNErrorData("Missing Channel or MessageAction", new ArgumentException("Missing Channel or MessageAction")); ret.Status = status; return(ret); } if (string.IsNullOrEmpty(config.SubscribeKey) || string.IsNullOrEmpty(config.SubscribeKey.Trim()) || config.SubscribeKey.Length <= 0) { PNStatus status = new PNStatus(); status.Error = true; status.ErrorData = new PNErrorData("Invalid subscribe key", new MissingMemberException("Invalid subscribe key")); ret.Status = status; return(ret); } string requestMethodName = "POST"; string postMessage = jsonLibrary.SerializeToJsonString(messageAction); byte[] postData = Encoding.UTF8.GetBytes(postMessage); IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildAddMessageActionRequest(requestMethodName, postMessage, channel, messageTimetoken, externalQueryParam); RequestState <PNAddMessageActionResult> requestState = new RequestState <PNAddMessageActionResult>(); requestState.Channels = new[] { channel }; requestState.ResponseType = PNOperationType.PNAddMessageActionOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; requestState.UsePostMethod = true; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false, postData).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNAddMessageActionResult responseResult = responseBuilder.JsonToObject <PNAddMessageActionResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
public static async Task ThenWithAsyncDeleteMessageShouldReturnSuccessMessage() #endif { server.ClearRequests(); currentTestCase = "ThenWithAsyncDeleteMessageShouldReturnSuccessMessage"; receivedMessage = false; PNConfiguration config = new PNConfiguration { PublishKey = PubnubCommon.PublishKey, SubscribeKey = PubnubCommon.SubscribeKey, Uuid = "mytestuuid", Secure = false }; if (PubnubCommon.PAMServerSideRun) { config.SecretKey = PubnubCommon.SecretKey; } else if (!string.IsNullOrEmpty(authKey) && !PubnubCommon.SuppressAuthKey) { config.AuthKey = authKey; } pubnub = createPubNubInstance(config); string expected = "{\"status\": 200, \"error\": false, \"error_message\": \"\"}"; server.AddRequest(new Request() .WithMethod("DELETE") .WithPath(string.Format("/v3/history/sub-key/{0}/channel/{1}", PubnubCommon.SubscribeKey, channel)) .WithParameter("pnsdk", PubnubCommon.EncodedSDK) .WithParameter("requestid", "myRequestId") .WithParameter("timestamp", "1356998400") .WithParameter("uuid", config.Uuid) .WithParameter("signature", "AQjIVGOI59CyaHrRG18XRZmqRjgWdzbbf9icO0Yzxo4=") .WithResponse(expected) .WithStatusCode(System.Net.HttpStatusCode.OK)); #if NET40 PNResult <PNDeleteMessageResult> resp = Task.Factory.StartNew(async() => await pubnub.DeleteMessages().Channel(channel).ExecuteAsync()).Result.Result; #else PNResult <PNDeleteMessageResult> resp = await pubnub.DeleteMessages().Channel(channel).ExecuteAsync(); #endif if (resp.Result != null && resp.Status.StatusCode == 200 && !resp.Status.Error) { receivedMessage = true; } pubnub.Destroy(); pubnub.PubnubUnitTest = null; pubnub = null; Assert.IsTrue(receivedMessage, "ThenWithAsyncDeleteMessageShouldReturnSuccessMessage - DeleteMessages Result not expected"); }
internal async Task <PNResult <PNGetStateResult> > GetUserState(string[] channels, string[] channelGroups, string uuid, Dictionary <string, object> externalQueryParam) { if ((channels == null && channelGroups == null) || (channels != null && channelGroups != null && channels.Length == 0 && channelGroups.Length == 0)) { throw new ArgumentException("Either Channel Or Channel Group or Both should be provided"); } PNResult <PNGetStateResult> ret = new PNResult <PNGetStateResult>(); string internalUuid; if (string.IsNullOrEmpty(uuid) || uuid.Trim().Length == 0) { internalUuid = config.Uuid; } else { internalUuid = uuid; } string channelsCommaDelimited = (channels != null && channels.Length > 0) ? string.Join(",", channels.OrderBy(x => x).ToArray()) : ""; string channelGroupsCommaDelimited = (channelGroups != null && channelGroups.Length > 0) ? string.Join(",", channelGroups.OrderBy(x => x).ToArray()) : ""; IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildGetUserStateRequest("GET", "", channelsCommaDelimited, channelGroupsCommaDelimited, internalUuid, externalQueryParam); RequestState <PNGetStateResult> requestState = new RequestState <PNGetStateResult>(); requestState.Channels = channels; requestState.ChannelGroups = channelGroups; requestState.ResponseType = PNOperationType.PNGetStateOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNGetStateResult responseResult = responseBuilder.JsonToObject <PNGetStateResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
internal async Task <PNResult <PNAccessManagerAuditResult> > AuditAccess(string channel, string channelGroup, string[] authKeys, Dictionary <string, object> externalQueryParam) { if (string.IsNullOrEmpty(config.SecretKey) || string.IsNullOrEmpty(config.SecretKey.Trim()) || config.SecretKey.Length <= 0) { throw new MissingMemberException("Invalid secret key"); } PNResult <PNAccessManagerAuditResult> ret = new PNResult <PNAccessManagerAuditResult>(); string authKeysCommaDelimited = (authKeys != null && authKeys.Length > 0) ? string.Join(",", authKeys.OrderBy(x => x).ToArray()) : ""; IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildAuditAccessRequest("GET", "", channel, channelGroup, authKeysCommaDelimited, externalQueryParam); RequestState <PNAccessManagerAuditResult> requestState = new RequestState <PNAccessManagerAuditResult>(); if (!string.IsNullOrEmpty(channel)) { requestState.Channels = new[] { channel }; } if (!string.IsNullOrEmpty(channelGroup)) { requestState.ChannelGroups = new[] { channelGroup }; } requestState.ResponseType = PNOperationType.PNAccessManagerAudit; requestState.Reconnect = false; requestState.EndPointOperation = this; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> result = ProcessJsonResponse(requestState, json); if (result != null) { List <object> resultList = ProcessJsonResponse(requestState, json); if (resultList != null && resultList.Count > 0) { ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNAccessManagerAuditResult responseResult = responseBuilder.JsonToObject <PNAccessManagerAuditResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } } } return(ret); }
public static async Task ThenWithAsyncGetMessageActionsReturnsSuccess() #endif { server.ClearRequests(); bool receivedMessage = false; PNConfiguration config = new PNConfiguration { PublishKey = PubnubCommon.PublishKey, SubscribeKey = PubnubCommon.SubscribeKey, Uuid = "mytestuuid", Secure = false }; if (PubnubCommon.PAMServerSideRun) { config.SecretKey = PubnubCommon.SecretKey; } else if (!string.IsNullOrEmpty(authKey) && !PubnubCommon.SuppressAuthKey) { config.AuthKey = authKey; } server.RunOnHttps(false); if (PubnubCommon.PAMServerSideRun) { config.AuthKey = "myauth"; } pubnub = createPubNubInstance(config); string channel = "hello_my_channel"; manualResetEventWaitTimeout = (PubnubCommon.EnableStubTest) ? 1000 : 310 * 1000; System.Diagnostics.Debug.WriteLine("GetMessageActions STARTED"); #if NET40 PNResult <PNGetMessageActionsResult> getMsgActionResult = Task.Factory.StartNew(async() => await pubnub.GetMessageActions().Channel(channel).ExecuteAsync()).Result.Result; #else PNResult <PNGetMessageActionsResult> getMsgActionResult = await pubnub.GetMessageActions().Channel(channel).ExecuteAsync(); #endif if (getMsgActionResult.Result != null && getMsgActionResult.Status.StatusCode == 200 && !getMsgActionResult.Status.Error) { System.Diagnostics.Debug.WriteLine("GetMessageActions = " + pubnub.JsonPluggableLibrary.SerializeToJsonString(getMsgActionResult.Result)); receivedMessage = true; } pubnub.Destroy(); pubnub.PubnubUnitTest = null; pubnub = null; Assert.IsTrue(receivedMessage, "ThenWithAsyncGetMessageActionsReturnsSuccess Failed"); }
private async Task <PNResult <PNGenerateFileUploadUrlResult> > GenerateFileUploadUrl(Dictionary <string, object> externalQueryParam) { PNResult <PNGenerateFileUploadUrlResult> ret = new PNResult <PNGenerateFileUploadUrlResult>(); if (string.IsNullOrEmpty(sendFileName)) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Invalid file name", new ArgumentException("Invalid file name")) }; ret.Status = errStatus; return(ret); } RequestState <PNGenerateFileUploadUrlResult> requestState = new RequestState <PNGenerateFileUploadUrlResult>(); requestState.ResponseType = PNOperationType.PNGenerateFileUploadUrlOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; requestState.UsePostMethod = true; Dictionary <string, object> messageEnvelope = new Dictionary <string, object>(); if (!string.IsNullOrEmpty(sendFileName)) { messageEnvelope.Add("name", sendFileName); } string postMessage = jsonLibrary.SerializeToJsonString(messageEnvelope); byte[] postData = Encoding.UTF8.GetBytes(postMessage); IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildGenerateFileUploadUrlRequest("POST", postMessage, this.channelName, externalQueryParam); Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false, postData).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNGenerateFileUploadUrlResult responseResult = responseBuilder.JsonToObject <PNGenerateFileUploadUrlResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
public async Task <ResponseData> PublishMessages(string channelName) { ResponseData data = new ResponseData(); PNResult <PNPublishResult> publishResponse = await pubnub.Publish().Channel(channelName) .Message(message) .ExecuteAsync(); data.responseResult = publishResponse.Result != null?publishResponse.Result.Timetoken.ToString() : string.Empty; data.status = publishResponse.Status != null?publishResponse.Status.StatusCode.ToString() : string.Empty; return(data); }
internal async Task <PNResult <PNChannelGroupsRemoveChannelResult> > RemoveChannelsFromChannelGroup(string[] channels, string nameSpace, string groupName, Dictionary <string, object> externalQueryParam) { if (channels == null || channels.Length == 0) { throw new ArgumentException("Missing channel(s)"); } if (nameSpace == null) { throw new ArgumentException("Missing nameSpace"); } if (string.IsNullOrEmpty(groupName) || groupName.Trim().Length == 0) { throw new ArgumentException("Missing groupName"); } PNResult <PNChannelGroupsRemoveChannelResult> ret = new PNResult <PNChannelGroupsRemoveChannelResult>(); IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); string channelsCommaDelimited = string.Join(",", channels.OrderBy(x => x).ToArray()); Uri request = urlBuilder.BuildRemoveChannelsFromChannelGroupRequest("GET", "", channelsCommaDelimited, nameSpace, groupName, externalQueryParam); RequestState <PNChannelGroupsRemoveChannelResult> requestState = new RequestState <PNChannelGroupsRemoveChannelResult>(); requestState.ResponseType = PNOperationType.PNRemoveChannelsFromGroupOperation; requestState.Channels = new string[] { }; requestState.ChannelGroups = new[] { groupName }; requestState.Reconnect = false; requestState.EndPointOperation = this; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNChannelGroupsRemoveChannelResult responseResult = responseBuilder.JsonToObject <PNChannelGroupsRemoveChannelResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
private async Task <PNResult <PNGetMessageActionsResult> > GetMessageActions(string channel, long start, long end, int limit, Dictionary <string, object> externalQueryParam) { PNResult <PNGetMessageActionsResult> ret = new PNResult <PNGetMessageActionsResult>(); if (string.IsNullOrEmpty(channel) || string.IsNullOrEmpty(channel.Trim())) { PNStatus status = new PNStatus(); status.Error = true; status.ErrorData = new PNErrorData("Missing Channel or MessageAction", new ArgumentException("Missing Channel or MessageAction")); ret.Status = status; return(ret); } if (string.IsNullOrEmpty(config.SubscribeKey) || string.IsNullOrEmpty(config.SubscribeKey.Trim()) || config.SubscribeKey.Length <= 0) { PNStatus status = new PNStatus(); status.Error = true; status.ErrorData = new PNErrorData("Invalid subscribe key", new MissingMemberException("Invalid publish key")); ret.Status = status; return(ret); } IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildGetMessageActionsRequest("GET", "", channel, start, end, limit, externalQueryParam); RequestState <PNGetMessageActionsResult> requestState = new RequestState <PNGetMessageActionsResult>(); requestState.Channels = new[] { channel }; requestState.ResponseType = PNOperationType.PNGetMessageActionsOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNGetMessageActionsResult responseResult = responseBuilder.JsonToObject <PNGetMessageActionsResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
private async Task <PNResult <PNRemoveChannelMetadataResult> > RemoveChannelMetadata(string spaceId, Dictionary <string, object> externalQueryParam) { PNResult <PNRemoveChannelMetadataResult> ret = new PNResult <PNRemoveChannelMetadataResult>(); if (string.IsNullOrEmpty(this.chMetadataId) || string.IsNullOrEmpty(this.chMetadataId.Trim())) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Missing Channel", new ArgumentException("Missing Channel")) }; ret.Status = errStatus; return(ret); } if (string.IsNullOrEmpty(config.SubscribeKey) || string.IsNullOrEmpty(config.SubscribeKey.Trim()) || config.SubscribeKey.Length <= 0) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Invalid Subscribe key", new ArgumentException("Invalid Subscribe key")) }; ret.Status = errStatus; return(ret); } IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildDeleteChannelMetadataRequest("DELETE", "", spaceId, externalQueryParam); RequestState <PNRemoveChannelMetadataResult> requestState = new RequestState <PNRemoveChannelMetadataResult>(); requestState.ResponseType = PNOperationType.PNDeleteChannelMetadataOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNRemoveChannelMetadataResult responseResult = responseBuilder.JsonToObject <PNRemoveChannelMetadataResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
private async Task <PNResult <PNMembershipsResult> > GetMembershipsList(string uuid, PNPageObject page, int limit, bool includeCount, string includeOptions, string filter, List <string> sort, Dictionary <string, object> externalQueryParam) { PNResult <PNMembershipsResult> ret = new PNResult <PNMembershipsResult>(); if (string.IsNullOrEmpty(uuid)) { uuid = config.Uuid; } PNPageObject internalPage; if (page == null) { internalPage = new PNPageObject(); } else { internalPage = page; } IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildGetAllMembershipsRequest("GET", "", uuid, internalPage.Next, internalPage.Prev, limit, includeCount, includeOptions, filter, sort, externalQueryParam); RequestState <PNMembershipsResult> requestState = new RequestState <PNMembershipsResult>(); requestState.ResponseType = PNOperationType.PNGetMembershipsOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; requestState.UsePostMethod = false; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNMembershipsResult responseResult = responseBuilder.JsonToObject <PNMembershipsResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
internal async Task <PNResult <PNPushAddChannelResult> > RegisterDevice(string[] channels, PNPushType pushType, string pushToken, PushEnvironment environment, string deviceTopic, Dictionary <string, object> externalQueryParam) { if (channels == null || channels.Length == 0 || channels[0] == null || channels[0].Trim().Length == 0) { throw new ArgumentException("Missing Channel"); } if (pushToken == null) { throw new ArgumentException("Missing deviceId"); } if (pushType == PNPushType.APNS2 && string.IsNullOrEmpty(deviceTopic)) { throw new ArgumentException("Missing Topic"); } PNResult <PNPushAddChannelResult> ret = new PNResult <PNPushAddChannelResult>(); string channel = string.Join(",", channels.OrderBy(x => x).ToArray()); IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildRegisterDevicePushRequest("GET", "", channel, pushType, pushToken, environment, deviceTopic, externalQueryParam); RequestState <PNPushAddChannelResult> requestState = new RequestState <PNPushAddChannelResult>(); requestState.Channels = new[] { channel }; requestState.ResponseType = PNOperationType.PushRegister; requestState.Reconnect = false; requestState.EndPointOperation = this; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNPushAddChannelResult responseResult = responseBuilder.JsonToObject <PNPushAddChannelResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
public async Task <ResponseData> RegisterDevice(string deviceToken) { ResponseData data = new ResponseData(); PNResult <PNPushAddChannelResult> response = await pubnub.AddPushNotificationsOnChannels() .PushType(PNPushType.APNS) .Channels(new string[] { "DevOps_Channel" }) .DeviceId(deviceToken) .ExecuteAsync(); data.responseResult = response.Result != null?response.Result.ToString() : string.Empty; data.status = response.Status != null?response.Status.StatusCode.ToString() : string.Empty; return(data); }
internal async Task <PNResult <PNWhereNowResult> > WhereNow(string uuid, Dictionary <string, object> externalQueryParam) { if (jsonLibrary == null) { throw new MissingMemberException("Missing Json Pluggable Library for Pubnub Instance"); } PNResult <PNWhereNowResult> ret = new PNResult <PNWhereNowResult>(); string currentUuid = ""; if (string.IsNullOrEmpty(uuid)) { currentUuid = config.Uuid; } else { currentUuid = uuid; } IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildWhereNowRequest("GET", "", currentUuid, externalQueryParam); RequestState <PNWhereNowResult> requestState = new RequestState <PNWhereNowResult>(); requestState.Channels = new[] { currentUuid }; requestState.ResponseType = PNOperationType.PNWhereNowOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNWhereNowResult responseResult = responseBuilder.JsonToObject <PNWhereNowResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
private async Task <PNResult <PNPublishFileMessageResult> > PublishFileMessage(object message, Dictionary <string, object> externalQueryParam) { PNResult <PNPublishFileMessageResult> ret = new PNResult <PNPublishFileMessageResult>(); IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildPublishFileMessageRequest("GET", "", this.channelName, message, this.storeInHistory, this.ttl, this.userMetadata, null, externalQueryParam); RequestState <PNPublishFileMessageResult> requestState = new RequestState <PNPublishFileMessageResult>(); requestState.Channels = new[] { this.channelName }; requestState.ResponseType = PNOperationType.PNPublishFileMessageOperation; requestState.PubnubCallback = null; requestState.Reconnect = false; requestState.EndPointOperation = this; string json = ""; await UrlProcessRequest(request, requestState, false).ContinueWith(r => { json = r.Result.Item1; if (!string.IsNullOrEmpty(json)) { List <object> result = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNPublishFileMessageResult publishResult = responseBuilder.JsonToObject <PNPublishFileMessageResult>(result, true); StatusBuilder statusBuilder = new StatusBuilder(config, jsonLibrary); if (publishResult != null) { ret.Result = publishResult; PNStatus status = statusBuilder.CreateStatusResponse(requestState.ResponseType, PNStatusCategory.PNAcknowledgmentCategory, requestState, (int)HttpStatusCode.OK, null); ret.Status = status; } else { PNException ex = new PNException("File has been upload but the notification couldn't be sent to the subscribed users"); PNStatus status = statusBuilder.CreateStatusResponse(requestState.ResponseType, PNStatusCategory.PNUnknownCategory, requestState, (int)HttpStatusCode.BadRequest, ex); status.AdditonalData = new Dictionary <string, string> { { "FileId", currentFileId }, { "FileName", sendFileName } }; ret.Status = status; } } }, TaskContinuationOptions.ExecuteSynchronously); return(ret); }
private async Task <PNResult <PNGetChannelMetadataResult> > GetSingleChannelMetadata(string spaceId, bool includeCustom, Dictionary <string, object> externalQueryParam) { PNResult <PNGetChannelMetadataResult> ret = new PNResult <PNGetChannelMetadataResult>(); if (string.IsNullOrEmpty(this.chMetadataId)) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Missing Channel", new ArgumentException("Missing Channel")) }; ret.Status = errStatus; return(ret); } IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildGetSingleChannelMetadataRequest("GET", "", spaceId, includeCustom, externalQueryParam); RequestState <PNGetChannelMetadataResult> requestState = new RequestState <PNGetChannelMetadataResult>(); requestState.ResponseType = PNOperationType.PNGetChannelMetadataOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; requestState.UsePostMethod = false; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNGetChannelMetadataResult responseResult = responseBuilder.JsonToObject <PNGetChannelMetadataResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
internal async Task <PNResult <PNPushListProvisionsResult> > GetChannelsForDevice(PNPushType pushType, string pushToken, PushEnvironment environment, string deviceTopic, Dictionary <string, object> externalQueryParam) { if (pushToken == null) { throw new ArgumentException("Missing Uri"); } if (pushType == PNPushType.APNS2 && string.IsNullOrEmpty(deviceTopic)) { throw new ArgumentException("Missing Topic"); } PNResult <PNPushListProvisionsResult> ret = new PNResult <PNPushListProvisionsResult>(); IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildGetChannelsPushRequest("GET", "", pushType, pushToken, environment, deviceTopic, externalQueryParam); RequestState <PNPushListProvisionsResult> requestState = new RequestState <PNPushListProvisionsResult>(); requestState.ResponseType = PNOperationType.PushGet; requestState.Reconnect = false; requestState.EndPointOperation = this; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNPushListProvisionsResult responseResult = responseBuilder.JsonToObject <PNPushListProvisionsResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
private async Task <PNResult <PNFileUrlResult> > ProcessGetFileUrl(Dictionary <string, object> externalQueryParam) { PNResult <PNFileUrlResult> ret = new PNResult <PNFileUrlResult>(); if (string.IsNullOrEmpty(this.currentFileId)) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Missing File Id", new ArgumentException("Missing File Id")) }; ret.Status = errStatus; return(ret); } if (string.IsNullOrEmpty(this.currentFileName)) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Invalid file name", new ArgumentException("Invalid file name")) }; ret.Status = errStatus; return(ret); } IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildGetFileUrlOrDeleteReqest("GET", "", this.channelName, this.currentFileId, this.currentFileName, externalQueryParam, PNOperationType.PNFileUrlOperation); PNFileUrlResult result = new PNFileUrlResult(); result.Url = request.ToString(); PNStatus status = new PNStatus { Error = false, StatusCode = 200 }; ret.Result = result; ret.Status = status; await Task.Factory.StartNew(() => { }).ConfigureAwait(false);//dummy stmt. return(ret); }
internal async Task <PNResult <PNHistoryResult> > History(string channel, long start, long end, int count, bool reverse, bool includeToken, bool includeMeta, Dictionary <string, object> externalQueryParam) { if (string.IsNullOrEmpty(channel) || string.IsNullOrEmpty(channel.Trim())) { throw new ArgumentException("Missing Channel"); } PNResult <PNHistoryResult> ret = new PNResult <PNHistoryResult>(); IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildHistoryRequest("GET", "", channel, start, end, count, reverse, includeToken, includeMeta, externalQueryParam); RequestState <PNHistoryResult> requestState = new RequestState <PNHistoryResult>(); requestState.Channels = new[] { channel }; requestState.ResponseType = PNOperationType.PNHistoryOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNHistoryResult responseResult = responseBuilder.JsonToObject <PNHistoryResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
internal async Task <PNResult <PNHistoryResult> > History() { if (string.IsNullOrEmpty(this.channelName) || string.IsNullOrEmpty(this.channelName.Trim())) { throw new ArgumentException("Missing Channel"); } PNResult <PNHistoryResult> ret = new PNResult <PNHistoryResult>(); IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildHistoryRequest("GET", "", this.channelName, this.startTimetoken, this.endTimetoken, this.historyCount, this.reverseOption, this.includeTimetokenOption, this.withMetaOption, this.queryParam); RequestState <PNHistoryResult> requestState = new RequestState <PNHistoryResult>(); requestState.Channels = new[] { this.channelName }; requestState.ResponseType = PNOperationType.PNHistoryOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNHistoryResult responseResult = responseBuilder.JsonToObject <PNHistoryResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
internal async Task <PNResult <PNMessageCountResult> > MessageCounts(string[] channels, long[] timetokens, Dictionary <string, object> externalQueryParam) { if (channels == null || channels.Length == 0) { throw new ArgumentException("Missing Channel"); } PNResult <PNMessageCountResult> ret = new PNResult <PNMessageCountResult>(); IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildMessageCountsRequest("GET", "", channels, timetokens, externalQueryParam); RequestState <PNMessageCountResult> requestState = new RequestState <PNMessageCountResult>(); requestState.Channels = channels; requestState.ResponseType = PNOperationType.PNMessageCountsOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNMessageCountResult responseResult = responseBuilder.JsonToObject <PNMessageCountResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
public static async Task ThenItShouldReturnTimeStamp() #endif { server.ClearRequests(); currentUnitTestCase = "ThenItShouldReturnTimeStamp"; timeReceived = false; mreTime = new ManualResetEvent(false); PNConfiguration config = new PNConfiguration { PublishKey = PubnubCommon.PublishKey, SubscribeKey = PubnubCommon.SubscribeKey, Uuid = "mytestuuid", Secure = false }; server.RunOnHttps(false); pubnub = createPubNubInstance(config); string expected = "[14725889985315301]"; server.AddRequest(new Request() .WithMethod("GET") .WithPath("/time/0") .WithParameter("pnsdk", PubnubCommon.EncodedSDK) .WithParameter("requestid", "myRequestId") .WithParameter("uuid", config.Uuid) .WithResponse(expected) .WithStatusCode(System.Net.HttpStatusCode.OK)); #if NET40 pubnub.Time().Execute(new PNTimeResultExt((result, status) => { try { Debug.WriteLine("PNStatus={0}", pubnub.JsonPluggableLibrary.SerializeToJsonString(status)); if (result != null) { Debug.WriteLine(pubnub.JsonPluggableLibrary.SerializeToJsonString(result)); if (status.StatusCode == 200 && status.Error == false) { if (PubnubCommon.EnableStubTest) { if (expectedTime == result.Timetoken) { timeReceived = true; } } else if (result.Timetoken > 0) { timeReceived = true; } } } } catch { /* ignone */ } finally { mreTime.Set(); } })); mreTime.WaitOne(310 * 1000); #else PNResult <PNTimeResult> timeResult = await pubnub.Time().ExecuteAsync(); if (timeResult.Result != null) { Debug.WriteLine(string.Format("ASYNC RESULT = {0}", pubnub.JsonPluggableLibrary.SerializeToJsonString(timeResult.Result))); if (timeResult.Status.StatusCode == 200 && timeResult.Status.Error == false) { if (PubnubCommon.EnableStubTest) { if (expectedTime == timeResult.Result.Timetoken) { timeReceived = true; } } else if (timeResult.Result.Timetoken > 0) { timeReceived = true; } } } #endif pubnub.Destroy(); pubnub = null; Assert.IsTrue(timeReceived, "time() Failed"); }
private async Task <PNResult <PNChannelMembersResult> > ProcessMembersOperationRequest(string channel, List <PNChannelMember> setMemberList, List <string> removeMemberList, PNPageObject page, int limit, bool includeCount, string includeOptions, List <string> sort, Dictionary <string, object> externalQueryParam) { PNResult <PNChannelMembersResult> ret = new PNResult <PNChannelMembersResult>(); if (string.IsNullOrEmpty(channel) || string.IsNullOrEmpty(channel.Trim())) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Missing Channel", new ArgumentException("Missing Channel")) }; ret.Status = errStatus; return(ret); } if (string.IsNullOrEmpty(config.SubscribeKey) || string.IsNullOrEmpty(config.SubscribeKey.Trim()) || config.SubscribeKey.Length <= 0) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Invalid Subscribe key", new ArgumentException("Invalid Subscribe key")) }; ret.Status = errStatus; return(ret); } PNPageObject internalPage; if (page == null) { internalPage = new PNPageObject(); } else { internalPage = page; } RequestState <PNChannelMembersResult> requestState = new RequestState <PNChannelMembersResult>(); requestState.ResponseType = PNOperationType.PNManageChannelMembersOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; requestState.UsePatchMethod = true; requestState.UsePatchMethod = true; Dictionary <string, object> messageEnvelope = new Dictionary <string, object>(); if (setMemberList != null) { List <Dictionary <string, object> > setMemberFormatList = new List <Dictionary <string, object> >(); for (int index = 0; index < setMemberList.Count; index++) { Dictionary <string, object> currentMemberFormat = new Dictionary <string, object>(); currentMemberFormat.Add("uuid", new Dictionary <string, string> { { "id", setMemberList[index].Uuid } }); if (setMemberList[index].Custom != null) { currentMemberFormat.Add("custom", setMemberList[index].Custom); } setMemberFormatList.Add(currentMemberFormat); } if (setMemberFormatList.Count > 0) { messageEnvelope.Add("set", setMemberFormatList); } } if (removeMemberList != null) { List <Dictionary <string, Dictionary <string, string> > > removeMemberFormatList = new List <Dictionary <string, Dictionary <string, string> > >(); for (int index = 0; index < removeMemberList.Count; index++) { Dictionary <string, Dictionary <string, string> > currentMemberFormat = new Dictionary <string, Dictionary <string, string> >(); if (!string.IsNullOrEmpty(removeMemberList[index])) { currentMemberFormat.Add("uuid", new Dictionary <string, string> { { "id", removeMemberList[index] } }); removeMemberFormatList.Add(currentMemberFormat); } } if (removeMemberFormatList.Count > 0) { messageEnvelope.Add("delete", removeMemberFormatList); } } string patchMessage = jsonLibrary.SerializeToJsonString(messageEnvelope); IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildMemberAddUpdateRemoveChannelRequest("PATCH", patchMessage, channel, internalPage.Next, internalPage.Prev, limit, includeCount, includeOptions, sort, externalQueryParam); Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false, patchMessage).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNChannelMembersResult responseResult = responseBuilder.JsonToObject <PNChannelMembersResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
public static async Task ThenWithAsyncGetAllChannelGroupShouldReturnSuccess() #endif { server.ClearRequests(); if (!PubnubCommon.PAMServerSideRun) { Assert.Ignore("Ignored due to requied secret key to get all CGs"); } currentUnitTestCase = "ThenGetAllChannelGroupShouldReturnSuccess"; receivedChannelGroupMessage = false; PNConfiguration config = new PNConfiguration { PublishKey = PubnubCommon.PublishKey, SubscribeKey = PubnubCommon.SubscribeKey, Uuid = "mytestuuid", }; if (PubnubCommon.PAMServerSideRun) { config.SecretKey = PubnubCommon.SecretKey; } else if (!string.IsNullOrEmpty(authKey) && !PubnubCommon.SuppressAuthKey) { config.AuthKey = authKey; } pubnub = createPubNubInstance(config); string expected = "{\"status\": 200, \"payload\": {\"namespace\": \"\", \"groups\": [\"" + channelGroupName + "\", \"hello_my_group1\"]}, \"service\": \"channel-registry\", \"error\": false}"; server.AddRequest(new Request() .WithMethod("GET") .WithPath(string.Format("/v1/channel-registration/sub-key/{0}/channel-group", PubnubCommon.SubscribeKey)) .WithParameter("pnsdk", PubnubCommon.EncodedSDK) .WithParameter("requestid", "myRequestId") .WithParameter("timestamp", "1356998400") .WithParameter("uuid", config.Uuid) .WithParameter("signature", "qnMQZkath89WEZaFGFmYaODIJqscq97l4TlvkVKHx_0=") .WithResponse(expected) .WithStatusCode(System.Net.HttpStatusCode.OK)); channelGroupManualEvent = new ManualResetEvent(false); #if NET40 PNResult <PNChannelGroupsListAllResult> cgListAllResult = Task.Factory.StartNew(async() => await pubnub.ListChannelGroups().ExecuteAsync()).Result.Result; #else PNResult <PNChannelGroupsListAllResult> cgListAllResult = await pubnub.ListChannelGroups().ExecuteAsync(); #endif Debug.WriteLine("PNStatus={0}", pubnub.JsonPluggableLibrary.SerializeToJsonString(cgListAllResult.Status)); if (cgListAllResult.Result != null) { Debug.WriteLine(pubnub.JsonPluggableLibrary.SerializeToJsonString(cgListAllResult.Result)); if (cgListAllResult.Status.StatusCode == 200 && !cgListAllResult.Status.Error) { receivedChannelGroupMessage = true; } } pubnub.Destroy(); pubnub.PubnubUnitTest = null; pubnub = null; Assert.IsTrue(receivedChannelGroupMessage, "WhenChannelGroupIsRequested -> ThenGetChannelListShouldReturnSuccess failed."); }
public static async Task ThenWithAsyncGetChannelListShouldReturnSuccess() #endif { server.ClearRequests(); currentUnitTestCase = "ThenGetChannelListShouldReturnSuccess"; receivedChannelGroupMessage = false; PNConfiguration config = new PNConfiguration { PublishKey = PubnubCommon.PublishKey, SubscribeKey = PubnubCommon.SubscribeKey, Uuid = "mytestuuid", }; if (PubnubCommon.PAMServerSideRun) { config.SecretKey = PubnubCommon.SecretKey; } else if (!string.IsNullOrEmpty(authKey) && !PubnubCommon.SuppressAuthKey) { config.AuthKey = authKey; } pubnub = createPubNubInstance(config); string expected = "{\"status\": 200, \"payload\": {\"channels\": [\"" + channelName + "\"], \"group\": \"" + channelGroupName + "\"}, \"service\": \"channel-registry\", \"error\": false}"; server.AddRequest(new Request() .WithMethod("GET") .WithPath(string.Format("/v1/channel-registration/sub-key/{0}/channel-group/{1}", PubnubCommon.SubscribeKey, channelGroupName)) .WithParameter("pnsdk", PubnubCommon.EncodedSDK) .WithParameter("requestid", "myRequestId") .WithParameter("timestamp", "1356998400") .WithParameter("uuid", config.Uuid) .WithParameter("signature", "03YaQgvhwhQ9wMg3RLSYolTDzOpuuGoRzE5a7sEMLds=") .WithResponse(expected) .WithStatusCode(System.Net.HttpStatusCode.OK)); channelGroupManualEvent = new ManualResetEvent(false); #if NET40 PNResult <PNChannelGroupsAllChannelsResult> cgAllChannelsResult = Task.Factory.StartNew(async() => await pubnub.ListChannelsForChannelGroup().ChannelGroup(channelGroupName).ExecuteAsync()).Result.Result; #else PNResult <PNChannelGroupsAllChannelsResult> cgAllChannelsResult = await pubnub.ListChannelsForChannelGroup().ChannelGroup(channelGroupName).ExecuteAsync(); #endif Debug.WriteLine("PNStatus={0}", pubnub.JsonPluggableLibrary.SerializeToJsonString(cgAllChannelsResult.Status)); if (cgAllChannelsResult.Result != null) { Debug.WriteLine(pubnub.JsonPluggableLibrary.SerializeToJsonString(cgAllChannelsResult.Result)); if (cgAllChannelsResult.Status.StatusCode == 200 && !cgAllChannelsResult.Status.Error && cgAllChannelsResult.Result.ChannelGroup == channelGroupName && cgAllChannelsResult.Result.Channels.Count > 0) { receivedChannelGroupMessage = true; } } pubnub.Destroy(); pubnub.PubnubUnitTest = null; pubnub = null; Assert.IsTrue(receivedChannelGroupMessage, "WhenChannelGroupIsRequested -> ThenWithAsyncGetChannelListShouldReturnSuccess failed."); }
public static async Task ThenWithAsyncRemoveChannelShouldReturnSuccess() #endif { server.ClearRequests(); currentUnitTestCase = "ThenRemoveChannelShouldReturnSuccess"; string channelName = "hello_my_channel"; receivedChannelGroupMessage = false; PNConfiguration config = new PNConfiguration { PublishKey = PubnubCommon.PublishKey, SubscribeKey = PubnubCommon.SubscribeKey, Uuid = "mytestuuid", }; if (PubnubCommon.PAMServerSideRun) { config.SecretKey = PubnubCommon.SecretKey; } else if (!string.IsNullOrEmpty(authKey) && !PubnubCommon.SuppressAuthKey) { config.AuthKey = authKey; } pubnub = createPubNubInstance(config); string expected = "{\"status\": 200, \"message\": \"OK\", \"service\": \"channel-registry\", \"error\": false}"; server.AddRequest(new Request() .WithMethod("GET") .WithPath(string.Format("/v1/channel-registration/sub-key/{0}/channel-group/{1}", PubnubCommon.SubscribeKey, channelGroupName)) .WithParameter("pnsdk", PubnubCommon.EncodedSDK) .WithParameter("remove", channelName) .WithParameter("requestid", "myRequestId") .WithParameter("timestamp", "1356998400") .WithParameter("uuid", config.Uuid) .WithParameter("signature", "bTwraHYh6dEMi44y-WgHslZdKSltsMySX5cg0uHt9tE=") .WithResponse(expected) .WithStatusCode(System.Net.HttpStatusCode.OK)); channelGroupManualEvent = new ManualResetEvent(false); #if NET40 PNResult <PNChannelGroupsRemoveChannelResult> cgRemoveChannelResult = Task.Factory.StartNew(async() => await pubnub.RemoveChannelsFromChannelGroup().Channels(new[] { channelName }).ChannelGroup(channelGroupName).ExecuteAsync()).Result.Result; #else PNResult <PNChannelGroupsRemoveChannelResult> cgRemoveChannelResult = await pubnub.RemoveChannelsFromChannelGroup().Channels(new[] { channelName }).ChannelGroup(channelGroupName).ExecuteAsync(); #endif Debug.WriteLine("PNStatus={0}", pubnub.JsonPluggableLibrary.SerializeToJsonString(cgRemoveChannelResult.Status)); if (cgRemoveChannelResult.Result != null) { Debug.WriteLine(pubnub.JsonPluggableLibrary.SerializeToJsonString(cgRemoveChannelResult.Result)); if (cgRemoveChannelResult.Status.StatusCode == 200 && cgRemoveChannelResult.Result.Message.ToLower() == "ok" && cgRemoveChannelResult.Result.Service == "channel-registry" && !cgRemoveChannelResult.Status.Error && cgRemoveChannelResult.Result.ChannelGroup == channelGroupName) { receivedChannelGroupMessage = true; } } pubnub.Destroy(); pubnub.PubnubUnitTest = null; pubnub = null; Assert.IsTrue(receivedChannelGroupMessage, "WhenChannelGroupIsRequested -> ThenWithAsyncRemoveChannelShouldReturnSuccess failed."); }