Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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");
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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");
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
        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);
        }
Exemplo n.º 18
0
        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);
        }
Exemplo n.º 19
0
        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);
        }
Exemplo n.º 20
0
        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);
        }
Exemplo n.º 21
0
        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);
        }
Exemplo n.º 22
0
        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);
        }
Exemplo n.º 23
0
        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);
        }
Exemplo n.º 24
0
        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);
        }
Exemplo n.º 25
0
        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);
        }
Exemplo n.º 26
0
        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);
        }
Exemplo n.º 28
0
        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.");
        }
Exemplo n.º 29
0
        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.");
        }
Exemplo n.º 30
0
        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.");
        }