protected override void RunWebRequest(QueueManager qm)
        {
            RequestState requestState = new RequestState();

            requestState.OperationType = base.OperationType;

            #if (ENABLE_PUBNUB_LOGGING)
            this.PubNubInstance.PNLog.WriteToLog(string.Format("FetchMessagesRequestBuilder: \nChannel {0} \nStartTime: {1} \nthis.EndTime:{2} \nthis.HistoryCount:{3} \nthis.ReverseHistory:{4}", string.Join(",", this.ChannelsToUse.ToArray()), this.StartTime, this.EndTime, this.HistoryCount, this.ReverseHistory), PNLoggingMethod.LevelInfo);
            #endif

            if (IncludeMessageActionsInHistory || ChannelsToUse.Count > 1)
            {
                this.HistoryCount = 25;
            }

            Uri request = BuildRequests.BuildFetchRequest(
                ChannelsToUse.ToArray(),
                this.StartTime,
                this.EndTime,
                this.HistoryCount,
                this.ReverseHistory,
                this.IncludeTimetokenInHistory,
                this.PubNubInstance,
                this.QueryParams,
                this.IncludeMetaInHistory,
                this.IncludeMessageActionsInHistory,
                this.IncludeMessageTypeInHistory,
                this.IncludeUUIDInHistory
                );

            base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this);
        }
Ejemplo n.º 2
0
        protected override void RunWebRequest(QueueManager qm)
        {
            RequestState requestState = new RequestState();

            requestState.OperationType = OperationType;

            Uri request;

            if (PushType.Equals(PNPushType.APNS2))
            {
                request = BuildRequests.BuildRegisterDevicePushRequest(
                    string.Join(",", ChannelsToUse.ToArray()),
                    PushType,
                    DeviceIDForPush,
                    this.PubNubInstance,
                    this.QueryParams,
                    TopicForPush,
                    EnvironmentForPush
                    );
            }
            else
            {
                request = BuildRequests.BuildRegisterDevicePushRequest(
                    string.Join(",", ChannelsToUse.ToArray()),
                    PushType,
                    DeviceIDForPush,
                    this.PubNubInstance,
                    this.QueryParams
                    );
            }

            base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this);
        }
Ejemplo n.º 3
0
        protected override void RunWebRequest(QueueManager qm)
        {
            RequestState requestState = new RequestState();

            requestState.OperationType = PNOperationType.PNWhereNowOperation;

            string channels = "";

            if ((ChannelsToUse != null) && (ChannelsToUse.Count > 0))
            {
                channels = String.Join(",", ChannelsToUse.ToArray());
            }

            string channelGroups = "";

            if ((ChannelGroupsToUse != null) && (ChannelGroupsToUse.Count > 0))
            {
                channelGroups = String.Join(",", ChannelGroupsToUse.ToArray());
            }

            if (string.IsNullOrEmpty(uuid))
            {
                uuid = this.PubNubInstance.PNConfig.UUID;
            }
            Uri request = BuildRequests.BuildSetStateRequest(
                channels,
                channelGroups,
                Helpers.BuildJsonUserState(ChannelEntities),
                uuid,
                this.PubNubInstance,
                this.QueryParams
                );

            base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this);
        }
Ejemplo n.º 4
0
        protected override void RunWebRequest(QueueManager qm)
        {
            RequestState requestState = new RequestState();

            requestState.OperationType = OperationType;

            string channels = "";

            if ((ChannelsToUse != null) && (ChannelsToUse.Count > 0))
            {
                channels = String.Join(",", ChannelsToUse.ToArray());
            }

            string channelGroups = "";

            if ((ChannelGroupsToUse != null) && (ChannelGroupsToUse.Count > 0))
            {
                channelGroups = String.Join(",", ChannelGroupsToUse.ToArray());
            }
            Uri request = BuildRequests.BuildHereNowRequest(
                channels,
                channelGroups,
                IncludeUUIDsInHereNow,
                IncludeStateInHereNow,
                this.PubNubInstance,
                this.QueryParams
                );

            base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this);
        }
