Beispiel #1
0
        private object CallHandleStatusMessageMethod(PubnubApi.PNStatus status)
        {
            var type            = typeof(RealtimeRouter);
            var constructorInfo = type.GetConstructor(
                BindingFlags.Instance | BindingFlags.NonPublic,
                null, new Type[] { }, null);
            var instance = (RealtimeRouter)constructorInfo.Invoke(null);
            var method   = type.GetMethod("HandleStatusMessage", BindingFlags.NonPublic | BindingFlags.Instance);

            var result = method.Invoke(instance, new object[] { status });

            return(result);
        }
Beispiel #2
0
        private void HandleStatusMessageValidOperation(PubnubApi.PNOperationType operationType)
        {
            //Arrange
            var status = new PubnubApi.PNStatus
            {
                Operation = operationType
            };

            //Act
            var result = CallHandleStatusMessageMethod(status);

            //Assert
            Assert.IsNull(result);
        }
Beispiel #3
0
        public void TestHandleStatusMessageGeneralException()
        {
            //Arrange
            var status = new PubnubApi.PNStatus
            {
                Error     = true,
                ErrorData = new PubnubApi.PNErrorData("Test", null)
            };

            //Act
            var result = CallHandleStatusMessageMethod(status);

            //Assert
            Assert.AreEqual(typeof(KinveyException), result.GetType());
            var ke = result as KinveyException;

            Assert.AreEqual(EnumErrorCategory.ERROR_REALTIME, ke.ErrorCategory);
            Assert.AreEqual(EnumErrorCode.ERROR_REALTIME_ERROR, ke.ErrorCode);
        }
Beispiel #4
0
        public void TestHandleStatusMessageNotAuthorizedException()
        {
            //Arrange
            var status = new PubnubApi.PNStatus
            {
                Error      = true,
                StatusCode = 403,
                ErrorData  = new PubnubApi.PNErrorData("Test", null)
            };

            // Act
            var result = CallHandleStatusMessageMethod(status);

            //Assert
            Assert.AreEqual(typeof(KinveyException), result.GetType());
            var ke = result as KinveyException;

            Assert.AreEqual(EnumErrorCategory.ERROR_REALTIME, ke.ErrorCategory);
            Assert.AreEqual(EnumErrorCode.ERROR_REALTIME_CRITICAL_NOT_AUTHORIZED_ON_CHANNEL, ke.ErrorCode);
        }
Beispiel #5
0
        KinveyException HandleStatusMessage(PubnubApi.PNStatus status)
        {
            KinveyException ke = default(KinveyException);

            if (status.Error)
            {
                // Status indicates an error with PubNub
                var errorData = status.ErrorData;
                if (status.StatusCode == 403)
                {
                    ke = new KinveyException(EnumErrorCategory.ERROR_REALTIME,
                                             EnumErrorCode.ERROR_REALTIME_CRITICAL_NOT_AUTHORIZED_ON_CHANNEL,
                                             errorData.Information,
                                             errorData.Throwable);
                }
                else
                {
                    ke = new KinveyException(EnumErrorCategory.ERROR_REALTIME,
                                             EnumErrorCode.ERROR_REALTIME_ERROR,
                                             errorData.Information,
                                             errorData.Throwable);
                }
            }
            else
            {
                // TODO Figure out which status operations need to be logged.
                switch (status.Operation)
                {
                // Publish/Subscribe
                case PubnubApi.PNOperationType.PNPublishOperation:
                    break;

                case PubnubApi.PNOperationType.PNSubscribeOperation:
                    break;

                case PubnubApi.PNOperationType.PNUnsubscribeOperation:
                    break;

                // Channel Group and Channels
                case PubnubApi.PNOperationType.ChannelGroupAllGet:
                    break;

                case PubnubApi.PNOperationType.ChannelGroupAuditAccess:
                    break;

                case PubnubApi.PNOperationType.ChannelGroupGet:
                    break;

                case PubnubApi.PNOperationType.ChannelGroupGrantAccess:
                    break;

                case PubnubApi.PNOperationType.ChannelGroupRevokeAccess:
                    break;

                case PubnubApi.PNOperationType.PNAddChannelsToGroupOperation:
                    break;

                case PubnubApi.PNOperationType.PNChannelGroupsOperation:
                    break;

                case PubnubApi.PNOperationType.PNChannelsForGroupOperation:
                    break;

                case PubnubApi.PNOperationType.PNRemoveChannelsFromGroupOperation:
                    break;

                case PubnubApi.PNOperationType.PNRemoveGroupOperation:
                    break;

                // Access Manager
                case PubnubApi.PNOperationType.PNAccessManagerAudit:
                    break;

                case PubnubApi.PNOperationType.PNAccessManagerGrant:
                    break;

                // Presence
                case PubnubApi.PNOperationType.Presence:
                    break;

                case PubnubApi.PNOperationType.PresenceUnsubscribe:
                    break;

                // Push
                case PubnubApi.PNOperationType.PushGet:
                    break;

                case PubnubApi.PNOperationType.PushRegister:
                    break;

                case PubnubApi.PNOperationType.PushRemove:
                    break;

                case PubnubApi.PNOperationType.PushUnregister:
                    break;

                // Miscellaneous
                case PubnubApi.PNOperationType.Leave:
                    break;

                case PubnubApi.PNOperationType.None:
                    break;

                case PubnubApi.PNOperationType.RevokeAccess:
                    break;

                case PubnubApi.PNOperationType.PNFireOperation:
                    break;

                case PubnubApi.PNOperationType.PNGetStateOperation:
                    break;

                case PubnubApi.PNOperationType.PNHeartbeatOperation:
                    break;

                case PubnubApi.PNOperationType.PNHereNowOperation:
                    break;

                case PubnubApi.PNOperationType.PNHistoryOperation:
                    break;

                case PubnubApi.PNOperationType.PNSetStateOperation:
                    break;

                case PubnubApi.PNOperationType.PNTimeOperation:
                    break;

                case PubnubApi.PNOperationType.PNWhereNowOperation:
                    break;

                default:
                    break;
                }
            }

            return(ke);
        }