Ejemplo n.º 5
0
        public void Async(Action <PNPresenceHeartbeatResult, PNStatus> callback)
        {
            this.Callback = callback;
            RequestState requestState = new RequestState();

            requestState.OperationType = OperationType;
            List <ChannelEntity> channelEntities = new List <ChannelEntity>();

            string channels = "";

            if ((ChannelsToUse != null) && (ChannelsToUse.Count > 0))
            {
                ChannelsToUse.RemoveAll(t => t.Contains(Utility.PresenceChannelSuffix));
                string[] chArr = ChannelsToUse.Where(x => !string.IsNullOrEmpty(x)).Distinct().ToArray();
                channels = String.Join(",", chArr);
                channelEntities.AddRange(Helpers.CreateChannelEntity(chArr, false, false, null, PubNubInstance.PNLog));
            }

            string channelGroups = "";

            if ((ChannelGroupsToUse != null) && (ChannelGroupsToUse.Count > 0))
            {
                ChannelGroupsToUse.RemoveAll(t => t.Contains(Utility.PresenceChannelSuffix));
                string[] cgArr = ChannelGroupsToUse.Where(x => !string.IsNullOrEmpty(x)).Distinct().ToArray();
                channelGroups = String.Join(",", cgArr);
                channelEntities.AddRange(Helpers.CreateChannelEntity(cgArr, false, true, null, PubNubInstance.PNLog));
            }

            if (connected)
            {
                PubNubInstance.SubWorker.PHBWorker.RunIndependentOfSubscribe = true;
                PubNubInstance.SubWorker.PHBWorker.ChannelGroups             = channelGroups;
                PubNubInstance.SubWorker.PHBWorker.Channels = channels;
                if (UserState != null)
                {
                    PubNubInstance.SubWorker.PHBWorker.State = Helpers.BuildJsonUserState(channelEntities);
                }
                else
                {
                    PubNubInstance.SubWorker.PHBWorker.State = "";
                }
                PubNubInstance.SubWorker.PHBWorker.StopPresenceHeartbeat();
                PubNubInstance.SubWorker.PHBWorker.RunPresenceHeartbeat(false, PubNubInstance.PNConfig.PresenceInterval);
            }
            else
            {
                PubNubInstance.SubWorker.PHBWorker.RunIndependentOfSubscribe = false;
                PubNubInstance.SubWorker.PHBWorker.ChannelGroups             = channelGroups;
                PubNubInstance.SubWorker.PHBWorker.Channels = channels;
                PubNubInstance.SubWorker.PHBWorker.StopPresenceHeartbeat();
                PubNubInstance.SubWorker.PHBWorker.RunPresenceHeartbeat(false, PubNubInstance.PNConfig.PresenceInterval);
            }
        }
Ejemplo n.º 6
0
        protected override void RunWebRequest(QueueManager qm)
        {
            RequestState requestState = new RequestState();

            requestState.OperationType = OperationType;

            Uri request = BuildRequests.BuildRemoveChannelPushRequest(
                string.Join(",", ChannelsToUse.ToArray()),
                PushType,
                DeviceIDForPush,
                this.PubNubInstance
                );

            base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this);
        }
Ejemplo n.º 7
0
        protected override void RunWebRequest(QueueManager qm)
        {
            RequestState requestState = new RequestState();

            requestState.OperationType = base.OperationType;

            Uri request = BuildRequests.BuildRemoveChannelsFromChannelGroupRequest(
                ChannelsToUse.ToArray(),
                "",
                ChannelGroupToDelete,
                this.PubNubInstance
                );

            base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this);
        }
Ejemplo n.º 8
0
        protected override void RunWebRequest(QueueManager qm)
        {
            RequestState requestState = new RequestState();

            requestState.OperationType = base.OperationType;

            Uri request = BuildRequests.BuildAddChannelsToChannelGroupRequest(
                ChannelsToUse.ToArray(),
                "",
                ChannelGroupToAdd,
                this.PubNubInstance
                );

            #if (ENABLE_PUBNUB_LOGGING)
            this.PubNubInstance.PNLog.WriteToLog(string.Format("RunPNChannelGroupsAddChannel {0}", request.OriginalString), PNLoggingMethod.LevelInfo);
            #endif
            base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this);
        }
Ejemplo n.º 9
0
        protected override void RunWebRequest(QueueManager qm)
        {
            RequestState requestState = new RequestState();

            requestState.OperationType = base.OperationType;

            string TimetokenToUseString         = "";
            string ChannelsTimetokenToUseString = "";

            if ((ChannelTimetokensToUse != null) && (ChannelTimetokensToUse.Count == 1))
            {
                TimetokenToUseString         = ChannelTimetokensToUse[0].ToString();
                ChannelsTimetokenToUseString = "";
            }
            else if (ChannelTimetokensToUse != null)
            {
                TimetokenToUseString         = "";
                ChannelsTimetokenToUseString = String.Join(",", ChannelTimetokensToUse.Select(p => p.ToString()).ToArray());
            }
            else
            {
                // TODO: Remove in next major version bump
                TimetokenToUseString         = TimetokenToUse;
                ChannelsTimetokenToUseString = "";
            }

            #if (ENABLE_PUBNUB_LOGGING)
            this.PubNubInstance.PNLog.WriteToLog(string.Format("MessageCountsRequestBuilder: \nChannel {0} \nChannelTimetokens: {1} \nTimetokenToUse:{2}", string.Join(",", this.ChannelsToUse.ToArray()), ChannelsTimetokenToUseString, ChannelsTimetokenToUseString), PNLoggingMethod.LevelInfo);
            #endif

            Uri request = BuildRequests.BuildMessageCountsRequest(
                ChannelsToUse.ToArray(),
                ChannelsTimetokenToUseString,
                TimetokenToUseString,
                this.PubNubInstance,
                this.QueryParams
                );
            base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this);
        }
Ejemplo n.º 10
0
        protected override void RunWebRequest(QueueManager qm)
        {
            RequestState requestState = new RequestState();

            requestState.OperationType = OperationType;

            string channels = "";

            if (ChannelsToUse != null)
            {
                channels = string.Join(",", ChannelsToUse.ToArray());
            }
            string channelGroups = "";

            if (ChannelGroupsToUse != null)
            {
                channelGroups = string.Join(",", ChannelGroupsToUse.ToArray());
            }

            if (string.IsNullOrEmpty(channels) && (string.IsNullOrEmpty(channelGroups)))
            {
                #if (ENABLE_PUBNUB_LOGGING)
                this.PubNubInstance.PNLog.WriteToLog(string.Format("Both ChannelGroupsToLeave and ChannelsToLeave are empty, running unsubscribe all"), PNLoggingMethod.LevelInfo);
                #endif

                channelGroups      = Helpers.GetNamesFromChannelEntities(this.PubNubInstance.SubscriptionInstance.AllChannelGroups, true);
                channels           = Helpers.GetNamesFromChannelEntities(this.PubNubInstance.SubscriptionInstance.AllChannels, false);
                ChannelsToUse      = Helpers.CreateListOfStringFromListOfChannelEntity(this.PubNubInstance.SubscriptionInstance.AllChannels);
                ChannelGroupsToUse = Helpers.CreateListOfStringFromListOfChannelEntity(this.PubNubInstance.SubscriptionInstance.AllChannelGroups);
            }

            List <ChannelEntity> subscribedChannels = this.PubNubInstance.SubscriptionInstance.AllSubscribedChannelsAndChannelGroups;

            List <ChannelEntity> newChannelEntities;
            this.PubNubInstance.SubscriptionInstance.TryRemoveDuplicatesCheckAlreadySubscribedAndGetChannels(
                OperationType,
                ChannelsToUse,
                ChannelGroupsToUse,
                true,
                out
                newChannelEntities
                );

            //Retrieve the current channels already subscribed previously and terminate them
            this.PubNubInstance.SubWorker.AbortPreviousRequest(subscribedChannels);

            if (!this.PubNubInstance.PNConfig.SuppressLeaveEvents)
            {
                Uri request = BuildRequests.BuildLeaveRequest(
                    channels,
                    channelGroups,
                    this.PubNubInstance
                    );
                base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this);
            }

            RemoveUnsubscribedChannelsAndDeleteUserState(newChannelEntities);


            //Get all the channels
            this.PubNubInstance.SubWorker.ContinueToSubscribeRestOfChannels();
        }
Ejemplo n.º 11
0
        public void Async(Action <PNMessageCountsResult, PNStatus> callback)
        {
            this.Callback = callback;
            if ((this.ChannelsToUse == null) || ((this.ChannelsToUse != null) && (this.ChannelsToUse.Count <= 0)))
            {
                PNStatus pnStatus = base.CreateErrorResponseFromMessage("Channel is null or empty", null, PNStatusCategory.PNBadRequestCategory);
                Callback(null, pnStatus);

                return;
            }

            if (((this.ChannelTimetokensToUse == null) || ((this.ChannelTimetokensToUse != null) && (this.ChannelTimetokensToUse.Count <= 0))) && (string.IsNullOrEmpty(TimetokenToUse)))
            {
                PNStatus pnStatus = base.CreateErrorResponseFromMessage("Channel Timetoken is null or empty", null, PNStatusCategory.PNBadRequestCategory);
                Callback(null, pnStatus);

                return;
            }

            if ((ChannelTimetokensToUse.Count > 1) && (ChannelTimetokensToUse.Count() != ChannelsToUse.Count()))
            {
                PNStatus pnStatus = base.CreateErrorResponseFromMessage("Length of Channels Timetoken and Channels do not match", null, PNStatusCategory.PNBadRequestCategory);
                Callback(null, pnStatus);

                return;
            }

            base.Async(this);
        }