public void ThenWithProxyItShouldReturnTimeStamp()
        {
            bool proxyConfigured = false;

            PubnubProxy proxy = new PubnubProxy();
            proxy.ProxyServer = "test.pandu.com";
            proxy.ProxyPort = 808;
            proxy.ProxyUserName = "******";
            proxy.ProxyPassword = "******";

            pubnub = new Pubnub(PubnubCommon.PublishKey, PubnubCommon.SubscribeKey, "", "", false);

            PubnubUnitTest unitTest = new PubnubUnitTest();
            unitTest.TestClassName = "WhenGetRequestServerTime";
            unitTest.TestCaseName = "ThenWithProxyItShouldReturnTimeStamp";
            pubnub.PubnubUnitTest = unitTest;
            
            if (proxyConfigured)
            {
                pubnub.Proxy = proxy;
                pubnub.Time<string>(ReturnProxyPresenceTimeStampCallback, DummyErrorCallback);
                mreProxy.WaitOne(310 * 1000, true);
                pubnub.EndPendingRequests(); 
                pubnub.PubnubUnitTest = null;
                pubnub = null;
                Assert.True(timeReceivedWhenProxy, "time() Failed");
            }
            else
            {
                Assert.That(!proxyConfigured);
            }

        }
Esempio n. 2
0
        public void ThenWithProxyItShouldReturnTimeStamp()
        {
            bool proxyConfigured = false;

            PubnubProxy proxy = new PubnubProxy();

            proxy.ProxyServer   = "test.pandu.com";
            proxy.ProxyPort     = 808;
            proxy.ProxyUserName = "******";
            proxy.ProxyPassword = "******";

            pubnub = new Pubnub(PubnubCommon.PublishKey, PubnubCommon.SubscribeKey, "", "", false);

            PubnubUnitTest unitTest = new PubnubUnitTest();

            unitTest.TestClassName = "WhenGetRequestServerTime";
            unitTest.TestCaseName  = "ThenWithProxyItShouldReturnTimeStamp";
            pubnub.PubnubUnitTest  = unitTest;

            if (proxyConfigured)
            {
                pubnub.Proxy = proxy;
                pubnub.Time <string>(ReturnProxyPresenceTimeStampCallback, DummyErrorCallback);
                mreProxy.WaitOne(310 * 1000);
                pubnub.EndPendingRequests();
                pubnub.PubnubUnitTest = null;
                pubnub = null;
                Assert.IsTrue(timeReceivedWhenProxy, "time() Failed");
            }
            else
            {
                Assert.Ignore("Proxy setup not configured. After setup Set proxyConfigured to true");
            }
        }
        public void ThenWithProxyItShouldReturnTimeStamp()
        {
            bool proxyConfigured = false;

            PubnubProxy proxy = new PubnubProxy();
            proxy.ProxyServer = "test.pandu.com";
            proxy.ProxyPort = 808;
            proxy.ProxyUserName = "******";
            proxy.ProxyPassword = "******";

            Pubnub pubnub = new Pubnub("demo", "demo", "", "", false);

            PubnubUnitTest unitTest = new PubnubUnitTest();
            unitTest.TestClassName = "WhenGetRequestServerTime";
            unitTest.TestCaseName = "ThenWithProxyItShouldReturnTimeStamp";
            pubnub.PubnubUnitTest = unitTest;

            if (proxyConfigured)
            {
                pubnub.Proxy = proxy;
                pubnub.Time<string>(ReturnProxyPresenceTimeStampCallback, DummyErrorCallback);
                mreProxy.WaitOne(310 * 1000);
                pubnub.PubnubUnitTest = null;
                pubnub = null;
                Assert.IsTrue(timeReceivedWhenProxy, "time() Failed");
            }
            else
            {
                Assert.Ignore("Proxy setup not configured. After setup Set proxyConfigured to true");
            }
        }
Esempio n. 4
0
        bool ValidateAndInitPubnub(string channelName, string cipher, bool ssl,
                                   string customUuid, bool proxyEnabled, string proxyPort,
                                   string proxyUser, string proxyServer, string proxyPass
                                   )
        {
            bool errorFree = true;

            if (String.IsNullOrWhiteSpace(channelName))
            {
                errorFree = false;
                new UIAlertView("Error!", "Please enter a channel name", null, "OK").Show();
            }

            if (errorFree)
            {
                pubnub = new Pubnub("demo-36", "demo-36", "demo-36", cipher, ssl);
                if (!String.IsNullOrWhiteSpace(customUuid.Trim()))
                {
                    pubnub.SessionUUID = customUuid.Trim();
                }
            }

            if ((errorFree) && (proxyEnabled))
            {
                int port;
                if (Int32.TryParse(proxyPort, out port) && ((port >= 1) && (port <= 65535)))
                {
                    proxy               = new PubnubProxy();
                    proxy.ProxyServer   = proxyServer;
                    proxy.ProxyPort     = port;
                    proxy.ProxyUserName = proxyUser;
                    proxy.ProxyPassword = proxyPass;

                    try
                    {
                        pubnub.Proxy = proxy;
                    }
                    catch (MissingFieldException mse)
                    {
                        errorFree    = false;
                        proxyEnabled = false;
                        Console.WriteLine(mse.Message);
                        new UIAlertView("Error!", "Proxy settings invalid, please re-enter the details.", null, "OK").Show();
                    }
                }
                else
                {
                    errorFree = false;
                    new UIAlertView("Error!", "Proxy port must be a valid integer between 1 to 65535", null, "OK").Show();
                }
            }
            return(errorFree);
        }
Esempio n. 5
0
        void EnableProxy(object sender, EventArgs e)
        {
            int port;

            bool errorFree = true;

            if (!tgProxy.Checked)
            {
                proxyEnabled = false;
                tvProxy.Text = SetProxyText(false);
                dialog.Dismiss();
            }
            else
            {
                if (string.IsNullOrWhiteSpace(proxyServer.Text))
                {
                    errorFree = false;
                    ShowAlert("Please enter proxy server.");
                }

                if ((errorFree) && (string.IsNullOrWhiteSpace(proxyUsername.Text)))
                {
                    errorFree = false;
                    ShowAlert("Please enter proxy username.");
                }

                if ((errorFree) && (string.IsNullOrWhiteSpace(proxyPassword.Text)))
                {
                    errorFree = false;
                    ShowAlert("Please enter proxy password.");
                }

                if (errorFree)
                {
                    if (Int32.TryParse(proxyPort.Text, out port) && ((port >= 1) && (port <= 65535)))
                    {
                        proxy               = new PubnubProxy();
                        proxy.ProxyServer   = proxyServer.Text;
                        proxy.ProxyPort     = port;
                        proxy.ProxyUserName = proxyUsername.Text;
                        proxy.ProxyPassword = proxyPassword.Text;
                        proxyEnabled        = true;
                        tvProxy.Text        = SetProxyText(true);
                        dialog.Dismiss();
                    }
                    else
                    {
                        ShowAlert("Proxy port must be a valid integer between 1 to 65535");
                    }
                }
            }
        }
Esempio n. 6
0
        public void ThenWithProxyItShouldReturnTimeStamp()
        {
            PubnubProxy proxy = new PubnubProxy();
            proxy.ProxyServer = "test.pandu.com";
            proxy.ProxyPort = 808;
            proxy.ProxyUserName = "******";
            proxy.ProxyPassword = "******";

            Pubnub pubnub = new Pubnub("demo", "demo", "", "", false);
            pubnub.Proxy = proxy;

            PubnubUnitTest unitTest = new PubnubUnitTest();
            unitTest.TestClassName = "WhenGetRequestServerTime";
            unitTest.TestCaseName = "ThenWithProxyItShouldReturnTimeStamp";

            pubnub.PubnubUnitTest = unitTest;

            pubnub.Time<string>(ReturnProxyPresenceTimeStampCallback);
            mreProxy.WaitOne(310 * 1000);
            Assert.IsTrue(timeReceivedWhenProxy, "time() Failed");
        }
Esempio n. 7
0
 void ProxyCheckedChanged(object sender, CompoundButton.CheckedChangeEventArgs e)
 {
     if (e.IsChecked)
     {
         proxyUsername.Enabled = true;
         proxyPassword.Enabled = true;
         proxyServer.Enabled   = true;
         proxyPort.Enabled     = true;
     }
     else
     {
         proxyUsername.Enabled = false;
         proxyUsername.Text    = "";
         proxyPassword.Enabled = false;
         proxyPassword.Text    = "";
         proxyServer.Enabled   = false;
         proxyServer.Text      = "";
         proxyPort.Enabled     = false;
         proxyPort.Text        = "";
         proxy = null;
     }
 }
        public void ThenWithProxyItShouldReturnTimeStamp()
        {
            PubnubProxy proxy = new PubnubProxy();

            proxy.ProxyServer   = "test.pandu.com";
            proxy.ProxyPort     = 808;
            proxy.ProxyUserName = "******";
            proxy.ProxyPassword = "******";

            Pubnub pubnub = new Pubnub("demo", "demo", "", "", false);

            pubnub.Proxy = proxy;

            PubnubUnitTest unitTest = new PubnubUnitTest();

            unitTest.TestClassName = "WhenGetRequestServerTime";
            unitTest.TestCaseName  = "ThenWithProxyItShouldReturnTimeStamp";

            pubnub.PubnubUnitTest = unitTest;

            pubnub.Time <string>(ReturnProxyPresenceTimeStampCallback);
            mreProxy.WaitOne(310 * 1000);
            UUnitAssert.True(timeReceivedWhenProxy, "time() Failed");
        }
Esempio n. 9
0
        static public void Main()
        {
            AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;

            PubnubProxy proxy = null;
            
            Console.WriteLine("HINT: TO TEST RE-CONNECT AND CATCH-UP,");
            Console.WriteLine("      DISCONNECT YOUR MACHINE FROM NETWORK/INTERNET AND ");
            Console.WriteLine("      RE-CONNECT YOUR MACHINE AFTER SOMETIME.");
            Console.WriteLine();
            Console.WriteLine("      IF NO NETWORK BEFORE MAX RE-TRY CONNECT,");
            Console.WriteLine("      NETWORK ERROR MESSAGE WILL BE SENT");
            Console.WriteLine();

            Console.WriteLine("Enter Pubnub Origin. Default Origin = pubsub.pubnub.com"); //TODO
            Console.WriteLine("If you want to accept default value, press ENTER.");
            string origin = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (origin.Trim() == "")
            {
                origin = "pubsub.pubnub.com";
                Console.WriteLine("Default Origin selected");
            }
            else
            {
                Console.WriteLine("Pubnub Origin Provided");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Enable SSL? ENTER Y for Yes, else N");
            string enableSSL = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (enableSSL.Trim().ToLower() == "y")
            {
                Console.WriteLine("SSL Enabled");
            }
            else
            {
                Console.WriteLine("SSL NOT Enabled");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER cipher key for encryption feature.");
            Console.WriteLine("If you don't want to avail at this time, press ENTER.");
            string cipherKey = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (cipherKey.Trim().Length > 0)
            {
                Console.WriteLine("Cipher key provided.");
            }
            else
            {
                Console.WriteLine("No Cipher key provided");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER subscribe key.");
            Console.WriteLine("If you want to accept default demo subscribe key, press ENTER.");
            string subscribeKey = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (subscribeKey.Trim().Length > 0)
            {
                Console.WriteLine("Subscribe key provided.");
            }
            else
            {
                Console.WriteLine("Default demo subscribe key provided");
                subscribeKey = "demo";
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER publish key.");
            Console.WriteLine("If you want to accept default demo publish key, press ENTER.");
            string publishKey = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (publishKey.Trim().Length > 0)
            {
                Console.WriteLine("Publish key provided.");
            }
            else
            {
                Console.WriteLine("Default demo publish key provided");
                publishKey = "demo";
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER secret key.");
            Console.WriteLine("If you don't want to avail at this time, press ENTER.");
            string secretKey = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (secretKey.Trim().Length > 0)
            {
                Console.WriteLine("Secret key provided.");
            }
            else
            {
                Console.WriteLine("Default demo Secret key provided");
                secretKey = "demo";
            }
            Console.ResetColor();
            Console.WriteLine();

            pubnub = new Pubnub(publishKey, subscribeKey, secretKey, cipherKey,
                (enableSSL.Trim().ToLower() == "y") ? true : false);

            pubnub.Origin = origin;

            Console.WriteLine("Use Custom Session UUID? ENTER Y for Yes, else N");
            string enableCustomUUID = Console.ReadLine();
            if (enableCustomUUID.Trim().ToLower() == "y")
            {
                Console.WriteLine("ENTER Session UUID.");
                string sessionUUID = Console.ReadLine();
                pubnub.SessionUUID = sessionUUID;
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("Accepted Custom Session UUID.");
                Console.ResetColor();
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("Default Session UUID opted.");
                Console.ResetColor();
            }
            Console.WriteLine();

            Console.WriteLine("By default Resume On Reconnect is enabled. Do you want to disable it? ENTER Y for Yes, else N");
            string disableResumeOnReconnect = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (disableResumeOnReconnect.Trim().ToLower() == "y")
            {
                Console.WriteLine("Resume On Reconnect Disabled");
                pubnub.EnableResumeOnReconnect = false;
            }
            else
            {
                Console.WriteLine("Resume On Reconnect Enabled by default");
                pubnub.EnableResumeOnReconnect = true;
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Subscribe Timeout = 310 seconds (default). Enter the value to change, else press ENTER");
            string subscribeTimeoutEntry = Console.ReadLine();
            int subscribeTimeout;
            Int32.TryParse(subscribeTimeoutEntry, out subscribeTimeout);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (subscribeTimeout > 0)
            {
                Console.WriteLine("Subscribe Timeout = {0}",subscribeTimeout);
                pubnub.SubscribeTimeout = subscribeTimeout;
            }
            else
            {
                Console.WriteLine("Subscribe Timeout = {0} (default)", pubnub.SubscribeTimeout);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Non Subscribe Timeout = 15 seconds (default). Enter the value to change, else press ENTER");
            string nonSubscribeTimeoutEntry = Console.ReadLine();
            int nonSubscribeTimeout;
            Int32.TryParse(nonSubscribeTimeoutEntry, out nonSubscribeTimeout);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (nonSubscribeTimeout > 0)
            {
                Console.WriteLine("Non Subscribe Timeout = {0}", nonSubscribeTimeout);
                pubnub.NonSubscribeTimeout = nonSubscribeTimeout;
            }
            else
            {
                Console.WriteLine("Non Subscribe Timeout = {0} (default)", pubnub.NonSubscribeTimeout);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Network Check MAX retries = 50 (default). Enter the value to change, else press ENTER");
            string networkCheckMaxRetriesEntry = Console.ReadLine();
            int networkCheckMaxRetries;
            Int32.TryParse(networkCheckMaxRetriesEntry, out networkCheckMaxRetries);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (networkCheckMaxRetries > 0)
            {
                Console.WriteLine("Network Check MAX retries = {0}", networkCheckMaxRetries);
                pubnub.NetworkCheckMaxRetries = networkCheckMaxRetries;
            }
            else
            {
                Console.WriteLine("Network Check MAX retries = {0} (default)", pubnub.NetworkCheckMaxRetries);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Network Check Retry Interval = 10 seconds (default). Enter the value to change, else press ENTER");
            string networkCheckRetryIntervalEntry = Console.ReadLine();
            int networkCheckRetryInterval;
            Int32.TryParse(networkCheckRetryIntervalEntry, out networkCheckRetryInterval);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (networkCheckRetryInterval > 0)
            {
                Console.WriteLine("Network Check Retry Interval = {0} seconds", networkCheckRetryInterval);
                pubnub.NetworkCheckRetryInterval = networkCheckRetryInterval;
            }
            else
            {
                Console.WriteLine("Network Check Retry Interval = {0} seconds (default)", pubnub.NetworkCheckRetryInterval);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Local Client Heartbeat Interval = 15 seconds (default). Enter the value to change, else press ENTER");
            string heartbeatIntervalEntry = Console.ReadLine();
            int localClientHeartbeatInterval;
            Int32.TryParse(heartbeatIntervalEntry, out localClientHeartbeatInterval);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (localClientHeartbeatInterval > 0)
            {
                Console.WriteLine("Heartbeat Interval = {0} seconds", localClientHeartbeatInterval);
                pubnub.LocalClientHeartbeatInterval = localClientHeartbeatInterval;
            }
            else
            {
                Console.WriteLine("Heartbeat Interval = {0} seconds (default)", pubnub.LocalClientHeartbeatInterval);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("HTTP Proxy Server with NTLM authentication(IP + username/pwd) exists? ENTER Y for Yes, else N");
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("NOTE: Pubnub example is being tested with CCProxy 7.3 Demo version");
            Console.ResetColor();
            string enableProxy = Console.ReadLine();
            if (enableProxy.Trim().ToLower() == "y")
            {
                bool proxyAccepted = false;
                while (!proxyAccepted)
                {
                    Console.WriteLine("ENTER proxy server name or IP.");
                    string proxyServer = Console.ReadLine();
                    Console.WriteLine("ENTER port number of proxy server.");
                    string proxyPort = Console.ReadLine();
                    int port;
                    Int32.TryParse(proxyPort, out port);
                    Console.WriteLine("ENTER user name for proxy server authentication.");
                    string proxyUsername = Console.ReadLine();
                    Console.WriteLine("ENTER password for proxy server authentication.");
                    string proxyPassword = Console.ReadLine();
                    
                    proxy = new PubnubProxy();
                    proxy.ProxyServer = proxyServer;
                    proxy.ProxyPort = port;
                    proxy.ProxyUserName = proxyUsername;
                    proxy.ProxyPassword = proxyPassword;
                    Console.ForegroundColor = ConsoleColor.Blue;
                    try
                    {
                        pubnub.Proxy = proxy;
                        proxyAccepted = true;
                        Console.WriteLine("Proxy details accepted");
                        Console.ResetColor();
                    }
                    catch (MissingFieldException mse)
                    {
                        Console.WriteLine(mse.Message);
                        Console.WriteLine("Please RE-ENTER Proxy Server details.");
                    }
                    Console.ResetColor();
                }
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("No Proxy");
                Console.ResetColor();
            }
            Console.WriteLine();

            Console.WriteLine("Enter Auth Key. If you don't want to use Auth Key, Press ENTER Key");
            authKey = Console.ReadLine();
            pubnub.AuthenticationKey = authKey;

            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine(string.Format("Auth Key = {0}", authKey));
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Display ErrorCallback messages? Enter Y for Yes, Else N for No.");
            Console.WriteLine("Default = N  ");
            string displayErrMessage = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (displayErrMessage.Trim().ToLower() == "y" )
            {
                showErrorMessageSegments = true;
                Console.WriteLine("ErrorCallback messages will  be displayed");
            }
            else
            {
                showErrorMessageSegments = false;
                Console.WriteLine("ErrorCallback messages will NOT be displayed.");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Display Debug Info in ErrorCallback messages? Enter Y for Yes, Else N for No.");
            Console.WriteLine("Default = Y  ");
            string debugMessage = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (debugMessage.Trim().ToLower() == "n")
            {
                showDebugMessages = false;
                Console.WriteLine("ErrorCallback messages will NOT  be displayed");
            }
            else
            {
                showDebugMessages = true;
                Console.WriteLine("Debug messages will be displayed.");
            }
            Console.ResetColor();
            Console.WriteLine();


            bool exitFlag = false;
            string channel="";
            string channelGroup = "";
            int currentUserChoice = 0;
            string userinput = "";
            Console.WriteLine("");
            while (!exitFlag)
            {
                if (currentUserChoice < 1 || (currentUserChoice > 40 && currentUserChoice != 99))
                {
                    Console.WriteLine("ENTER 1 FOR Subscribe channel/channelgroup");
                    Console.WriteLine("ENTER 2 FOR Publish");
                    Console.WriteLine("ENTER 3 FOR Presence channel/channelgroup");
                    Console.WriteLine("ENTER 4 FOR Detailed History");
                    Console.WriteLine("ENTER 5 FOR Here_Now");
                    Console.WriteLine("ENTER 6 FOR Unsubscribe");
                    Console.WriteLine("ENTER 7 FOR Presence-Unsubscribe");
                    Console.WriteLine("ENTER 8 FOR Time");
                    Console.WriteLine("ENTER 9 FOR Disconnect/Reconnect existing Subscriber(s) (when internet is available)");
                    Console.WriteLine("ENTER 10 TO Disable Network Connection (no internet)");
                    Console.WriteLine("ENTER 11 TO Enable Network Connection (yes internet)");
                    Console.WriteLine("ENTER 12 FOR Grant Access to channel/ChannelGroup");
                    Console.WriteLine("ENTER 13 FOR Audit Access to channel/ChannelGroup");
                    Console.WriteLine("ENTER 14 FOR Revoke Access to channel/ChannelGroup");
                    Console.WriteLine("ENTER 15 FOR Grant Access to Presence Channel/ChannelGroup");
                    Console.WriteLine("ENTER 16 FOR Audit Access to Presence Channel/ChannelGroup");
                    Console.WriteLine("ENTER 17 FOR Revoke Access to Presence Channel/ChannelGroup");
                    Console.WriteLine("ENTER 18 FOR Change/Update Auth Key (Current value = {0})", pubnub.AuthenticationKey);
                    Console.WriteLine("ENTER 19 TO Simulate Machine Sleep Mode");
                    Console.WriteLine("ENTER 20 TO Simulate Machine Awake Mode");
                    Console.WriteLine("ENTER 21 TO Set Presence Heartbeat (Current value = {0} sec)", pubnub.PresenceHeartbeat);
                    Console.WriteLine("ENTER 22 TO Set Presence Heartbeat Interval (Current value = {0} sec)", pubnub.PresenceHeartbeatInterval);
                    Console.WriteLine("Enter 23 TO Set User State by Add/Modify Key-Pair");
                    Console.WriteLine("Enter 24 TO Set User State by Deleting existing Key-Pair");
                    Console.WriteLine("Enter 25 TO Set User State with direct json string");
                    Console.WriteLine("Enter 26 TO Get User State");
                    Console.WriteLine("Enter 27 FOR WhereNow");
                    Console.WriteLine("Enter 28 FOR GlobalHere_Now");
                    Console.WriteLine("Enter 29 TO change UUID. (Current value = {0})", pubnub.SessionUUID);
                    Console.WriteLine("Enter 38 FOR Channel Group - Add channel(s)");
                    Console.WriteLine("Enter 39 FOR Channel Group - Remove channel/group/namespace");
                    Console.WriteLine("Enter 40 FOR Channel Group - Get channel(s)/namespace(s)");
                    Console.WriteLine("ENTER 99 FOR EXIT OR QUIT");

                    userinput = Console.ReadLine();
                }
                switch (userinput)
                {
                    case "99":
                        exitFlag = true;
                        pubnub.EndPendingRequests();
                        break;
                    case "1":
                        Console.WriteLine("Enter CHANNEL name for subscribe. Use comma to enter multiple channels.");
                        Console.WriteLine("NOTE: If you want to consider only Channel Group(s), just hit ENTER");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Enter CHANNEL GROUP name for subscribe. Use comma to enter multiple channel groups.");
                        Console.WriteLine("To denote a namespaced CHANNEL GROUP, use the colon (:) character with the format namespace:channelgroup.");
                        Console.WriteLine("NOTE: If you want to consider only Channel(s), assuming you already entered , just hit ENTER");
                        channelGroup = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel Group= {0}", channelGroup));
                        Console.ResetColor();
                        Console.WriteLine();

                        if (channel.Length <= 0 && channelGroup.Length <= 0)
                        {
                            Console.WriteLine("To run subscribe(), atleast provide either channel name or channel group name or both");
                        }
                        else
                        {
                            Console.WriteLine("Running subscribe()");
                            pubnub.Subscribe<string>(channel, channelGroup, DisplaySubscribeReturnMessage, DisplaySubscribeConnectStatusMessage, DisplayErrorMessage);
                        }
                        break;
                    case "2":
                        Console.WriteLine("Enter CHANNEL name for publish.");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();

                        if (channel == "")
                        {
                            Console.WriteLine("Invalid CHANNEL name");
                            break;
                        }
                        Console.WriteLine("Store In History? Enter Y for Yes or N for No. To accept default(Y), just press ENTER");
                        string storeInHistory = Console.ReadLine();
                        bool store = true;
                        if (storeInHistory.ToLower() == "n")
                        {
                            store = false;
                        }

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Store In History = {0}", storeInHistory));
                        Console.ResetColor();




                        Console.WriteLine("Direct JSON String? Enter Y for Yes or N for No. To accept default(N), just press ENTER");
                        string directJson = Console.ReadLine();
                        bool jsonPublish = false;
                        if (directJson.ToLower() == "y")
                        {
                            jsonPublish = true;
                            pubnub.EnableJsonEncodingForPublish = false;
                        }
                        else
                        {
                            pubnub.EnableJsonEncodingForPublish = true;
                        }

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Direct JSON String = {0}", jsonPublish));
                        Console.ResetColor();



                        /* TO TEST SMALL TEXT PUBLISH ONLY */
                        Console.WriteLine("Enter the message for publish and press ENTER key to submit");
                        //string publishMsg = Console.ReadLine();

                        /* UNCOMMENT THE FOLLOWING CODE BLOCK TO TEST LARGE TEXT PUBLISH ONLY */
                        #region Code To Test Large Text Publish
                        ConsoleKeyInfo enteredKey;
                        StringBuilder publishBuilder = new StringBuilder();
                        do
                        {
                            enteredKey = Console.ReadKey(); //This logic is being used to capture > 2K input in console window
                            if (enteredKey.Key != ConsoleKey.Enter)
                            {
                                publishBuilder.Append(enteredKey.KeyChar);
                            }
                        } while (enteredKey.Key != ConsoleKey.Enter);
                        string publishMsg = publishBuilder.ToString();
                        #endregion
                        
                        Console.WriteLine("Running publish()");

                        double doubleData;
                        int intData;
                        if (int.TryParse(publishMsg, out intData)) //capture numeric data
                        {
                            pubnub.Publish<string>(channel, intData, store, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else if (double.TryParse(publishMsg, out doubleData)) //capture numeric data
                        {
                            pubnub.Publish<string>(channel, doubleData, store, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else
                        {
                            //check whether any numeric is sent in double quotes
                            if (publishMsg.IndexOf("\"") == 0 && publishMsg.LastIndexOf("\"") == publishMsg.Length - 1)
                            {
                                string strMsg = publishMsg.Substring(1, publishMsg.Length - 2);
                                if (int.TryParse(strMsg, out intData))
                                {
                                    pubnub.Publish<string>(channel, strMsg, store, DisplayReturnMessage, DisplayErrorMessage);
                                }
                                else if (double.TryParse(strMsg, out doubleData))
                                {
                                    pubnub.Publish<string>(channel, strMsg, store, DisplayReturnMessage, DisplayErrorMessage);
                                }
                                else
                                {
                                    pubnub.Publish<string>(channel, publishMsg, store, DisplayReturnMessage, DisplayErrorMessage);
                                }
                            }
                            else
                            {
                                pubnub.Publish<string>(channel, publishMsg, store, DisplayReturnMessage, DisplayErrorMessage);
                            }
                        }
                        break;
                    case "3":
                        Console.WriteLine("Enter CHANNEL name for presence. Use comma to enter multiple channels.");
                        Console.WriteLine("NOTE: If you want to consider only Presence Channel Group(s), just hit ENTER");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Presence Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Enter CHANNEL GROUP name for presence. Use comma to enter multiple channel groups.");
                        Console.WriteLine("To denote a namespaced CHANNEL GROUP, use the colon (:) character with the format namespace:channelgroup.");
                        Console.WriteLine("NOTE: If you want to consider only Presence Channel(s), assuming you already entered, just hit ENTER");
                        channelGroup = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Presence Channel Group= {0}", channelGroup));
                        Console.ResetColor();
                        Console.WriteLine();

                        if (channel.Length <= 0 && channelGroup.Length <= 0)
                        {
                            Console.WriteLine("To run presence(), atleast provide either channel name or channel group name or both");
                        }
                        else
                        {
                            Console.WriteLine("Running presence()");
                            pubnub.Presence<string>(channel, channelGroup, DisplaySubscribeReturnMessage, DisplaySubscribeConnectStatusMessage, DisplayErrorMessage);
                        }
                        break;
                    case "4":
                        Console.WriteLine("Enter CHANNEL name for Detailed History");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running detailed history()");
                        pubnub.DetailedHistory<string>(channel, 100, DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "5":
                        bool showUUID = true;
                        bool includeUserState = false;

                        Console.WriteLine("Enter CHANNEL name for HereNow");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Show UUID List? Y or N? Default is Y. Press N for No Else press ENTER");
                        string userChoiceShowUUID = Console.ReadLine();
                        if (userChoiceShowUUID.ToLower() == "n")
                        {
                            showUUID = false;
                        }
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Show UUID = {0}",showUUID));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Include User State? Y or N? Default is N. Press Y for Yes Else press ENTER");
                        string userChoiceIncludeUserState = Console.ReadLine();
                        if (userChoiceIncludeUserState.ToLower() == "y")
                        {
                            includeUserState = true;
                        }
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Include User State = {0}", includeUserState));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running Here_Now()");
                        pubnub.HereNow<string>(channel, showUUID, includeUserState, DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "6":
                        Console.WriteLine("Enter CHANNEL name for Unsubscribe. Use comma to enter multiple channels.");
                        Console.WriteLine("NOTE: If you want to consider only Channel Group, just hit ENTER");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Enter channel group name");
                        Console.WriteLine("NOTE: If you want to consider only Channel, just hit ENTER");
                        channelGroup = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("ChannelGroup = {0}", channelGroup));
                        Console.ResetColor();

                        if (channel.Length <= 0 && channelGroup.Length <= 0)
                        {
                            Console.WriteLine("To run unsubscribe(), atleast provide either channel name or channel group name or both");
                        }
                        else
                        {
                            Console.WriteLine("Running unsubscribe()");
                            pubnub.Unsubscribe<string>(channel, channelGroup, DisplayReturnMessage, DisplaySubscribeConnectStatusMessage, DisplaySubscribeDisconnectStatusMessage, DisplayErrorMessage);
                        }
                        break;
                    case "7":
                        Console.WriteLine("Enter CHANNEL name for Presence Unsubscribe. Use comma to enter multiple channels.");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Enter channel group name for Presence Unsubscribe");
                        Console.WriteLine("NOTE: If you want to consider only Channel, just hit ENTER");
                        channelGroup = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("ChannelGroup = {0}", channelGroup));
                        Console.ResetColor();

                        if (channel.Length <= 0 && channelGroup.Length <= 0)
                        {
                            Console.WriteLine("To run presence-unsubscribe(), atleast provide either channel name or channel group name or both");
                        }
                        else
                        {
                            Console.WriteLine("Running presence-unsubscribe()");
                            pubnub.PresenceUnsubscribe<string>(channel, channelGroup, DisplayReturnMessage, DisplayPresenceConnectStatusMessage, DisplayPresenceDisconnectStatusMessage, DisplayErrorMessage);
                        }
                        break;
                    case "8":
                        Console.WriteLine("Running time()");
                        pubnub.Time<string>(DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "9":
                        Console.WriteLine("Running Disconnect/auto-Reconnect Subscriber Request Connection");
                        pubnub.TerminateCurrentSubscriberRequest();
                        break;
                    case "10":
                        Console.WriteLine("Disabling Network Connection (no internet)");
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Initiating Simulation of Internet non-availability");
                        Console.WriteLine("Until Choice=11 is entered, no operations will occur");
                        Console.WriteLine("NOTE: Publish from other pubnub clients can occur and those will be ");
                        Console.WriteLine("      captured upon choice=11 is entered provided resume on reconnect is enabled.");
                        Console.ResetColor();
                        pubnub.EnableSimulateNetworkFailForTestingOnly();
                        break;
                    case "11":
                        Console.WriteLine("Enabling Network Connection (yes internet)");
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Stopping Simulation of Internet non-availability");  
                        Console.ResetColor();
                        pubnub.DisableSimulateNetworkFailForTestingOnly();
                        break;
                    case "12":
                        Console.WriteLine("Enter CHANNEL name for PAM Grant. For Presence, Select Option 15.");
                        Console.WriteLine("To enter CHANNEL GROUP name, just hit ENTER");
                        channel = Console.ReadLine();

                        if (channel.Trim().Length <= 0)
                        {
                            channel = "";
                            Console.WriteLine("Enter CHANNEL GROUP name for PAM Grant.");
                            channelGroup = Console.ReadLine();
                        }
                        if (channel.Trim().Length <= 0 && channelGroup.Trim().Length <= 0)
                        {
                            Console.WriteLine("Channel or ChannelGroup not provided. Please try again.");
                            break;
                        }
                        Console.WriteLine("Enter the auth_key for PAM Grant (optional)");
                        Console.WriteLine("Press Enter Key if there is no auth_key at this time.");
                        string authGrant = Console.ReadLine();
                        
                        Console.WriteLine("Read Access? Enter Y for Yes (default), N for No.");
                        string readAccess = Console.ReadLine();
                        bool read = (readAccess.ToLower() == "n") ? false : true;

                        bool write = false;
                        if (channel.Trim().Length > 0)
                        {
                            Console.WriteLine("Write Access? Enter Y for Yes (default), N for No.");
                            string writeAccess = Console.ReadLine();
                            write = (writeAccess.ToLower() == "n") ? false : true;
                        }

                        bool manage=false;
                        if (channel.Trim().Length <= 0)
                        {
                            Console.WriteLine("Manage Access? Enter Y for Yes (default), N for No.");
                            string manageAccess = Console.ReadLine();
                            manage = (manageAccess.ToLower() == "n") ? false : true;
                        }
                        Console.WriteLine("How many minutes do you want to allow Grant Access? Enter the number of minutes.");
                        Console.WriteLine("Default = 1440 minutes (24 hours). Press ENTER now to accept default value.");
                        int grantTimeLimitInMinutes;
                        string grantTimeLimit = Console.ReadLine();
                        if (string.IsNullOrEmpty(grantTimeLimit.Trim()))
                        {
                            grantTimeLimitInMinutes = 1440;
                        }
                        else
                        {
                            Int32.TryParse(grantTimeLimit, out grantTimeLimitInMinutes);
                            if (grantTimeLimitInMinutes < 0) grantTimeLimitInMinutes = 1440;
                        }

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.WriteLine(string.Format("ChannelGroup = {0}", channelGroup));
                        Console.WriteLine(string.Format("auth_key = {0}", authGrant));
                        Console.WriteLine(string.Format("Read Access = {0}", read.ToString()));
                        if (channel.Trim().Length > 0)
                        {
                            Console.WriteLine(string.Format("Write Access = {0}", write.ToString()));
                        }
                        if (channel.Trim().Length <= 0)
                        {
                            Console.WriteLine(string.Format("Manage Access = {0}", manage.ToString()));
                        }
                        Console.WriteLine(string.Format("Grant Access Time Limit = {0}", grantTimeLimitInMinutes.ToString()));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running PamGrant()");
                        if (channel.Trim().Length > 0)
                        {
                            pubnub.GrantAccess<string>(channel, authGrant, read, write, grantTimeLimitInMinutes, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else
                        {
                            pubnub.ChannelGroupGrantAccess<string>(channelGroup, authGrant, read, manage, grantTimeLimitInMinutes, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        break;
                    case "13":
                        Console.WriteLine("Enter CHANNEL name for PAM Audit");
                        Console.WriteLine("To enter CHANNEL GROUP name, just hit ENTER");
                        channel = Console.ReadLine();

                        if (channel.Trim().Length <= 0)
                        {
                            Console.WriteLine("Enter CHANNEL GROUP name for PAM Audit.");
                            channelGroup = Console.ReadLine();
                        }
                        if (channel.Trim().Length <= 0 && channelGroup.Trim().Length <= 0)
                        {
                            Console.WriteLine("Channel or ChannelGroup not provided. Please try again.");
                            break;
                        }

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}", channel));
                        Console.ResetColor();
                        Console.WriteLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("ChannelGroup = {0}", channelGroup));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Enter the auth_key for PAM Audit (optional)");
                        Console.WriteLine("Press Enter Key if there is no auth_key at this time.");
                        string authAudit = Console.ReadLine();
                        
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("auth_key = {0}", authAudit));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running PamAudit()");
                        if (channel.Trim().Length > 0)
                        {
                            pubnub.AuditAccess<string>(channel, authAudit, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else
                        {
                            pubnub.ChannelGroupAuditAccess<string>(channelGroup, authAudit, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        break;
                    case "14":
                        Console.WriteLine("Enter CHANNEL name for PAM Revoke");
                        Console.WriteLine("To enter CHANNEL GROUP name, just hit ENTER");
                        channel = Console.ReadLine();
                        
                        if (channel.Trim().Length <= 0)
                        {
                            Console.WriteLine("Enter CHANNEL GROUP name for PAM Revoke.");
                            channelGroup = Console.ReadLine();
                        }
                        if (channel.Trim().Length <= 0 && channelGroup.Trim().Length <= 0)
                        {
                            channel = "";
                            Console.WriteLine("Channel or ChannelGroup not provided. Please try again.");
                            break;
                        }
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}", channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("ChannelGroup = {0}", channelGroup));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Enter the auth_key for PAM Revoke (optional)");
                        Console.WriteLine("Press Enter Key if there is no auth_key at this time.");
                        string authRevoke = Console.ReadLine();
                        
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("auth_key = {0}", authRevoke));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running PamRevoke()");
                        if (channel.Trim().Length > 0)
                        {
                            pubnub.GrantAccess<string>(channel, authRevoke, false, false, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else
                        {
                            pubnub.ChannelGroupGrantAccess<string>(channelGroup, authRevoke, false, false, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        break;
                    case "15":
                        Console.WriteLine("Enter CHANNEL name for PAM Grant Presence.");
                        Console.WriteLine("To enter CHANNEL GROUP name, just hit ENTER");
                        channel = Console.ReadLine();

                        if (channel.Trim().Length <= 0)
                        {
                            channel = "";
                            Console.WriteLine("Enter CHANNEL GROUP name for PAM Grant Presence.");
                            channelGroup = Console.ReadLine();
                        }
                        if (channel.Trim().Length <= 0 && channelGroup.Trim().Length <= 0)
                        {
                            Console.WriteLine("Channel or ChannelGroup not provided. Please try again.");
                            break;
                        }
                        
                        Console.WriteLine("Enter the auth_key for PAM Grant Presence (optional)");
                        Console.WriteLine("Press Enter Key if there is no auth_key at this time.");
                        string authGrantPresence = Console.ReadLine();
                        
                        Console.WriteLine("Read Access? Enter Y for Yes (default), N for No.");
                        string readPresenceAccess = Console.ReadLine();
                        bool readPresence = (readPresenceAccess.ToLower() == "n") ? false : true;

                        bool writePresence = false;
                        if (channel.Trim().Length > 0)
                        {
                            Console.WriteLine("Write Access? Enter Y for Yes (default), N for No.");
                            string writePresenceAccess = Console.ReadLine();
                            writePresence = (writePresenceAccess.ToLower() == "n") ? false : true;
                        }

                        bool managePresence=false;
                        if (channel.Trim().Length <= 0)
                        {
                            Console.WriteLine("Manage Access? Enter Y for Yes (default), N for No.");
                            string manageAccess = Console.ReadLine();
                            managePresence = (manageAccess.ToLower() == "n") ? false : true;
                        }

                        Console.WriteLine("How many minutes do you want to allow Grant Presence Access? Enter the number of minutes.");
                        Console.WriteLine("Default = 1440 minutes (24 hours). Press ENTER now to accept default value.");
                        int grantPresenceTimeLimitInMinutes;
                        string grantPresenceTimeLimit = Console.ReadLine();
                        if (string.IsNullOrEmpty(grantPresenceTimeLimit.Trim()))
                        {
                            grantPresenceTimeLimitInMinutes = 1440;
                        }
                        else
                        {
                            Int32.TryParse(grantPresenceTimeLimit, out grantPresenceTimeLimitInMinutes);
                            if (grantPresenceTimeLimitInMinutes < 0) grantPresenceTimeLimitInMinutes = 1440;
                        }

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}", channel));
                        Console.WriteLine(string.Format("ChannelGroup = {0}", channelGroup));
                        Console.WriteLine(string.Format("auth_key = {0}", authGrantPresence));
                        Console.WriteLine(string.Format("Read Access = {0}", readPresence.ToString()));
                        if (channel.Trim().Length > 0)
                        {
                            Console.WriteLine(string.Format("Write Access = {0}", writePresence.ToString()));
                        }
                        if (channel.Trim().Length <= 0)
                        {
                            Console.WriteLine(string.Format("Manage Access = {0}", managePresence.ToString()));
                        }
                        Console.WriteLine(string.Format("Grant Access Time Limit = {0}", grantPresenceTimeLimitInMinutes.ToString()));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running PAM GrantPresenceAccess()");
                        if (channel.Trim().Length > 0)
                        {
                            pubnub.GrantPresenceAccess<string>(channel, authGrantPresence, readPresence, writePresence, grantPresenceTimeLimitInMinutes, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else
                        {
                            pubnub.ChannelGroupGrantPresenceAccess<string>(channelGroup, authGrantPresence, readPresence, managePresence, grantPresenceTimeLimitInMinutes, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        break;
                    case "16":
                        Console.WriteLine("Enter CHANNEL name for PAM Presence Audit");
                        Console.WriteLine("To enter CHANNEL GROUP name, just hit ENTER");
                        channel = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}", channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        if (channel.Trim().Length <= 0)
                        {
                            Console.WriteLine("Enter CHANNEL GROUP name for PAM Presence Audit.");
                            channelGroup = Console.ReadLine();
                            
                            Console.ForegroundColor = ConsoleColor.Blue;
                            Console.WriteLine(string.Format("ChannelGroup = {0}", channelGroup));
                            Console.ResetColor();
                            Console.WriteLine();

                        }
                        if (channel.Trim().Length <= 0 && channelGroup.Trim().Length <= 0)
                        {
                            Console.WriteLine("Channel or ChannelGroup not provided. Please try again.");
                            break;
                        }

                        Console.WriteLine("Enter the auth_key for PAM Presence Audit (optional)");
                        Console.WriteLine("Press Enter Key if there is no auth_key at this time.");
                        string authPresenceAudit = Console.ReadLine();
                        
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("auth_key = {0}", authPresenceAudit));
                        Console.ResetColor();
                        Console.WriteLine();


                        Console.WriteLine("Running PAM Presence Audit()");
                        if (channel.Trim().Length > 0)
                        {
                            pubnub.AuditPresenceAccess<string>(channel, authPresenceAudit, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else
                        {
                            pubnub.ChannelGroupAuditPresenceAccess<string>(channelGroup, authPresenceAudit, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        break;
                    case "17":
                        Console.WriteLine("Enter CHANNEL name for PAM Presence Revoke");
                        Console.WriteLine("To enter CHANNEL GROUP name, just hit ENTER");
                        channel = Console.ReadLine();

                        if (channel.Trim().Length <= 0)
                        {
                            Console.WriteLine("Enter CHANNEL GROUP name for PAM Revoke.");
                            channelGroup = Console.ReadLine();
                        }
                        if (channel.Trim().Length <= 0 && channelGroup.Trim().Length <= 0)
                        {
                            channel = "";
                            Console.WriteLine("Channel or ChannelGroup not provided. Please try again.");
                            break;
                        }
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}", channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("ChannelGroup = {0}", channelGroup));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Enter the auth_key for PAM Presence Revoke (optional)");
                        Console.WriteLine("Press Enter Key if there is no auth_key at this time.");
                        string authPresenceRevoke = Console.ReadLine();
                        
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("auth_key = {0}", authPresenceRevoke));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running PAM Presence Revoke()");
                        if (channel.Trim().Length > 0)
                        {
                            pubnub.GrantPresenceAccess<string>(channel, authPresenceRevoke, false, false, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else
                        {
                            pubnub.ChannelGroupGrantPresenceAccess<string>(channelGroup, authPresenceRevoke, false, false, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        break;
                    case "18":
                        Console.WriteLine("Enter Auth Key (applies to all subscribed channels).");
                        Console.WriteLine("If you don't want to use Auth Key, Press ENTER Key");
                        authKey = Console.ReadLine();
                        pubnub.AuthenticationKey = authKey;

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Auth Key = {0}", authKey));
                        Console.ResetColor();
                        Console.WriteLine();

                        break;
                    case "19":
                        Console.WriteLine("Enabling simulation of Sleep/Suspend Mode");  
                        pubnub.EnableMachineSleepModeForTestingOnly();
                        Console.ForegroundColor = ConsoleColor.Red;  
                        Console.WriteLine("Machine Sleep Mode simulation activated");
                        Console.ResetColor();  
                        break;
                    case "20":
                        Console.WriteLine("Disabling simulation of Sleep/Suspend Mode");  
                        pubnub.DisableMachineSleepModeForTestingOnly();
                        Console.ForegroundColor = ConsoleColor.Red;  
                        Console.WriteLine("Simulation going to awake mode");  
                        Console.ResetColor();  
                        break;
                    case "21":
                        Console.WriteLine("Enter Presence Heartbeat in seconds");
                        string pnHeartbeatInput = Console.ReadLine();
                        Int32.TryParse(pnHeartbeatInput, out presenceHeartbeat);
                        pubnub.PresenceHeartbeat = presenceHeartbeat;
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Presence Heartbeat = {0}", presenceHeartbeat));
                        Console.ResetColor();
                        break;
                    case "22":
                        Console.WriteLine("Enter Presence Heartbeat Interval in seconds");
                        Console.WriteLine("NOTE: Ensure that it is less than Presence Heartbeat-3 seconds");
                        string pnHeartbeatIntervalInput = Console.ReadLine();
                        Int32.TryParse(pnHeartbeatIntervalInput, out presenceHeartbeatInterval);
                        pubnub.PresenceHeartbeatInterval = presenceHeartbeatInterval;
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Presence Heartbeat Interval = {0}", presenceHeartbeatInterval));
                        Console.ResetColor();
                        break;
                    case "23":
                        Console.WriteLine("Enter channel name");
                        Console.WriteLine("NOTE: If you want to consider only Channel Group, just hit ENTER");
                        string userStateChannel = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}", userStateChannel));
                        Console.ResetColor();

                        Console.WriteLine("Enter channel group name");
                        Console.WriteLine("NOTE: If you want to consider only Channel, just hit ENTER");
                        string userStateChannelGroup = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("ChannelGroup = {0}", userStateChannelGroup));
                        Console.ResetColor();

                        Console.WriteLine("User State will be accepted as dictionary key:value pair");

                        Console.WriteLine("Enter key. ");
                        string keyUserState = Console.ReadLine();
                        if (string.IsNullOrEmpty(keyUserState.Trim()))
                        {
                            Console.WriteLine("dictionary key:value pair entry completed.");
                            break;
                        }
                        Console.WriteLine("Enter value");
                        string valueUserState = Console.ReadLine();

                        int valueInt;
                        double valueDouble;
                        //string currentUserState = "";
                        if (Int32.TryParse(valueUserState, out valueInt))
                        {
                            pubnub.SetUserState<string>(userStateChannel, userStateChannelGroup, new KeyValuePair<string, object>(keyUserState, valueInt), DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else if (Double.TryParse(valueUserState, out valueDouble))
                        {
                            pubnub.SetUserState<string>(userStateChannel, userStateChannelGroup, new KeyValuePair<string, object>(keyUserState, valueDouble), DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else
                        {
                            pubnub.SetUserState<string>(userStateChannel, userStateChannelGroup, new KeyValuePair<string, object>(keyUserState, valueUserState), DisplayReturnMessage, DisplayErrorMessage);
                        }

                        break;
                    case "24":
                        Console.WriteLine("Enter channel name");
                        Console.WriteLine("NOTE: If you want to consider only Channel Group, just hit ENTER");
                        string deleteChannelUserState = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}", deleteChannelUserState));
                        Console.ResetColor();

                        Console.WriteLine("Enter channel group name");
                        Console.WriteLine("NOTE: If you want to consider only Channel, just hit ENTER");
                        string deleteChannelGroupUserState = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("ChannelGroup = {0}", deleteChannelGroupUserState));
                        Console.ResetColor();

                        Console.WriteLine("Enter key of the User State Key-Value pair to be deleted");
                        string deleteKeyUserState = Console.ReadLine();
                        pubnub.SetUserState<string>(deleteChannelUserState, deleteChannelGroupUserState, new KeyValuePair<string, object>(deleteKeyUserState, null), DisplayReturnMessage, DisplayErrorMessage);

                        break;
                    case "25":
                        Console.WriteLine("Enter channel name");
                        Console.WriteLine("NOTE: If you want to consider only Channel Group, just hit ENTER");
                        string setUserStateChannel = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}", setUserStateChannel));
                        Console.ResetColor();

                        Console.WriteLine("Enter channel group name");
                        Console.WriteLine("NOTE: If you want to consider only Channel, just hit ENTER");
                        string setUserStateChannelGroup = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("ChannelGroup = {0}", setUserStateChannelGroup));
                        Console.ResetColor();

                        Console.WriteLine("Enter user state in json format (Eg. {\"key1\":\"value1\",\"key2\":\"value2\"}");
                        string jsonUserState = Console.ReadLine();

                        if (jsonUserState.Trim() == "")
                        {
                            Console.WriteLine("Invalid User State");
                            break;
                        }
                        Console.WriteLine("Enter UUID. (Optional. Press ENTER to skip it)");
                        string uuid = Console.ReadLine();
                        if (string.IsNullOrEmpty(uuid))
                        {
                            pubnub.SetUserState<string>(setUserStateChannel, setUserStateChannelGroup, jsonUserState, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else
                        {
                            pubnub.SetUserState<string>(setUserStateChannel, setUserStateChannelGroup, uuid, jsonUserState, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        break;
                    case "26":
                        Console.WriteLine("Enter channel name");
                        Console.WriteLine("NOTE: If you want to consider only Channel Group, just hit ENTER");
                        string getUserStateChannel2 = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}", getUserStateChannel2));
                        Console.ResetColor();

                        Console.WriteLine("Enter channel group name");
                        Console.WriteLine("NOTE: If you want to consider only Channel, just hit ENTER");
                        string setUserStateChannelGroup2 = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("ChannelGroup = {0}", setUserStateChannelGroup2));
                        Console.ResetColor();

                        Console.WriteLine("Enter UUID. (Optional. Press ENTER to skip it)");
                        string uuid2 = Console.ReadLine();
                        if (string.IsNullOrEmpty(uuid2))
                        {
                            pubnub.GetUserState<string>(getUserStateChannel2, setUserStateChannelGroup2, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else
                        {
                            pubnub.GetUserState<string>(getUserStateChannel2, setUserStateChannelGroup2, uuid2, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        break;
                    case "27":
                        Console.WriteLine("Enter uuid for WhereNow. To consider SessionUUID, just press ENTER");
                        string whereNowUuid = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("uuid = {0}", whereNowUuid));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running Where_Now()");
                        pubnub.WhereNow<string>(whereNowUuid, DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "28":
                        bool globalHereNowShowUUID = true;
                        bool globalHereNowIncludeUserState = false;

                        Console.WriteLine("Show UUID List? Y or N? Default is Y. Press N for No Else press ENTER");
                        string userChoiceGlobalHereNowShowUUID = Console.ReadLine();
                        if (userChoiceGlobalHereNowShowUUID.ToLower() == "n")
                        {
                            globalHereNowShowUUID = false;
                        }
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Show UUID = {0}", globalHereNowShowUUID));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Include User State? Y or N? Default is N. Press Y for Yes Else press ENTER");
                        string userChoiceGlobalHereNowIncludeUserState = Console.ReadLine();
                        if (userChoiceGlobalHereNowIncludeUserState.ToLower() == "y")
                        {
                            globalHereNowIncludeUserState = true;
                        }
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Include User State = {0}", globalHereNowIncludeUserState));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running Global HereNow()");
                        pubnub.GlobalHereNow<string>(globalHereNowShowUUID, globalHereNowIncludeUserState,DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "29":
                        Console.WriteLine("ENTER UUID.");
                        string sessionUUID = Console.ReadLine();
                        pubnub.ChangeUUID(sessionUUID);
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine("UUID = {0}",pubnub.SessionUUID);
                        Console.ResetColor();
                        break;
                    case "38":
                        Console.WriteLine("Enter namespace");
                        string addChannelGroupNamespace = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("namespace = {0}", addChannelGroupNamespace));
                        Console.ResetColor();
                        
                        Console.WriteLine("Enter channel group name");
                        string addChannelGroupName = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("channel group name = {0}", addChannelGroupName));
                        Console.ResetColor();
                        

                        Console.WriteLine("Enter CHANNEL name. Use comma to enter multiple channels.");
                        channel = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();
                        pubnub.AddChannelsToChannelGroup<string>(channel.Split(','), addChannelGroupNamespace, addChannelGroupName, DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "39":
                        Console.WriteLine("Enter namespace");
                        string removeChannelGroupNamespace = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("namespace = {0}", removeChannelGroupNamespace));
                        Console.ResetColor();

                        if (removeChannelGroupNamespace.Trim().Length > 0)
                        {
                            Console.WriteLine("Do you want to remove the namespace and all its group names and all its channels? Default is No. Enter Y for Yes, Else just hit ENTER key");
                            string removeExistingNamespace = Console.ReadLine();
                            if (removeExistingNamespace.ToLower() == "y")
                            {
                                pubnub.RemoveChannelGroupNameSpace<string>(removeChannelGroupNamespace, DisplayReturnMessage, DisplayErrorMessage);
                                break;
                            }
                        }

                        Console.WriteLine("Enter channel group name");
                        string removeChannelGroupName = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("channel group name = {0}", removeChannelGroupName));
                        Console.ResetColor();

                        if (removeChannelGroupName.Trim().Length <= 0)
                        {
                            Console.WriteLine("Channel group not provided. Try again");
                            break;
                        }
                        Console.WriteLine("Do you want to remove the channel group and all its channels? Default is No. Enter Y for Yes, Else just hit ENTER key");
                        string removeExistingGroup = Console.ReadLine();
                        if (removeExistingGroup.ToLower() == "y")
                        {
                            pubnub.RemoveChannelGroup<string>(removeChannelGroupNamespace, removeChannelGroupName, DisplayReturnMessage, DisplayErrorMessage);
                            break;
                        }
                        
                        Console.WriteLine("Enter CHANNEL name. Use comma to enter multiple channels.");
                        channel = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();
                        pubnub.RemoveChannelsFromChannelGroup<string>(channel.Split(','), removeChannelGroupNamespace, removeChannelGroupName, DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "40":
                        Console.WriteLine("Do you want to get all existing namespaces? Default is No. Enter Y for Yes, Else just hit ENTER key");
                        string getExistingNamespace = Console.ReadLine();
                        if (getExistingNamespace.ToLower() == "y")
                        {
                            pubnub.GetAllChannelGroupNamespaces<string>(DisplayReturnMessage, DisplayErrorMessage);
                            break;
                        }

                        Console.WriteLine("Enter namespace");
                        string channelGroupNamespace = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("namespace = {0}", channelGroupNamespace));
                        Console.ResetColor();

                        if (channelGroupNamespace.Trim().Length > 0)
                        {
                            Console.WriteLine("Do you want to get all existing channel group names for the provided namespace? Default is No. Enter Y for Yes, Else just hit ENTER key");
                            string getExistingGroupNames = Console.ReadLine();
                            if (getExistingGroupNames.ToLower() == "y")
                            {
                                pubnub.GetAllChannelGroups<string>(channelGroupNamespace, DisplayReturnMessage, DisplayErrorMessage);
                                break;
                            }
                        }
                        else
                        {
                            Console.WriteLine("Do you want to get all existing channel group names? Default is No. Enter Y for Yes, Else just hit ENTER key");
                            string getExistingGroupNames = Console.ReadLine();
                            if (getExistingGroupNames.ToLower() == "y")
                            {
                                pubnub.GetAllChannelGroups<string>(DisplayReturnMessage, DisplayErrorMessage);
                                break;
                            }
                        }
                        
                        Console.WriteLine("Enter channel group name");
                        string channelGroupName = Console.ReadLine();
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("channel group name = {0}", channelGroupName));
                        Console.ResetColor();

                        pubnub.GetChannelsForChannelGroup<string>(channelGroupNamespace, channelGroupName, DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    default:
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("INVALID CHOICE. ENTER 99 FOR EXIT OR QUIT");
                        Console.ResetColor();
                        break;
                }
                if (!exitFlag)
                {
                    userinput = Console.ReadLine();
                    Int32.TryParse(userinput, out currentUserChoice);
                }
            }

            Console.WriteLine("\nPress any key to exit.\n\n");
            Console.ReadLine();

        }
 bool ValidateAndInitPubnub (string channelName, string channelGroupName, string cipher, bool ssl, 
                             string customUuid, bool proxyEnabled, string proxyPort,
                             string proxyUser, string proxyServer, string proxyPass,
                             string subscribeKey, string publishKey, string secretKey
 )
 {
     bool errorFree = true;
     if (String.IsNullOrWhiteSpace (channelName) && String.IsNullOrWhiteSpace (channelGroupName)) {
         errorFree = false;
         new UIAlertView ("Error!", "Please enter either channel name or channelgroup name or both", null, "OK").Show (); 
     }
     
     if (errorFree) {
         pubnub = new Pubnub (publishKey, subscribeKey, secretKey, cipher, ssl);
         if (!String.IsNullOrWhiteSpace (customUuid.Trim ())) {
             pubnub.SessionUUID = customUuid.Trim ();
         }
     } 
     
     if ((errorFree) && (proxyEnabled)) {
         int port;
         if (Int32.TryParse (proxyPort, out port) && ((port >= 1) && (port <= 65535))) {
             proxy = new PubnubProxy ();
             proxy.ProxyServer = proxyServer;
             proxy.ProxyPort = port;
             proxy.ProxyUserName = proxyUser;
             proxy.ProxyPassword = proxyPass;
             
             try {
                 pubnub.Proxy = proxy;
             } catch (MissingMemberException mse) {
                 errorFree = false;
                 proxyEnabled = false;
                 Console.WriteLine (mse.Message);
                 new UIAlertView ("Error!", "Proxy settings invalid, please re-enter the details.", null, "OK").Show (); 
             }
         } else {
             errorFree = false;
             new UIAlertView ("Error!", "Proxy port must be a valid integer between 1 to 65535", null, "OK").Show (); 
         }
     }
     return errorFree;
 }
Esempio n. 11
0
        static public void Main()
        {
            AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;

            PubnubProxy proxy = null;

            Console.WriteLine("HINT: TO TEST RE-CONNECT AND CATCH-UP,");
            Console.WriteLine("      DISCONNECT YOUR MACHINE FROM NETWORK/INTERNET AND ");
            Console.WriteLine("      RE-CONNECT YOUR MACHINE AFTER SOMETIME.");
            Console.WriteLine();
            Console.WriteLine("      IF NO NETWORK BEFORE MAX RE-TRY CONNECT,");
            Console.WriteLine("      NETWORK ERROR MESSAGE WILL BE SENT");
            Console.WriteLine();

            Console.WriteLine("Enter Pubnub Origin. Default Origin = pubsub.pubnub.com");
            Console.WriteLine("If you want to accept default value, press ENTER.");
            string origin = Console.ReadLine();

            Console.ForegroundColor = ConsoleColor.Blue;
            if (origin.Trim() == "")
            {
                origin = "pubsub.pubnub.com";
                Console.WriteLine("Default Origin selected");
            }
            else
            {
                Console.WriteLine("Pubnub Origin Provided");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Enable SSL? ENTER Y for Yes, else N");
            string enableSSL = Console.ReadLine();

            Console.ForegroundColor = ConsoleColor.Blue;
            if (enableSSL.Trim().ToLower() == "y")
            {
                Console.WriteLine("SSL Enabled");
            }
            else
            {
                Console.WriteLine("SSL NOT Enabled");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER cipher key for encryption feature.");
            Console.WriteLine("If you don't want to avail at this time, press ENTER.");
            string cipherKey = Console.ReadLine();

            Console.ForegroundColor = ConsoleColor.Blue;
            if (cipherKey.Trim().Length > 0)
            {
                Console.WriteLine("Cipher key provided.");
            }
            else
            {
                Console.WriteLine("No Cipher key provided");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER subscribe key.");
            Console.WriteLine("If you want to accept default demo subscribe key, press ENTER.");
            string subscribeKey = Console.ReadLine();

            Console.ForegroundColor = ConsoleColor.Blue;
            if (subscribeKey.Trim().Length > 0)
            {
                Console.WriteLine("Subscribe key provided.");
            }
            else
            {
                Console.WriteLine("Default demo subscribe key provided");
                subscribeKey = "demo";
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER publish key.");
            Console.WriteLine("If you want to accept default demo publish key, press ENTER.");
            string publishKey = Console.ReadLine();

            Console.ForegroundColor = ConsoleColor.Blue;
            if (publishKey.Trim().Length > 0)
            {
                Console.WriteLine("Publish key provided.");
            }
            else
            {
                Console.WriteLine("Default demo publish key provided");
                publishKey = "demo";
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER secret key.");
            Console.WriteLine("If you don't want to avail at this time, press ENTER.");
            string secretKey = Console.ReadLine();

            Console.ForegroundColor = ConsoleColor.Blue;
            if (secretKey.Trim().Length > 0)
            {
                Console.WriteLine("Secret key provided.");
            }
            else
            {
                Console.WriteLine("No Secret key provided");
                //secretKey = "sec-c-YjFmNzYzMGMtYmI3NC00NzJkLTlkYzYtY2MwMzI4YTJhNDVh";
            }
            Console.ResetColor();
            Console.WriteLine();

            pubnub = new Pubnub(publishKey, subscribeKey, secretKey, cipherKey,
                                //pubnub = new Pubnub("pub-c-a2650a22-deb1-44f5-aa87-1517049411d5", "sub-c-a478dd2a-c33d-11e2-883f-02ee2ddab7fe", secretKey, cipherKey,
                                (enableSSL.Trim().ToLower() == "y") ? true : false);

            pubnub.Origin = origin;

            Console.WriteLine("Use Custom Session UUID? ENTER Y for Yes, else N");
            string enableCustomUUID = Console.ReadLine();

            if (enableCustomUUID.Trim().ToLower() == "y")
            {
                Console.WriteLine("ENTER Session UUID.");
                string sessionUUID = Console.ReadLine();
                pubnub.SessionUUID      = sessionUUID;
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("Accepted Custom Session UUID.");
                Console.ResetColor();
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("Default Session UUID opted.");
                Console.ResetColor();
            }
            Console.WriteLine();

            Console.WriteLine("By default Resume On Reconnect is enabled. Do you want to disable it? ENTER Y for Yes, else N");
            string disableResumeOnReconnect = Console.ReadLine();

            Console.ForegroundColor = ConsoleColor.Blue;
            if (disableResumeOnReconnect.Trim().ToLower() == "y")
            {
                Console.WriteLine("Resume On Reconnect Disabled");
                pubnub.EnableResumeOnReconnect = false;
            }
            else
            {
                Console.WriteLine("Resume On Reconnect Enabled by default");
                pubnub.EnableResumeOnReconnect = true;
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Subscribe Timeout = 310 seconds (default). Enter the value to change, else press ENTER");
            string subscribeTimeoutEntry = Console.ReadLine();
            int    subscribeTimeout;

            Int32.TryParse(subscribeTimeoutEntry, out subscribeTimeout);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (subscribeTimeout > 0)
            {
                Console.WriteLine("Subscribe Timeout = {0}", subscribeTimeout);
                pubnub.SubscribeTimeout = subscribeTimeout;
            }
            else
            {
                Console.WriteLine("Subscribe Timeout = {0} (default)", pubnub.SubscribeTimeout);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Non Subscribe Timeout = 15 seconds (default). Enter the value to change, else press ENTER");
            string nonSubscribeTimeoutEntry = Console.ReadLine();
            int    nonSubscribeTimeout;

            Int32.TryParse(nonSubscribeTimeoutEntry, out nonSubscribeTimeout);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (nonSubscribeTimeout > 0)
            {
                Console.WriteLine("Non Subscribe Timeout = {0}", nonSubscribeTimeout);
                pubnub.NonSubscribeTimeout = nonSubscribeTimeout;
            }
            else
            {
                Console.WriteLine("Non Subscribe Timeout = {0} (default)", pubnub.NonSubscribeTimeout);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Network Check MAX retries = 50 (default). Enter the value to change, else press ENTER");
            string networkCheckMaxRetriesEntry = Console.ReadLine();
            int    networkCheckMaxRetries;

            Int32.TryParse(networkCheckMaxRetriesEntry, out networkCheckMaxRetries);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (networkCheckMaxRetries > 0)
            {
                Console.WriteLine("Network Check MAX retries = {0}", networkCheckMaxRetries);
                pubnub.NetworkCheckMaxRetries = networkCheckMaxRetries;
            }
            else
            {
                Console.WriteLine("Network Check MAX retries = {0} (default)", pubnub.NetworkCheckMaxRetries);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Network Check Retry Interval = 10 seconds (default). Enter the value to change, else press ENTER");
            string networkCheckRetryIntervalEntry = Console.ReadLine();
            int    networkCheckRetryInterval;

            Int32.TryParse(networkCheckRetryIntervalEntry, out networkCheckRetryInterval);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (networkCheckRetryInterval > 0)
            {
                Console.WriteLine("Network Check Retry Interval = {0} seconds", networkCheckRetryInterval);
                pubnub.NetworkCheckRetryInterval = networkCheckRetryInterval;
            }
            else
            {
                Console.WriteLine("Network Check Retry Interval = {0} seconds (default)", pubnub.NetworkCheckRetryInterval);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Heartbeat Interval = 15 seconds (default). Enter the value to change, else press ENTER");
            string heartbeatIntervalEntry = Console.ReadLine();
            int    heartbeatInterval;

            Int32.TryParse(heartbeatIntervalEntry, out heartbeatInterval);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (heartbeatInterval > 0)
            {
                Console.WriteLine("Heartbeat Interval = {0} seconds", heartbeatInterval);
                pubnub.HeartbeatInterval = heartbeatInterval;
            }
            else
            {
                Console.WriteLine("Heartbeat Interval = {0} seconds (default)", pubnub.HeartbeatInterval);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("HTTP Proxy Server with NTLM authentication(IP + username/pwd) exists? ENTER Y for Yes, else N");
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("NOTE: Pubnub example is being tested with CCProxy 7.3 Demo version");
            Console.ResetColor();
            string enableProxy = Console.ReadLine();

            if (enableProxy.Trim().ToLower() == "y")
            {
                bool proxyAccepted = false;
                while (!proxyAccepted)
                {
                    Console.WriteLine("ENTER proxy server name or IP.");
                    string proxyServer = Console.ReadLine();
                    Console.WriteLine("ENTER port number of proxy server.");
                    string proxyPort = Console.ReadLine();
                    int    port;
                    Int32.TryParse(proxyPort, out port);
                    Console.WriteLine("ENTER user name for proxy server authentication.");
                    string proxyUsername = Console.ReadLine();
                    Console.WriteLine("ENTER password for proxy server authentication.");
                    string proxyPassword = Console.ReadLine();

                    proxy                   = new PubnubProxy();
                    proxy.ProxyServer       = proxyServer;
                    proxy.ProxyPort         = port;
                    proxy.ProxyUserName     = proxyUsername;
                    proxy.ProxyPassword     = proxyPassword;
                    Console.ForegroundColor = ConsoleColor.Blue;
                    try
                    {
                        pubnub.Proxy  = proxy;
                        proxyAccepted = true;
                        Console.WriteLine("Proxy details accepted");
                        Console.ResetColor();
                    }
                    catch (MissingFieldException mse)
                    {
                        Console.WriteLine(mse.Message);
                        Console.WriteLine("Please RE-ENTER Proxy Server details.");
                    }
                    Console.ResetColor();
                }
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("No Proxy");
                Console.ResetColor();
            }
            Console.WriteLine();

            Console.WriteLine("Enter Auth Key. If you don't want to use Auth Key, Press ENTER Key");
            authKey = Console.ReadLine();
            pubnub.AuthenticationKey = authKey;

            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine(string.Format("Auth Key = {0}", authKey));
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Display ErrorCallback messages? Enter Y for Yes, Else N for No.");
            Console.WriteLine("Default = N  ");
            string displayErrMessage = Console.ReadLine();

            Console.ForegroundColor = ConsoleColor.Blue;
            if (displayErrMessage.Trim().ToLower() == "y")
            {
                showErrorMessageSegments = true;
                Console.WriteLine("ErrorCallback messages will  be displayed");
            }
            else
            {
                showErrorMessageSegments = false;
                Console.WriteLine("ErrorCallback messages will NOT be displayed.");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Display Debug Info in ErrorCallback messages? Enter Y for Yes, Else N for No.");
            Console.WriteLine("Default = Y  ");
            string debugMessage = Console.ReadLine();

            Console.ForegroundColor = ConsoleColor.Blue;
            if (debugMessage.Trim().ToLower() == "n")
            {
                showDebugMessages = false;
                Console.WriteLine("ErrorCallback messages will NOT  be displayed");
            }
            else
            {
                showDebugMessages = true;
                Console.WriteLine("Debug messages will be displayed.");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER 1 FOR Subscribe");
            Console.WriteLine("ENTER 2 FOR Publish");
            Console.WriteLine("ENTER 3 FOR Presence");
            Console.WriteLine("ENTER 4 FOR Detailed History");
            Console.WriteLine("ENTER 5 FOR Here_Now");
            Console.WriteLine("ENTER 6 FOR Unsubscribe");
            Console.WriteLine("ENTER 7 FOR Presence-Unsubscribe");
            Console.WriteLine("ENTER 8 FOR Time");
            Console.WriteLine("ENTER 9 FOR Disconnect/Reconnect existing Subscriber(s) (when internet is available)");
            Console.WriteLine("ENTER 10 TO Disable Network Connection (no internet)");
            Console.WriteLine("ENTER 11 TO Enable Network Connection (yes internet)");
            Console.WriteLine("ENTER 12 FOR Grant Access");
            Console.WriteLine("ENTER 13 FOR Audit Access");
            Console.WriteLine("ENTER 14 FOR Revoke Access");
            Console.WriteLine("ENTER 15 FOR Grant Access for Presence Channel");
            Console.WriteLine("ENTER 16 FOR Audit Access for Presence Channel");
            Console.WriteLine("ENTER 17 FOR Revoke Access for Presence Channel");
            Console.WriteLine("ENTER 18 FOR Change/Update Auth Key");
            Console.WriteLine("ENTER 19 TO Simulate Machine Sleep Mode");
            Console.WriteLine("ENTER 20 TO Simulate Machine Awake Mode");
            Console.WriteLine("ENTER 99 FOR EXIT OR QUIT");

            bool   exitFlag = false;
            string channel  = "";

            Console.WriteLine("");
            while (!exitFlag)
            {
                string userinput = Console.ReadLine();
                if (userinput.ToLower() == "show debug on")
                {
                    showDebugMessages = true;
                    continue;
                }
                else if (userinput.ToLower() == "show debug off")
                {
                    showDebugMessages = false;
                    continue;
                }
                switch (userinput)
                {
                case "99":
                    exitFlag = true;
                    pubnub.EndPendingRequests();
                    break;

                case "1":
                    Console.WriteLine("Enter CHANNEL name for subscribe. Use comma to enter multiple channels.");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running subscribe()");
                    pubnub.Subscribe <string>(channel, DisplaySubscribeReturnMessage, DisplaySubscribeConnectStatusMessage, DisplayErrorMessage);

                    break;

                case "2":
                    Console.WriteLine("Enter CHANNEL name for publish.");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();

                    /* TO TEST SMALL TEXT PUBLISH ONLY */
                    Console.WriteLine("Enter the message for publish and press ENTER key to submit");
                    //string publishMsg = Console.ReadLine();

                    /* UNCOMMENT THE FOLLOWING CODE BLOCK TO TEST LARGE TEXT PUBLISH ONLY */
                    #region Code To Test Large Text Publish
                    ConsoleKeyInfo enteredKey;
                    StringBuilder  publishBuilder = new StringBuilder();
                    do
                    {
                        enteredKey = Console.ReadKey();     //This logic is being used to capture > 2K input in console window
                        if (enteredKey.Key != ConsoleKey.Enter)
                        {
                            publishBuilder.Append(enteredKey.KeyChar);
                        }
                    } while (enteredKey.Key != ConsoleKey.Enter);
                    string publishMsg = publishBuilder.ToString();
                    #endregion

                    Console.WriteLine("Running publish()");

                    double doubleData;
                    int    intData;
                    if (int.TryParse(publishMsg, out intData))     //capture numeric data
                    {
                        pubnub.Publish <string>(channel, intData, DisplayReturnMessage, DisplayErrorMessage);
                    }
                    else if (double.TryParse(publishMsg, out doubleData))     //capture numeric data
                    {
                        pubnub.Publish <string>(channel, doubleData, DisplayReturnMessage, DisplayErrorMessage);
                    }
                    else
                    {
                        //check whether any numeric is sent in double quotes
                        if (publishMsg.IndexOf("\"") == 0 && publishMsg.LastIndexOf("\"") == publishMsg.Length - 1)
                        {
                            string strMsg = publishMsg.Substring(1, publishMsg.Length - 2);
                            if (int.TryParse(strMsg, out intData))
                            {
                                pubnub.Publish <string>(channel, strMsg, DisplayReturnMessage, DisplayErrorMessage);
                            }
                            else if (double.TryParse(strMsg, out doubleData))
                            {
                                pubnub.Publish <string>(channel, strMsg, DisplayReturnMessage, DisplayErrorMessage);
                            }
                            else
                            {
                                pubnub.Publish <string>(channel, publishMsg, DisplayReturnMessage, DisplayErrorMessage);
                            }
                        }
                        else
                        {
                            pubnub.Publish <string>(channel, publishMsg, DisplayReturnMessage, DisplayErrorMessage);
                        }
                    }
                    break;

                case "3":
                    Console.WriteLine("Enter CHANNEL name for presence. Use comma to enter multiple channels.");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Presence Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running presence()");
                    pubnub.Presence <string>(channel, DisplayPresenceReturnMessage, DisplayPresenceConnectStatusMessage, DisplayErrorMessage);

                    break;

                case "4":
                    Console.WriteLine("Enter CHANNEL name for Detailed History");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running detailed history()");
                    pubnub.DetailedHistory <string>(channel, 100, DisplayReturnMessage, DisplayErrorMessage);
                    break;

                case "5":
                    Console.WriteLine("Enter CHANNEL name for HereNow");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running Here_Now()");
                    pubnub.HereNow <string>(channel, DisplayReturnMessage, DisplayErrorMessage);
                    break;

                case "6":
                    Console.WriteLine("Enter CHANNEL name for Unsubscribe. Use comma to enter multiple channels.");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running unsubscribe()");
                    pubnub.Unsubscribe <string>(channel, DisplayReturnMessage, DisplaySubscribeConnectStatusMessage, DisplaySubscribeDisconnectStatusMessage, DisplayErrorMessage);
                    break;

                case "7":
                    Console.WriteLine("Enter CHANNEL name for Presence Unsubscribe. Use comma to enter multiple channels.");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running presence-unsubscribe()");
                    pubnub.PresenceUnsubscribe <string>(channel, DisplayReturnMessage, DisplayPresenceConnectStatusMessage, DisplayPresenceDisconnectStatusMessage, DisplayErrorMessage);
                    break;

                case "8":
                    Console.WriteLine("Running time()");
                    pubnub.Time <string>(DisplayReturnMessage, DisplayErrorMessage);
                    break;

                case "9":
                    Console.WriteLine("Running Disconnect/auto-Reconnect Subscriber Request Connection");
                    pubnub.TerminateCurrentSubscriberRequest();
                    break;

                case "10":
                    Console.WriteLine("Disabling Network Connection (no internet)");
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Initiating Simulation of Internet non-availability");
                    Console.WriteLine("Until Choice=11 is entered, no operations will occur");
                    Console.WriteLine("NOTE: Publish from other pubnub clients can occur and those will be ");
                    Console.WriteLine("      captured upon choice=11 is entered provided resume on reconnect is enabled.");
                    Console.ResetColor();
                    pubnub.EnableSimulateNetworkFailForTestingOnly();
                    break;

                case "11":
                    Console.WriteLine("Enabling Network Connection (yes internet)");
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Stopping Simulation of Internet non-availability");
                    Console.ResetColor();
                    pubnub.DisableSimulateNetworkFailForTestingOnly();
                    break;

                case "12":
                    Console.WriteLine("Enter CHANNEL name for PAM Grant. For Presence, Select Option 15.");
                    channel = Console.ReadLine();
                    Console.WriteLine("Read Access? Enter Y for Yes (default), N for No.");
                    string readAccess = Console.ReadLine();
                    bool   read       = (readAccess.ToLower() == "n") ? false : true;
                    Console.WriteLine("Write Access? Enter Y for Yes (default), N for No.");
                    string writeAccess = Console.ReadLine();
                    bool   write       = (writeAccess.ToLower() == "n") ? false : true;
                    Console.WriteLine("How many minutes do you want to allow Grant Access? Enter the number of minutes.");
                    Console.WriteLine("Default = 1440 minutes (24 hours). Press ENTER now to accept default value.");
                    string grantTimeLimit = Console.ReadLine();
                    int    grantTimeLimitInSeconds;
                    Int32.TryParse(grantTimeLimit, out grantTimeLimitInSeconds);
                    if (grantTimeLimitInSeconds == 0)
                    {
                        grantTimeLimitInSeconds = 1440;
                    }

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.WriteLine(string.Format("Read Access = {0}", read.ToString()));
                    Console.WriteLine(string.Format("Write Access = {0}", write.ToString()));
                    Console.WriteLine(string.Format("Grant Access Time Limit = {0}", grantTimeLimitInSeconds.ToString()));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running PamGrant()");
                    pubnub.GrantAccess <string>(channel, read, write, grantTimeLimitInSeconds, DisplayReturnMessage, DisplayErrorMessage);
                    break;

                case "13":
                    Console.WriteLine("Enter CHANNEL name for PAM Audit");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running PamAudit()");
                    pubnub.AuditAccess <string>(channel, DisplayReturnMessage, DisplayErrorMessage);
                    break;

                case "14":
                    Console.WriteLine("Enter CHANNEL name for PAM Revoke");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running PamRevoke()");
                    pubnub.GrantAccess <string>(channel, false, false, DisplayReturnMessage, DisplayErrorMessage);
                    break;

                case "15":
                    Console.WriteLine("Enter CHANNEL name for PAM Grant Presence.");
                    channel = Console.ReadLine();
                    Console.WriteLine("Read Access? Enter Y for Yes (default), N for No.");
                    string readPresenceAccess = Console.ReadLine();
                    bool   readPresence       = (readPresenceAccess.ToLower() == "n") ? false : true;
                    Console.WriteLine("Write Access? Enter Y for Yes (default), N for No.");
                    string writePresenceAccess = Console.ReadLine();
                    bool   writePresence       = (writePresenceAccess.ToLower() == "n") ? false : true;
                    Console.WriteLine("How many minutes do you want to allow Grant Presence Access? Enter the number of minutes.");
                    Console.WriteLine("Default = 1440 minutes (24 hours). Press ENTER now to accept default value.");
                    string grantPresenceTimeLimit = Console.ReadLine();
                    int    grantPresenceTimeLimitInSeconds;
                    Int32.TryParse(grantPresenceTimeLimit, out grantPresenceTimeLimitInSeconds);
                    if (grantPresenceTimeLimitInSeconds == 0)
                    {
                        grantTimeLimitInSeconds = 1440;
                    }

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.WriteLine(string.Format("Read Access = {0}", readPresence.ToString()));
                    Console.WriteLine(string.Format("Write Access = {0}", writePresence.ToString()));
                    Console.WriteLine(string.Format("Grant Access Time Limit = {0}", grantPresenceTimeLimitInSeconds.ToString()));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running PAM GrantPresenceAccess()");
                    pubnub.GrantPresenceAccess <string>(channel, readPresence, writePresence, grantPresenceTimeLimitInSeconds, DisplayReturnMessage, DisplayErrorMessage);
                    break;

                case "16":
                    Console.WriteLine("Enter CHANNEL name for PAM Presence Audit");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running PAM Presence Audit()");
                    pubnub.AuditPresenceAccess <string>(channel, DisplayReturnMessage, DisplayErrorMessage);
                    break;

                case "17":
                    Console.WriteLine("Enter CHANNEL name for PAM Presence Revoke");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running PAM Presence Revoke()");
                    pubnub.GrantPresenceAccess <string>(channel, false, false, DisplayReturnMessage, DisplayErrorMessage);
                    break;

                case "18":
                    Console.WriteLine("Enter Auth Key. Use comma to enter multiple Auth Keys.");
                    Console.WriteLine("If you don't want to use Auth Key, Press ENTER Key");
                    authKey = Console.ReadLine();
                    pubnub.AuthenticationKey = authKey;

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Auth Key(s) = {0}", authKey));
                    Console.ResetColor();
                    Console.WriteLine();

                    break;

                case "19":
                    Console.WriteLine("Enabling simulation of Sleep/Suspend Mode");
                    pubnub.EnableMachineSleepModeForTestingOnly();
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Machine Sleep Mode simulation activated");
                    Console.ResetColor();
                    break;

                case "20":
                    Console.WriteLine("Disabling simulation of Sleep/Suspend Mode");
                    pubnub.DisableMachineSleepModeForTestingOnly();
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Simulation going to awake mode");
                    Console.ResetColor();
                    break;

                default:
                    Console.WriteLine("INVALID CHOICE. ENTER 99 FOR EXIT OR QUIT");
                    break;
                }
            }

            Console.WriteLine("\nPress any key to exit.\n\n");
            Console.ReadLine();
        }
Esempio n. 12
0
        static public void Main()
        {
            PubnubProxy proxy = null;

            
            Console.WriteLine("HINT: TO TEST RE-CONNECT AND CATCH-UP,");
            Console.WriteLine("      DISCONNECT YOUR MACHINE FROM NETWORK/INTERNET AND ");
            Console.WriteLine("      RE-CONNECT YOUR MACHINE AFTER SOMETIME.");
            Console.WriteLine();
            Console.WriteLine("      IF NO NETWORK BEFORE MAX RE-TRY CONNECT,");
            Console.WriteLine("      NETWORK ERROR MESSAGE WILL BE SENT");
            Console.WriteLine();

            Console.WriteLine("Enable SSL? ENTER Y for Yes, else N");
            string enableSSL = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (enableSSL.Trim().ToLower() == "y")
            {
                Console.WriteLine("SSL Enabled");
            }
            else
            {
                Console.WriteLine("SSL NOT Enabled");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER cipher key for encryption feature.");
            Console.WriteLine("If you don't want to avail at this time, press ENTER.");
            string cipheryKey = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (cipheryKey.Trim().Length > 0)
            {
                Console.WriteLine("Cipher key provided.");
            }
            else
            {
                Console.WriteLine("No Cipher key provided");
            }
            Console.ResetColor();
            Console.WriteLine();

            pubnub = new Pubnub("demo", "demo", "", cipheryKey,
                (enableSSL.Trim().ToLower() == "y") ? true : false);

            Console.WriteLine("Use Custom Session UUID? ENTER Y for Yes, else N");
            string enableCustomUUID = Console.ReadLine();
            if (enableCustomUUID.Trim().ToLower() == "y")
            {
                Console.WriteLine("ENTER Session UUID.");
                string sessionUUID = Console.ReadLine();
                pubnub.SessionUUID = sessionUUID;
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("Accepted Custom Session UUID.");
                Console.ResetColor();
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("Default Session UUID opted.");
                Console.ResetColor();
            }
            Console.WriteLine();

            Console.WriteLine("By default Resume On Reconnect is enabled. Do you want to disable it? ENTER Y for Yes, else N");
            string disableResumeOnReconnect = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (disableResumeOnReconnect.Trim().ToLower() == "y")
            {
                Console.WriteLine("Resume On Reconnect Disabled");
                pubnub.EnableResumeOnReconnect = false;
            }
            else
            {
                Console.WriteLine("Resume On Reconnect Enabled by default");
                pubnub.EnableResumeOnReconnect = true;
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Subscribe Timeout = 310 seconds (default). Enter the value to change, else press ENTER");
            string subscribeTimeoutEntry = Console.ReadLine();
            int subscribeTimeout;
            Int32.TryParse(subscribeTimeoutEntry, out subscribeTimeout);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (subscribeTimeout > 0)
            {
                Console.WriteLine("Subscribe Timeout = {0}",subscribeTimeout);
                pubnub.SubscribeTimeout = subscribeTimeout;
            }
            else
            {
                Console.WriteLine("Subscribe Timeout = {0} (default)", pubnub.SubscribeTimeout);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Non Subscribe Timeout = 15 seconds (default). Enter the value to change, else press ENTER");
            string nonSubscribeTimeoutEntry = Console.ReadLine();
            int nonSubscribeTimeout;
            Int32.TryParse(nonSubscribeTimeoutEntry, out nonSubscribeTimeout);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (nonSubscribeTimeout > 0)
            {
                Console.WriteLine("Non Subscribe Timeout = {0}", nonSubscribeTimeout);
                pubnub.NonSubscribeTimeout = nonSubscribeTimeout;
            }
            else
            {
                Console.WriteLine("Non Subscribe Timeout = {0} (default)", pubnub.NonSubscribeTimeout);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Network Check MAX retries = 50 (default). Enter the value to change, else press ENTER");
            string networkCheckMaxRetriesEntry = Console.ReadLine();
            int networkCheckMaxRetries;
            Int32.TryParse(networkCheckMaxRetriesEntry, out networkCheckMaxRetries);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (networkCheckMaxRetries > 0)
            {
                Console.WriteLine("Network Check MAX retries = {0}", networkCheckMaxRetries);
                pubnub.NetworkCheckMaxRetries = networkCheckMaxRetries;
            }
            else
            {
                Console.WriteLine("Network Check MAX retries = {0} (default)", pubnub.NetworkCheckMaxRetries);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Network Check Retry Interval = 10 seconds (default). Enter the value to change, else press ENTER");
            string networkCheckRetryIntervalEntry = Console.ReadLine();
            int networkCheckRetryInterval;
            Int32.TryParse(networkCheckRetryIntervalEntry, out networkCheckRetryInterval);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (networkCheckRetryInterval > 0)
            {
                Console.WriteLine("Network Check Retry Interval = {0} seconds", networkCheckRetryInterval);
                pubnub.NetworkCheckRetryInterval = networkCheckRetryInterval;
            }
            else
            {
                Console.WriteLine("Network Check Retry Interval = {0} seconds (default)", pubnub.NetworkCheckRetryInterval);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Heartbeat Interval = 15 seconds (default). Enter the value to change, else press ENTER");
            string heartbeatIntervalEntry = Console.ReadLine();
            int heartbeatInterval;
            Int32.TryParse(heartbeatIntervalEntry, out heartbeatInterval);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (heartbeatInterval > 0)
            {
                Console.WriteLine("Heartbeat Interval = {0} seconds", heartbeatInterval);
                pubnub.HeartbeatInterval = heartbeatInterval;
            }
            else
            {
                Console.WriteLine("Heartbeat Interval = {0} seconds (default)", pubnub.HeartbeatInterval);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("HTTP Proxy Server with NTLM authentication(IP + username/pwd) exists? ENTER Y for Yes, else N");
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("NOTE: Pubnub example is being tested with CCProxy 7.3 Demo version");
            Console.ResetColor();
            string enableProxy = Console.ReadLine();
            if (enableProxy.Trim().ToLower() == "y")
            {
                bool proxyAccepted = false;
                while (!proxyAccepted)
                {
                    Console.WriteLine("ENTER proxy server name or IP.");
                    string proxyServer = Console.ReadLine();
                    Console.WriteLine("ENTER port number of proxy server.");
                    string proxyPort = Console.ReadLine();
                    int port;
                    Int32.TryParse(proxyPort, out port);
                    Console.WriteLine("ENTER user name for proxy server authentication.");
                    string proxyUsername = Console.ReadLine();
                    Console.WriteLine("ENTER password for proxy server authentication.");
                    string proxyPassword = Console.ReadLine();
                    
                    proxy = new PubnubProxy();
                    proxy.ProxyServer = proxyServer;
                    proxy.ProxyPort = port;
                    proxy.ProxyUserName = proxyUsername;
                    proxy.ProxyPassword = proxyPassword;
                    Console.ForegroundColor = ConsoleColor.Blue;
                    try
                    {
                        pubnub.Proxy = proxy;
                        proxyAccepted = true;
                        Console.WriteLine("Proxy details accepted");
                        Console.ResetColor();
                    }
                    catch (MissingFieldException mse)
                    {
                        Console.WriteLine(mse.Message);
                        Console.WriteLine("Please RE-ENTER Proxy Server details.");
                    }
                    Console.ResetColor();
                }
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("No Proxy");
                Console.ResetColor();
            }
            Console.WriteLine();

            Console.WriteLine("Display ErrorCallback messages? Enter Y for Yes, Else N for No.");
            Console.WriteLine("Default = Y  ");
            string displayErrMessage = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (displayErrMessage.Trim().ToLower() == "n" )
            {
                showErrorCallbackMessages = false;
                Console.WriteLine("ErrorCallback messages will NOT be displayed.");
            }
            else
            {
                showErrorCallbackMessages = true;
                Console.WriteLine("ErrorCallback messages will  be displayed");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER 1 FOR Subscribe");
            Console.WriteLine("ENTER 2 FOR Publish");
            Console.WriteLine("ENTER 3 FOR Presence");
            Console.WriteLine("ENTER 4 FOR Detailed History");
            Console.WriteLine("ENTER 5 FOR Here_Now");
            Console.WriteLine("ENTER 6 FOR Unsubscribe");
            Console.WriteLine("ENTER 7 FOR Presence-Unsubscribe");
            Console.WriteLine("ENTER 8 FOR Time");
            Console.WriteLine("ENTER 9 FOR Disconnect/Reconnect existing Subscriber(s) (when internet is available)");
            Console.WriteLine("ENTER 10 TO Disable Network Connection (no internet)");
            Console.WriteLine("ENTER 11 TO Enable Network Connection (yes internet)");
            Console.WriteLine("ENTER 99 FOR EXIT OR QUIT");

            bool exitFlag = false;
            string channel="";

            Console.WriteLine("");
            while (!exitFlag)
            {
                string userinput = Console.ReadLine();
                switch (userinput)
                {
                    case "99":
                        exitFlag = true;
                        pubnub.EndPendingRequests();
                        break;
                    case "1":
                        Console.WriteLine("Enter CHANNEL name for subscribe. Use comma to enter multiple channels.");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running subscribe()");
                        pubnub.Subscribe<string>(channel, DisplayReturnMessage, DisplayConnectStatusMessage, DisplayErrorMessage);

                        break;
                    case "2":
                        Console.WriteLine("Enter CHANNEL name for publish.");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();

                        /* TO TEST SMALL TEXT PUBLISH ONLY */
                        Console.WriteLine("Enter the message for publish and press ENTER key to submit");
                        //string publishMsg = Console.ReadLine();

                        /* UNCOMMENT THE FOLLOWING CODE BLOCK TO TEST LARGE TEXT PUBLISH ONLY */
                        #region Code To Test Large Text Publish
                        ConsoleKeyInfo enteredKey;
                        StringBuilder publishBuilder = new StringBuilder();
                        do
                        {
                            enteredKey = Console.ReadKey(); //This logic is being used to capture > 2K input in console window
                            if (enteredKey.Key != ConsoleKey.Enter)
                            {
                                publishBuilder.Append(enteredKey.KeyChar);
                            }
                        } while (enteredKey.Key != ConsoleKey.Enter);
                        string publishMsg = publishBuilder.ToString();
                        #endregion
                        
                        Console.WriteLine("Running publish()");

                        double doubleData;
                        int intData;
                        if (int.TryParse(publishMsg, out intData)) //capture numeric data
                        {
                            pubnub.Publish<string>(channel, intData, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else if (double.TryParse(publishMsg, out doubleData)) //capture numeric data
                        {
                            pubnub.Publish<string>(channel, doubleData, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else
                        {
                            //check whether any numeric is sent in double quotes
                            if (publishMsg.IndexOf("\"") == 0 && publishMsg.LastIndexOf("\"") == publishMsg.Length - 1)
                            {
                                string strMsg = publishMsg.Substring(1, publishMsg.Length - 2);
                                if (int.TryParse(strMsg, out intData))
                                {
                                    pubnub.Publish<string>(channel, strMsg, DisplayReturnMessage, DisplayErrorMessage);
                                }
                                else if (double.TryParse(strMsg, out doubleData))
                                {
                                    pubnub.Publish<string>(channel, strMsg, DisplayReturnMessage, DisplayErrorMessage);
                                }
                                else
                                {
                                    pubnub.Publish<string>(channel, publishMsg, DisplayReturnMessage, DisplayErrorMessage);
                                }
                            }
                            else
                            {
                                pubnub.Publish<string>(channel, publishMsg, DisplayReturnMessage, DisplayErrorMessage);
                            }
                        }
                        break;
                    case "3":
                        Console.WriteLine("Enter CHANNEL name for presence. Use comma to enter multiple channels.");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Presence Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running presence()");
                        pubnub.Presence<string>(channel, DisplayReturnMessage, DisplayConnectStatusMessage, DisplayErrorMessage);

                        break;
                    case "4":
                        Console.WriteLine("Enter CHANNEL name for Detailed History");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running detailed history()");
                        pubnub.DetailedHistory<string>(channel, 100, DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "5":
                        Console.WriteLine("Enter CHANNEL name for HereNow");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running Here_Now()");
                        pubnub.HereNow<string>(channel, DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "6":
                        Console.WriteLine("Enter CHANNEL name for Unsubscribe. Use comma to enter multiple channels.");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running unsubscribe()");
                        pubnub.Unsubscribe<string>(channel, DisplayReturnMessage, DisplayConnectStatusMessage, DisplayDisconnectStatusMessage, DisplayErrorMessage);
                        break;
                    case "7":
                        Console.WriteLine("Enter CHANNEL name for Presence Unsubscribe. Use comma to enter multiple channels.");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running presence-unsubscribe()");
                        pubnub.PresenceUnsubscribe<string>(channel, DisplayReturnMessage, DisplayConnectStatusMessage, DisplayDisconnectStatusMessage, DisplayErrorMessage);
                        break;
                    case "8":
                        Console.WriteLine("Running time()");
                        pubnub.Time<string>(DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "9":
                        Console.WriteLine("Running Disconnect/auto-Reconnect Subscriber Request Connection");
                        pubnub.TerminateCurrentSubscriberRequest();
                        break;
                    case "10":
                        Console.WriteLine("Disabling Network Connection (no internet)");
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Initiating Simulation of Internet non-availability");
                        Console.WriteLine("Until Choice=11 is entered, no operations will occur");
                        Console.WriteLine("NOTE: Publish from other pubnub clients can occur and those will be ");
                        Console.WriteLine("      captured upon choice=11 is entered provided resume on reconnect is enabled.");
                        Console.ResetColor();
                        pubnub.EnableSimulateNetworkFailForTestingOnly();
                        break;
                    case "11":
                        Console.WriteLine("Enabling Network Connection (yes internet)");
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Stopping Simulation of Internet non-availability");
                        Console.ResetColor();
                        pubnub.DisableSimulateNetworkFailForTestingOnly();
                        break;
                    default:
                        Console.WriteLine("INVALID CHOICE. ENTER 99 FOR EXIT OR QUIT");
                        break;
                }
            }

            Console.WriteLine("\nPress any key to exit.\n\n");
            Console.ReadLine();

        }
Esempio n. 13
0
        static public void Main()
        {
            PubnubProxy proxy = null;

            Console.WriteLine("HINT: TO TEST RE-CONNECT AND CATCH-UP,");
            Console.WriteLine("      DISCONNECT YOUR MACHINE FROM NETWORK/INTERNET AND ");
            Console.WriteLine("      RE-CONNECT YOUR MACHINE AFTER SOMETIME.");
            Console.WriteLine();
            Console.WriteLine("      IF NO NETWORK BEFORE MAX RE-TRY CONNECT,");
            Console.WriteLine("      NETWORK ERROR MESSAGE WILL BE SENT");
            Console.WriteLine();

            Console.WriteLine("ENTER Channel Name");
            channel = Console.ReadLine();

            Console.WriteLine(string.Format("Channel = {0}", channel));
            Console.WriteLine();

            Console.WriteLine("Enable SSL? ENTER Y for Yes, else N");
            string enableSSL = Console.ReadLine();

            if (enableSSL.Trim().ToLower() == "y")
            {
                Console.WriteLine("SSL Enabled");
            }
            else
            {
                Console.WriteLine("SSL NOT Enabled");
            }
            Console.WriteLine();

            Console.WriteLine("ENTER cipher key for encryption feature.");
            Console.WriteLine("If you don't want to avail at this time, press ENTER.");
            string cipheryKey = Console.ReadLine();

            if (cipheryKey.Trim().Length > 0)
            {
                Console.WriteLine("Cipher key provided.");
            }
            else
            {
                Console.WriteLine("No Cipher key provided");
            }
            Console.WriteLine();

            pubnub = new Pubnub("demo", "demo", "", cipheryKey,
                                (enableSSL.Trim().ToLower() == "y") ? true : false);

            Console.WriteLine("Use Custom Session UUID? ENTER Y for Yes, else N");
            string enableCustomUUID = Console.ReadLine();

            if (enableCustomUUID.Trim().ToLower() == "y")
            {
                Console.WriteLine("ENTER Session UUID.");
                string sessionUUID = Console.ReadLine();
                pubnub.SessionUUID = sessionUUID;
                Console.WriteLine("Accepted Custom Session UUID.");
            }
            else
            {
                Console.WriteLine("Default Session UUID opted.");
            }
            Console.WriteLine();


            Console.WriteLine("Proxy Server exists? ENTER Y for Yes, else N");
            string enableProxy = Console.ReadLine();

            if (enableProxy.Trim().ToLower() == "y")
            {
                bool proxyAccepted = false;
                while (!proxyAccepted)
                {
                    Console.WriteLine("ENTER proxy server name or IP.");
                    string proxyServer = Console.ReadLine();
                    Console.WriteLine("ENTER port number of proxy server.");
                    string proxyPort = Console.ReadLine();
                    int    port;
                    Int32.TryParse(proxyPort, out port);
                    Console.WriteLine("ENTER user name for proxy server authentication.");
                    string proxyUsername = Console.ReadLine();
                    Console.WriteLine("ENTER password for proxy server authentication.");
                    string proxyPassword = Console.ReadLine();

                    proxy               = new PubnubProxy();
                    proxy.ProxyServer   = proxyServer;
                    proxy.ProxyPort     = port;
                    proxy.ProxyUserName = proxyUsername;
                    proxy.ProxyPassword = proxyPassword;
                    try
                    {
                        pubnub.Proxy  = proxy;
                        proxyAccepted = true;
                        Console.WriteLine("Proxy details accepted");
                    }
                    catch (MissingFieldException mse)
                    {
                        Console.WriteLine(mse.Message);
                        Console.WriteLine("Please RE-ENTER Proxy Server details.");
                    }
                }
            }
            else
            {
                Console.WriteLine("No Proxy");
            }
            Console.WriteLine();


            Console.WriteLine("ENTER 1 FOR Subscribe (not implementing connectCallback)");
            Console.WriteLine("ENTER 2 FOR Subscribe (implementing connectCallback)");
            Console.WriteLine("ENTER 3 FOR Publish");
            Console.WriteLine("ENTER 4 FOR Presence");
            Console.WriteLine("ENTER 5 FOR Detailed History");
            Console.WriteLine("ENTER 6 FOR Here_Now");
            Console.WriteLine("ENTER 7 FOR Unsubscribe");
            Console.WriteLine("ENTER 8 FOR Presence-Unsubscribe");
            Console.WriteLine("ENTER 9 FOR Time");
            Console.WriteLine("ENTER 0 FOR EXIT OR QUIT");

            bool exitFlag = false;

            Console.WriteLine("");
            while (!exitFlag)
            {
                string userinput = Console.ReadLine();
                switch (userinput)
                {
                case "0":
                    exitFlag = true;
                    pubnub.EndPendingRequests();
                    break;

                case "1":
                    Console.WriteLine("Running subscribe() (not implementing connectCallback)");
                    pubnub.Subscribe <string>(channel, DisplayReturnMessage);
                    break;

                case "2":
                    Console.WriteLine("Running subscribe() (implementing connectCallback)");
                    pubnub.Subscribe <string>(channel, DisplayReturnMessage, DisplayConnectStatusMessage);
                    break;

                case "3":
                    Console.WriteLine("Running publish()");
                    Console.WriteLine("Enter the message for publish. To exit loop, enter QUIT");
                    string publishMsg = Console.ReadLine();
                    double doubleData;
                    int    intData;
                    if (int.TryParse(publishMsg, out intData))     //capture numeric data
                    {
                        pubnub.Publish <string>(channel, intData, DisplayReturnMessage);
                    }
                    else if (double.TryParse(publishMsg, out doubleData))     //capture numeric data
                    {
                        pubnub.Publish <string>(channel, doubleData, DisplayReturnMessage);
                    }
                    else
                    {
                        //check whether any numeric is sent in double quotes
                        if (publishMsg.IndexOf("\"") == 0 && publishMsg.LastIndexOf("\"") == publishMsg.Length - 1)
                        {
                            string strMsg = publishMsg.Substring(1, publishMsg.Length - 2);
                            if (int.TryParse(strMsg, out intData))
                            {
                                pubnub.Publish <string>(channel, strMsg, DisplayReturnMessage);
                            }
                            else if (double.TryParse(strMsg, out doubleData))
                            {
                                pubnub.Publish <string>(channel, strMsg, DisplayReturnMessage);
                            }
                            else
                            {
                                pubnub.Publish <string>(channel, publishMsg, DisplayReturnMessage);
                            }
                        }
                        else
                        {
                            pubnub.Publish <string>(channel, publishMsg, DisplayReturnMessage);
                        }
                    }
                    break;

                case "4":
                    Console.WriteLine("Running presence()");
                    pubnub.Presence <string>(channel, DisplayReturnMessage);
                    break;

                case "5":
                    Console.WriteLine("Running detailed history()");
                    pubnub.DetailedHistory <string>(channel, 100, DisplayReturnMessage);
                    break;

                case "6":
                    Console.WriteLine("Running Here_Now()");
                    pubnub.HereNow <string>(channel, DisplayReturnMessage);
                    break;

                case "7":
                    Console.WriteLine("Running unsubscribe()");
                    pubnub.Unsubscribe <string>(channel, DisplayReturnMessage);
                    break;

                case "8":
                    Console.WriteLine("Running presence-unsubscribe()");
                    pubnub.PresenceUnsubscribe <string>(channel, DisplayReturnMessage);
                    break;

                case "9":
                    Console.WriteLine("Running time()");
                    pubnub.Time <string>(DisplayReturnMessage);
                    break;

                default:
                    Console.WriteLine("INVALID CHOICE.");
                    break;
                }
            }

            Console.WriteLine("\nPress any key to exit.\n\n");
            Console.ReadLine();
        }
Esempio n. 14
0
        static public void Main()
        {
            AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;

            PubnubProxy proxy = null;
            
            Console.WriteLine("HINT: TO TEST RE-CONNECT AND CATCH-UP,");
            Console.WriteLine("      DISCONNECT YOUR MACHINE FROM NETWORK/INTERNET AND ");
            Console.WriteLine("      RE-CONNECT YOUR MACHINE AFTER SOMETIME.");
            Console.WriteLine();
            Console.WriteLine("      IF NO NETWORK BEFORE MAX RE-TRY CONNECT,");
            Console.WriteLine("      NETWORK ERROR MESSAGE WILL BE SENT");
            Console.WriteLine();

            Console.WriteLine("Enter Pubnub Origin. Default Origin = pubsub.pubnub.com");
            Console.WriteLine("If you want to accept default value, press ENTER.");
            string origin = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (origin.Trim() == "")
            {
                origin = "pubsub.pubnub.com";
                Console.WriteLine("Default Origin selected");
            }
            else
            {
                Console.WriteLine("Pubnub Origin Provided");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Enable SSL? ENTER Y for Yes, else N");
            string enableSSL = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (enableSSL.Trim().ToLower() == "y")
            {
                Console.WriteLine("SSL Enabled");
            }
            else
            {
                Console.WriteLine("SSL NOT Enabled");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER cipher key for encryption feature.");
            Console.WriteLine("If you don't want to avail at this time, press ENTER.");
            string cipherKey = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (cipherKey.Trim().Length > 0)
            {
                Console.WriteLine("Cipher key provided.");
            }
            else
            {
                Console.WriteLine("No Cipher key provided");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER subscribe key.");
            Console.WriteLine("If you want to accept default demo subscribe key, press ENTER.");
            string subscribeKey = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (subscribeKey.Trim().Length > 0)
            {
                Console.WriteLine("Subscribe key provided.");
            }
            else
            {
                Console.WriteLine("Default demo subscribe key provided");
                subscribeKey = "demo";
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER publish key.");
            Console.WriteLine("If you want to accept default demo publish key, press ENTER.");
            string publishKey = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (publishKey.Trim().Length > 0)
            {
                Console.WriteLine("Publish key provided.");
            }
            else
            {
                Console.WriteLine("Default demo publish key provided");
                publishKey = "demo";
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER secret key.");
            Console.WriteLine("If you don't want to avail at this time, press ENTER.");
            string secretKey = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (secretKey.Trim().Length > 0)
            {
                Console.WriteLine("Secret key provided.");
            }
            else
            {
                Console.WriteLine("No Secret key provided");
            }
            Console.ResetColor();
            Console.WriteLine();
            pubnub = new Pubnub(publishKey, subscribeKey, secretKey, cipherKey,
                (enableSSL.Trim().ToLower() == "y") ? true : false);

            pubnub.Origin = origin;

            Console.WriteLine("Use Custom Session UUID? ENTER Y for Yes, else N");
            string enableCustomUUID = Console.ReadLine();
            if (enableCustomUUID.Trim().ToLower() == "y")
            {
                Console.WriteLine("ENTER Session UUID.");
                string sessionUUID = Console.ReadLine();
                pubnub.SessionUUID = sessionUUID;
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("Accepted Custom Session UUID.");
                Console.ResetColor();
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("Default Session UUID opted.");
                Console.ResetColor();
            }
            Console.WriteLine();

            Console.WriteLine("By default Resume On Reconnect is enabled. Do you want to disable it? ENTER Y for Yes, else N");
            string disableResumeOnReconnect = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (disableResumeOnReconnect.Trim().ToLower() == "y")
            {
                Console.WriteLine("Resume On Reconnect Disabled");
                pubnub.EnableResumeOnReconnect = false;
            }
            else
            {
                Console.WriteLine("Resume On Reconnect Enabled by default");
                pubnub.EnableResumeOnReconnect = true;
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Subscribe Timeout = 310 seconds (default). Enter the value to change, else press ENTER");
            string subscribeTimeoutEntry = Console.ReadLine();
            int subscribeTimeout;
            Int32.TryParse(subscribeTimeoutEntry, out subscribeTimeout);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (subscribeTimeout > 0)
            {
                Console.WriteLine("Subscribe Timeout = {0}",subscribeTimeout);
                pubnub.SubscribeTimeout = subscribeTimeout;
            }
            else
            {
                Console.WriteLine("Subscribe Timeout = {0} (default)", pubnub.SubscribeTimeout);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Non Subscribe Timeout = 15 seconds (default). Enter the value to change, else press ENTER");
            string nonSubscribeTimeoutEntry = Console.ReadLine();
            int nonSubscribeTimeout;
            Int32.TryParse(nonSubscribeTimeoutEntry, out nonSubscribeTimeout);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (nonSubscribeTimeout > 0)
            {
                Console.WriteLine("Non Subscribe Timeout = {0}", nonSubscribeTimeout);
                pubnub.NonSubscribeTimeout = nonSubscribeTimeout;
            }
            else
            {
                Console.WriteLine("Non Subscribe Timeout = {0} (default)", pubnub.NonSubscribeTimeout);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Network Check MAX retries = 50 (default). Enter the value to change, else press ENTER");
            string networkCheckMaxRetriesEntry = Console.ReadLine();
            int networkCheckMaxRetries;
            Int32.TryParse(networkCheckMaxRetriesEntry, out networkCheckMaxRetries);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (networkCheckMaxRetries > 0)
            {
                Console.WriteLine("Network Check MAX retries = {0}", networkCheckMaxRetries);
                pubnub.NetworkCheckMaxRetries = networkCheckMaxRetries;
            }
            else
            {
                Console.WriteLine("Network Check MAX retries = {0} (default)", pubnub.NetworkCheckMaxRetries);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Network Check Retry Interval = 10 seconds (default). Enter the value to change, else press ENTER");
            string networkCheckRetryIntervalEntry = Console.ReadLine();
            int networkCheckRetryInterval;
            Int32.TryParse(networkCheckRetryIntervalEntry, out networkCheckRetryInterval);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (networkCheckRetryInterval > 0)
            {
                Console.WriteLine("Network Check Retry Interval = {0} seconds", networkCheckRetryInterval);
                pubnub.NetworkCheckRetryInterval = networkCheckRetryInterval;
            }
            else
            {
                Console.WriteLine("Network Check Retry Interval = {0} seconds (default)", pubnub.NetworkCheckRetryInterval);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Heartbeat Interval = 15 seconds (default). Enter the value to change, else press ENTER");
            string heartbeatIntervalEntry = Console.ReadLine();
            int heartbeatInterval;
            Int32.TryParse(heartbeatIntervalEntry, out heartbeatInterval);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (heartbeatInterval > 0)
            {
                Console.WriteLine("Heartbeat Interval = {0} seconds", heartbeatInterval);
                pubnub.HeartbeatInterval = heartbeatInterval;
            }
            else
            {
                Console.WriteLine("Heartbeat Interval = {0} seconds (default)", pubnub.HeartbeatInterval);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("HTTP Proxy Server with NTLM authentication(IP + username/pwd) exists? ENTER Y for Yes, else N");
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("NOTE: Pubnub example is being tested with CCProxy 7.3 Demo version");
            Console.ResetColor();
            string enableProxy = Console.ReadLine();
            if (enableProxy.Trim().ToLower() == "y")
            {
                bool proxyAccepted = false;
                while (!proxyAccepted)
                {
                    Console.WriteLine("ENTER proxy server name or IP.");
                    string proxyServer = Console.ReadLine();
                    Console.WriteLine("ENTER port number of proxy server.");
                    string proxyPort = Console.ReadLine();
                    int port;
                    Int32.TryParse(proxyPort, out port);
                    Console.WriteLine("ENTER user name for proxy server authentication.");
                    string proxyUsername = Console.ReadLine();
                    Console.WriteLine("ENTER password for proxy server authentication.");
                    string proxyPassword = Console.ReadLine();
                    
                    proxy = new PubnubProxy();
                    proxy.ProxyServer = proxyServer;
                    proxy.ProxyPort = port;
                    proxy.ProxyUserName = proxyUsername;
                    proxy.ProxyPassword = proxyPassword;
                    Console.ForegroundColor = ConsoleColor.Blue;
                    try
                    {
                        pubnub.Proxy = proxy;
                        proxyAccepted = true;
                        Console.WriteLine("Proxy details accepted");
                        Console.ResetColor();
                    }
                    catch (MissingFieldException mse)
                    {
                        Console.WriteLine(mse.Message);
                        Console.WriteLine("Please RE-ENTER Proxy Server details.");
                    }
                    Console.ResetColor();
                }
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("No Proxy");
                Console.ResetColor();
            }
            Console.WriteLine();

            Console.WriteLine("Enter Auth Key. If you don't want to use Auth Key, Press ENTER Key");
            authKey = Console.ReadLine();
            pubnub.AuthenticationKey = authKey;

            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine(string.Format("Auth Key = {0}", authKey));
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Display ErrorCallback messages? Enter Y for Yes, Else N for No.");
            Console.WriteLine("Default = N  ");
            string displayErrMessage = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (displayErrMessage.Trim().ToLower() == "y" )
            {
                showErrorMessageSegments = true;
                Console.WriteLine("ErrorCallback messages will  be displayed");
            }
            else
            {
                showErrorMessageSegments = false;
                Console.WriteLine("ErrorCallback messages will NOT be displayed.");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Display Debug Info in ErrorCallback messages? Enter Y for Yes, Else N for No.");
            Console.WriteLine("Default = Y  ");
            string debugMessage = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            if (debugMessage.Trim().ToLower() == "n")
            {
                showDebugMessages = false;
                Console.WriteLine("ErrorCallback messages will NOT  be displayed");
            }
            else
            {
                showDebugMessages = true;
                Console.WriteLine("Debug messages will be displayed.");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER 1 FOR Subscribe");
            Console.WriteLine("ENTER 2 FOR Publish");
            Console.WriteLine("ENTER 3 FOR Presence");
            Console.WriteLine("ENTER 4 FOR Detailed History");
            Console.WriteLine("ENTER 5 FOR Here_Now");
            Console.WriteLine("ENTER 6 FOR Unsubscribe");
            Console.WriteLine("ENTER 7 FOR Presence-Unsubscribe");
            Console.WriteLine("ENTER 8 FOR Time");
            Console.WriteLine("ENTER 9 FOR Disconnect/Reconnect existing Subscriber(s) (when internet is available)");
            Console.WriteLine("ENTER 10 TO Disable Network Connection (no internet)");
            Console.WriteLine("ENTER 11 TO Enable Network Connection (yes internet)");
            Console.WriteLine("ENTER 12 FOR Grant Access");
            Console.WriteLine("ENTER 13 FOR Audit Access");
            Console.WriteLine("ENTER 14 FOR Revoke Access");
            Console.WriteLine("ENTER 15 FOR Grant Access for Presence Channel");
            Console.WriteLine("ENTER 16 FOR Audit Access for Presence Channel");
            Console.WriteLine("ENTER 17 FOR Revoke Access for Presence Channel");
            Console.WriteLine("ENTER 18 FOR Change/Update Auth Key");
            Console.WriteLine("ENTER 19 TO Simulate Machine Sleep Mode");
            Console.WriteLine("ENTER 20 TO Simulate Machine Awake Mode");
            Console.WriteLine("ENTER 99 FOR EXIT OR QUIT");

            bool exitFlag = false;
            string channel="";

            Console.WriteLine("");
            while (!exitFlag)
            {
                string userinput = Console.ReadLine();
                if (userinput.ToLower() == "show debug on")
                {
                    showDebugMessages = true;
                    continue;
                }
                else if (userinput.ToLower() == "show debug off")
                {
                    showDebugMessages = false;
                    continue;
                }
                switch (userinput)
                {
                    case "99":
                        exitFlag = true;
                        pubnub.EndPendingRequests();
                        break;
                    case "1":
                        Console.WriteLine("Enter CHANNEL name for subscribe. Use comma to enter multiple channels.");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running subscribe()");
                        pubnub.Subscribe<string>(channel, DisplaySubscribeReturnMessage, DisplaySubscribeConnectStatusMessage, DisplayErrorMessage);
                    //pubnub.Subscribe<object>(channel, (object o)=> {DisplayReturnMessage(o);}, (object o)=> {DisplayReturnMessage(o);}, DisplayErrorMessage);

                        break;
                    case "2":
                        Console.WriteLine("Enter CHANNEL name for publish.");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();

                        /* TO TEST SMALL TEXT PUBLISH ONLY */
                        Console.WriteLine("Enter the message for publish and press ENTER key to submit");
                        //string publishMsg = Console.ReadLine();

                        /* UNCOMMENT THE FOLLOWING CODE BLOCK TO TEST LARGE TEXT PUBLISH ONLY */
                        #region Code To Test Large Text Publish
                        ConsoleKeyInfo enteredKey;
                        StringBuilder publishBuilder = new StringBuilder();
                        do
                        {
                            enteredKey = Console.ReadKey(); //This logic is being used to capture > 2K input in console window
                            if (enteredKey.Key != ConsoleKey.Enter)
                            {
                                publishBuilder.Append(enteredKey.KeyChar);
                            }
                        } while (enteredKey.Key != ConsoleKey.Enter);
                        string publishMsg = publishBuilder.ToString();
                        #endregion
                        
                        Console.WriteLine("Running publish()");

                        double doubleData;
                        int intData;
                        if (int.TryParse(publishMsg, out intData)) //capture numeric data
                        {
                            pubnub.Publish<string>(channel, intData, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else if (double.TryParse(publishMsg, out doubleData)) //capture numeric data
                        {
                            pubnub.Publish<string>(channel, doubleData, DisplayReturnMessage, DisplayErrorMessage);
                        }
                        else
                        {
                            //check whether any numeric is sent in double quotes
                            if (publishMsg.IndexOf("\"") == 0 && publishMsg.LastIndexOf("\"") == publishMsg.Length - 1)
                            {
                                string strMsg = publishMsg.Substring(1, publishMsg.Length - 2);
                                if (int.TryParse(strMsg, out intData))
                                {
                                    pubnub.Publish<string>(channel, strMsg, DisplayReturnMessage, DisplayErrorMessage);
                                }
                                else if (double.TryParse(strMsg, out doubleData))
                                {
                                    pubnub.Publish<string>(channel, strMsg, DisplayReturnMessage, DisplayErrorMessage);
                                }
                                else
                                {
                                    pubnub.Publish<string>(channel, publishMsg, DisplayReturnMessage, DisplayErrorMessage);
                                }
                            }
                            else
                            {
                                pubnub.Publish<string>(channel, publishMsg, DisplayReturnMessage, DisplayErrorMessage);
                            }
                        }
                        break;
                    case "3":
                        Console.WriteLine("Enter CHANNEL name for presence. Use comma to enter multiple channels.");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Presence Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running presence()");
                        pubnub.Presence<string>(channel, DisplayPresenceReturnMessage, DisplayPresenceConnectStatusMessage, DisplayErrorMessage);

                        break;
                    case "4":
                        Console.WriteLine("Enter CHANNEL name for Detailed History");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running detailed history()");
                        pubnub.DetailedHistory<string>(channel, 100, DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "5":
                        Console.WriteLine("Enter CHANNEL name for HereNow");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running Here_Now()");
                        pubnub.HereNow<string>(channel, DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "6":
                        Console.WriteLine("Enter CHANNEL name for Unsubscribe. Use comma to enter multiple channels.");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running unsubscribe()");
                        pubnub.Unsubscribe<string>(channel, DisplayReturnMessage, DisplaySubscribeConnectStatusMessage, DisplaySubscribeDisconnectStatusMessage, DisplayErrorMessage);
                    /*pubnub.Unsubscribe<object>(channel, (object o) => {}
                    , (object o) => {}, (object o) => {}, (PubnubClientError e) => {});*/
                        break;
                    case "7":
                        Console.WriteLine("Enter CHANNEL name for Presence Unsubscribe. Use comma to enter multiple channels.");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running presence-unsubscribe()");
                        pubnub.PresenceUnsubscribe<string>(channel, DisplayReturnMessage, DisplayPresenceConnectStatusMessage, DisplayPresenceDisconnectStatusMessage, DisplayErrorMessage);
                        break;
                    case "8":
                        Console.WriteLine("Running time()");
                        pubnub.Time<string>(DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "9":
                        Console.WriteLine("Running Disconnect/auto-Reconnect Subscriber Request Connection");
                        pubnub.TerminateCurrentSubscriberRequest();
                        break;
                    case "10":
                        Console.WriteLine("Disabling Network Connection (no internet)");
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Initiating Simulation of Internet non-availability");
                        Console.WriteLine("Until Choice=11 is entered, no operations will occur");
                        Console.WriteLine("NOTE: Publish from other pubnub clients can occur and those will be ");
                        Console.WriteLine("      captured upon choice=11 is entered provided resume on reconnect is enabled.");
                        Console.ResetColor();
                        pubnub.EnableSimulateNetworkFailForTestingOnly();
                        break;
                    case "11":
                        Console.WriteLine("Enabling Network Connection (yes internet)");
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Stopping Simulation of Internet non-availability");  
                        Console.ResetColor();
                        pubnub.DisableSimulateNetworkFailForTestingOnly();
                        break;
                    case "12":
                        Console.WriteLine("Enter CHANNEL name for PAM Grant. For Presence, Select Option 15.");
                        channel = Console.ReadLine();
                        Console.WriteLine("Read Access? Enter Y for Yes (default), N for No.");
                        string readAccess = Console.ReadLine();
                        bool read = (readAccess.ToLower() == "n") ? false : true;
                        Console.WriteLine("Write Access? Enter Y for Yes (default), N for No.");
                        string writeAccess = Console.ReadLine();
                        bool write = (writeAccess.ToLower() == "n") ? false : true;
                        Console.WriteLine("How many minutes do you want to allow Grant Access? Enter the number of minutes.");
                        Console.WriteLine("Default = 1440 minutes (24 hours). Press ENTER now to accept default value.");
                        string grantTimeLimit = Console.ReadLine();
                        int grantTimeLimitInSeconds;
                        Int32.TryParse(grantTimeLimit, out grantTimeLimitInSeconds);
                        if (grantTimeLimitInSeconds == 0) grantTimeLimitInSeconds = 1440;

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}",channel));
                        Console.WriteLine(string.Format("Read Access = {0}", read.ToString()));
                        Console.WriteLine(string.Format("Write Access = {0}", write.ToString()));
                        Console.WriteLine(string.Format("Grant Access Time Limit = {0}", grantTimeLimitInSeconds.ToString()));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running PamGrant()");
                        pubnub.GrantAccess<string>(channel, read, write, grantTimeLimitInSeconds, DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "13":
                        Console.WriteLine("Enter CHANNEL name for PAM Audit");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}", channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running PamAudit()");
                        pubnub.AuditAccess<string>(channel,DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "14":
                        Console.WriteLine("Enter CHANNEL name for PAM Revoke");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}", channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running PamRevoke()");
                        pubnub.GrantAccess<string>(channel, false,false, DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "15":
                        Console.WriteLine("Enter CHANNEL name for PAM Grant Presence.");
                        channel = Console.ReadLine();
                        Console.WriteLine("Read Access? Enter Y for Yes (default), N for No.");
                        string readPresenceAccess = Console.ReadLine();
                        bool readPresence = (readPresenceAccess.ToLower() == "n") ? false : true;
                        Console.WriteLine("Write Access? Enter Y for Yes (default), N for No.");
                        string writePresenceAccess = Console.ReadLine();
                        bool writePresence = (writePresenceAccess.ToLower() == "n") ? false : true;
                        Console.WriteLine("How many minutes do you want to allow Grant Presence Access? Enter the number of minutes.");
                        Console.WriteLine("Default = 1440 minutes (24 hours). Press ENTER now to accept default value.");
                        string grantPresenceTimeLimit = Console.ReadLine();
                        int grantPresenceTimeLimitInSeconds;
                        Int32.TryParse(grantPresenceTimeLimit, out grantPresenceTimeLimitInSeconds);
                        if (grantPresenceTimeLimitInSeconds == 0) grantTimeLimitInSeconds = 1440;

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}", channel));
                        Console.WriteLine(string.Format("Read Access = {0}", readPresence.ToString()));
                        Console.WriteLine(string.Format("Write Access = {0}", writePresence.ToString()));
                        Console.WriteLine(string.Format("Grant Access Time Limit = {0}", grantPresenceTimeLimitInSeconds.ToString()));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running PAM GrantPresenceAccess()");
                        pubnub.GrantPresenceAccess<string>(channel, readPresence, writePresence, grantPresenceTimeLimitInSeconds, DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "16":
                        Console.WriteLine("Enter CHANNEL name for PAM Presence Audit");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}", channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running PAM Presence Audit()");
                        pubnub.AuditPresenceAccess<string>(channel, DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "17":
                        Console.WriteLine("Enter CHANNEL name for PAM Presence Revoke");
                        channel = Console.ReadLine();

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Channel = {0}", channel));
                        Console.ResetColor();
                        Console.WriteLine();

                        Console.WriteLine("Running PAM Presence Revoke()");
                        pubnub.GrantPresenceAccess<string>(channel, false, false, DisplayReturnMessage, DisplayErrorMessage);
                        break;
                    case "18":
                        Console.WriteLine("Enter Auth Key. Use comma to enter multiple Auth Keys.");
                        Console.WriteLine("If you don't want to use Auth Key, Press ENTER Key");
                        authKey = Console.ReadLine();
                        pubnub.AuthenticationKey = authKey;

                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine(string.Format("Auth Key(s) = {0}", authKey));
                        Console.ResetColor();
                        Console.WriteLine();

                        break;
                    case "19":
                        Console.WriteLine("Enabling simulation of Sleep/Suspend Mode");  
                        pubnub.EnableMachineSleepModeForTestingOnly();
                        Console.ForegroundColor = ConsoleColor.Red;  
                        Console.WriteLine("Machine Sleep Mode simulation activated");
                        Console.ResetColor();  
                        break;
                    case "20":
                        Console.WriteLine("Disabling simulation of Sleep/Suspend Mode");  
                        pubnub.DisableMachineSleepModeForTestingOnly();
                        Console.ForegroundColor = ConsoleColor.Red;  
                        Console.WriteLine("Simulation going to awake mode");  
                        Console.ResetColor();  
                        break;
                    default:
                        Console.WriteLine("INVALID CHOICE. ENTER 99 FOR EXIT OR QUIT");
                        break;
                }
            }

            Console.WriteLine("\nPress any key to exit.\n\n");
            Console.ReadLine();

        }
Esempio n. 15
0
        static public void Main()
        {
            PubnubProxy proxy = null;

            Console.WriteLine("HINT: TO TEST RE-CONNECT AND CATCH-UP,");
            Console.WriteLine("      DISCONNECT YOUR MACHINE FROM NETWORK/INTERNET AND ");
            Console.WriteLine("      RE-CONNECT YOUR MACHINE AFTER SOMETIME.");
            Console.WriteLine();
            Console.WriteLine("      IF NO NETWORK BEFORE MAX RE-TRY CONNECT,");
            Console.WriteLine("      NETWORK ERROR MESSAGE WILL BE SENT");
            Console.WriteLine();

            Console.WriteLine("Enable SSL? ENTER Y for Yes, else N");
            string enableSSL = Console.ReadLine();

            Console.ForegroundColor = ConsoleColor.Blue;
            if (enableSSL.Trim().ToLower() == "y")
            {
                Console.WriteLine("SSL Enabled");
            }
            else
            {
                Console.WriteLine("SSL NOT Enabled");
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("ENTER cipher key for encryption feature.");
            Console.WriteLine("If you don't want to avail at this time, press ENTER.");
            string cipheryKey = Console.ReadLine();

            Console.ForegroundColor = ConsoleColor.Blue;
            if (cipheryKey.Trim().Length > 0)
            {
                Console.WriteLine("Cipher key provided.");
            }
            else
            {
                Console.WriteLine("No Cipher key provided");
            }
            Console.ResetColor();
            Console.WriteLine();

            pubnub = new Pubnub("demo", "demo", "", cipheryKey,
                                (enableSSL.Trim().ToLower() == "y") ? true : false);

            Console.WriteLine("Use Custom Session UUID? ENTER Y for Yes, else N");
            string enableCustomUUID = Console.ReadLine();

            if (enableCustomUUID.Trim().ToLower() == "y")
            {
                Console.WriteLine("ENTER Session UUID.");
                string sessionUUID = Console.ReadLine();
                pubnub.SessionUUID      = sessionUUID;
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("Accepted Custom Session UUID.");
                Console.ResetColor();
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("Default Session UUID opted.");
                Console.ResetColor();
            }
            Console.WriteLine();

            Console.WriteLine("By default Resume On Reconnect is enabled. Do you want to disable it? ENTER Y for Yes, else N");
            string disableResumeOnReconnect = Console.ReadLine();

            Console.ForegroundColor = ConsoleColor.Blue;
            if (disableResumeOnReconnect.Trim().ToLower() == "y")
            {
                Console.WriteLine("Resume On Reconnect Disabled");
                pubnub.EnableResumeOnReconnect = false;
            }
            else
            {
                Console.WriteLine("Resume On Reconnect Enabled by default");
                pubnub.EnableResumeOnReconnect = true;
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Subscribe Timeout = 310 seconds (default). Enter the value to change, else press ENTER");
            string subscribeTimeoutEntry = Console.ReadLine();
            int    subscribeTimeout;

            Int32.TryParse(subscribeTimeoutEntry, out subscribeTimeout);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (subscribeTimeout > 0)
            {
                Console.WriteLine("Subscribe Timeout = {0}", subscribeTimeout);
                pubnub.SubscribeTimeout = subscribeTimeout;
            }
            else
            {
                Console.WriteLine("Subscribe Timeout = {0} (default)", pubnub.SubscribeTimeout);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Non Subscribe Timeout = 15 seconds (default). Enter the value to change, else press ENTER");
            string nonSubscribeTimeoutEntry = Console.ReadLine();
            int    nonSubscribeTimeout;

            Int32.TryParse(nonSubscribeTimeoutEntry, out nonSubscribeTimeout);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (nonSubscribeTimeout > 0)
            {
                Console.WriteLine("Non Subscribe Timeout = {0}", nonSubscribeTimeout);
                pubnub.NonSubscribeTimeout = nonSubscribeTimeout;
            }
            else
            {
                Console.WriteLine("Non Subscribe Timeout = {0} (default)", pubnub.NonSubscribeTimeout);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Network Check MAX retries = 50 (default). Enter the value to change, else press ENTER");
            string networkCheckMaxRetriesEntry = Console.ReadLine();
            int    networkCheckMaxRetries;

            Int32.TryParse(networkCheckMaxRetriesEntry, out networkCheckMaxRetries);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (networkCheckMaxRetries > 0)
            {
                Console.WriteLine("Network Check MAX retries = {0}", networkCheckMaxRetries);
                pubnub.NetworkCheckMaxRetries = networkCheckMaxRetries;
            }
            else
            {
                Console.WriteLine("Network Check MAX retries = {0} (default)", pubnub.NetworkCheckMaxRetries);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Network Check Retry Interval = 10 seconds (default). Enter the value to change, else press ENTER");
            string networkCheckRetryIntervalEntry = Console.ReadLine();
            int    networkCheckRetryInterval;

            Int32.TryParse(networkCheckRetryIntervalEntry, out networkCheckRetryInterval);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (networkCheckRetryInterval > 0)
            {
                Console.WriteLine("Network Check Retry Interval = {0} seconds", networkCheckRetryInterval);
                pubnub.NetworkCheckRetryInterval = networkCheckRetryInterval;
            }
            else
            {
                Console.WriteLine("Network Check Retry Interval = {0} seconds (default)", pubnub.NetworkCheckRetryInterval);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("Heartbeat Interval = 15 seconds (default). Enter the value to change, else press ENTER");
            string heartbeatIntervalEntry = Console.ReadLine();
            int    heartbeatInterval;

            Int32.TryParse(heartbeatIntervalEntry, out heartbeatInterval);
            Console.ForegroundColor = ConsoleColor.Blue;
            if (heartbeatInterval > 0)
            {
                Console.WriteLine("Heartbeat Interval = {0} seconds", heartbeatInterval);
                pubnub.HeartbeatInterval = heartbeatInterval;
            }
            else
            {
                Console.WriteLine("Heartbeat Interval = {0} seconds (default)", pubnub.HeartbeatInterval);
            }
            Console.ResetColor();
            Console.WriteLine();

            Console.WriteLine("HTTP Proxy Server with NTLM authentication(IP + username/pwd) exists? ENTER Y for Yes, else N");
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("NOTE: Pubnub example is being tested with CCProxy 7.3 Demo version");
            Console.ResetColor();
            string enableProxy = Console.ReadLine();

            if (enableProxy.Trim().ToLower() == "y")
            {
                bool proxyAccepted = false;
                while (!proxyAccepted)
                {
                    Console.WriteLine("ENTER proxy server name or IP.");
                    string proxyServer = Console.ReadLine();
                    Console.WriteLine("ENTER port number of proxy server.");
                    string proxyPort = Console.ReadLine();
                    int    port;
                    Int32.TryParse(proxyPort, out port);
                    Console.WriteLine("ENTER user name for proxy server authentication.");
                    string proxyUsername = Console.ReadLine();
                    Console.WriteLine("ENTER password for proxy server authentication.");
                    string proxyPassword = Console.ReadLine();

                    proxy                   = new PubnubProxy();
                    proxy.ProxyServer       = proxyServer;
                    proxy.ProxyPort         = port;
                    proxy.ProxyUserName     = proxyUsername;
                    proxy.ProxyPassword     = proxyPassword;
                    Console.ForegroundColor = ConsoleColor.Blue;
                    try
                    {
                        pubnub.Proxy  = proxy;
                        proxyAccepted = true;
                        Console.WriteLine("Proxy details accepted");
                        Console.ResetColor();
                    }
                    catch (MissingFieldException mse)
                    {
                        Console.WriteLine(mse.Message);
                        Console.WriteLine("Please RE-ENTER Proxy Server details.");
                    }
                    Console.ResetColor();
                }
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("No Proxy");
                Console.ResetColor();
            }
            Console.WriteLine();

            Console.WriteLine("ENTER 1 FOR Subscribe");
            Console.WriteLine("ENTER 2 FOR Publish");
            Console.WriteLine("ENTER 3 FOR Presence");
            Console.WriteLine("ENTER 4 FOR Detailed History");
            Console.WriteLine("ENTER 5 FOR Here_Now");
            Console.WriteLine("ENTER 6 FOR Unsubscribe");
            Console.WriteLine("ENTER 7 FOR Presence-Unsubscribe");
            Console.WriteLine("ENTER 8 FOR Time");
            Console.WriteLine("ENTER 9 FOR Disconnect/Reconnect existing Subscriber(s) (when internet is available)");
            Console.WriteLine("ENTER 10 TO Disable Network Connection (no internet)");
            Console.WriteLine("ENTER 11 TO Enable Network Connection (yes internet)");
            Console.WriteLine("ENTER 99 FOR EXIT OR QUIT");

            bool   exitFlag = false;
            string channel  = "";

            Console.WriteLine("");
            while (!exitFlag)
            {
                string userinput = Console.ReadLine();
                switch (userinput)
                {
                case "99":
                    exitFlag = true;
                    pubnub.EndPendingRequests();
                    break;

                case "1":
                    Console.WriteLine("Enter CHANNEL name for subscribe. Use comma to enter multiple channels.");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running subscribe()");
                    pubnub.Subscribe <string>(channel, DisplayReturnMessage, DisplayConnectStatusMessage);

                    break;

                case "2":
                    Console.WriteLine("Enter CHANNEL name for publish.");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();

                    Console.WriteLine("Enter the message for publish and press ENTER key to submit");

                    ConsoleKeyInfo enteredKey;
                    StringBuilder  publishBuilder = new StringBuilder();
                    do
                    {
                        enteredKey = Console.ReadKey();     //This logic is being used to capture > 2K input in console window
                        if (enteredKey.Key != ConsoleKey.Enter)
                        {
                            publishBuilder.Append(enteredKey.KeyChar);
                        }
                    } while (enteredKey.Key != ConsoleKey.Enter);

                    string publishMsg = publishBuilder.ToString();


                    Console.WriteLine("Running publish()");

                    double doubleData;
                    int    intData;
                    if (int.TryParse(publishMsg, out intData))     //capture numeric data
                    {
                        pubnub.Publish <string>(channel, intData, DisplayReturnMessage);
                    }
                    else if (double.TryParse(publishMsg, out doubleData))     //capture numeric data
                    {
                        pubnub.Publish <string>(channel, doubleData, DisplayReturnMessage);
                    }
                    else
                    {
                        //check whether any numeric is sent in double quotes
                        if (publishMsg.IndexOf("\"") == 0 && publishMsg.LastIndexOf("\"") == publishMsg.Length - 1)
                        {
                            string strMsg = publishMsg.Substring(1, publishMsg.Length - 2);
                            if (int.TryParse(strMsg, out intData))
                            {
                                pubnub.Publish <string>(channel, strMsg, DisplayReturnMessage);
                            }
                            else if (double.TryParse(strMsg, out doubleData))
                            {
                                pubnub.Publish <string>(channel, strMsg, DisplayReturnMessage);
                            }
                            else
                            {
                                pubnub.Publish <string>(channel, publishMsg, DisplayReturnMessage);
                            }
                        }
                        else
                        {
                            pubnub.Publish <string>(channel, publishMsg, DisplayReturnMessage);
                        }
                    }
                    break;

                case "3":
                    Console.WriteLine("Enter CHANNEL name for presence. Use comma to enter multiple channels.");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Presence Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running presence()");
                    pubnub.Presence <string>(channel, DisplayReturnMessage, DisplayConnectStatusMessage);

                    break;

                case "4":
                    Console.WriteLine("Enter CHANNEL name for Detailed History");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running detailed history()");
                    pubnub.DetailedHistory <string>(channel, 100, DisplayReturnMessage);
                    break;

                case "5":
                    Console.WriteLine("Enter CHANNEL name for HereNow");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running Here_Now()");
                    pubnub.HereNow <string>(channel, DisplayReturnMessage);
                    break;

                case "6":
                    Console.WriteLine("Enter CHANNEL name for Unsubscribe. Use comma to enter multiple channels.");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running unsubscribe()");
                    pubnub.Unsubscribe <string>(channel, DisplayReturnMessage, DisplayConnectStatusMessage, DisplayDisconnectStatusMessage);
                    break;

                case "7":
                    Console.WriteLine("Enter CHANNEL name for Presence Unsubscribe. Use comma to enter multiple channels.");
                    channel = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(string.Format("Channel = {0}", channel));
                    Console.ResetColor();
                    Console.WriteLine();

                    Console.WriteLine("Running presence-unsubscribe()");
                    pubnub.PresenceUnsubscribe <string>(channel, DisplayReturnMessage, DisplayConnectStatusMessage, DisplayDisconnectStatusMessage);
                    break;

                case "8":
                    Console.WriteLine("Running time()");
                    pubnub.Time <string>(DisplayReturnMessage);
                    break;

                case "9":
                    Console.WriteLine("Running Disconnect/auto-Reconnect Subscriber Request Connection");
                    pubnub.TerminateCurrentSubscriberRequest();
                    break;

                case "10":
                    Console.WriteLine("Disabling Network Connection (no internet)");
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Initiating Simulation of Internet non-availability");
                    Console.WriteLine("Until Choice=11 is entered, no operations will occur");
                    Console.WriteLine("NOTE: Publish from other pubnub clients can occur and those will be ");
                    Console.WriteLine("      captured upon choice=11 is entered provided resume on reconnect is enabled.");
                    Console.ResetColor();
                    pubnub.EnableSimulateNetworkFailForTestingOnly();
                    break;

                case "11":
                    Console.WriteLine("Enabling Network Connection (yes internet)");
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Stopping Simulation of Internet non-availability");
                    Console.ResetColor();
                    pubnub.DisableSimulateNetworkFailForTestingOnly();
                    break;

                default:
                    Console.WriteLine("INVALID CHOICE. ENTER 99 FOR EXIT OR QUIT");
                    break;
                }
            }

            Console.WriteLine("\nPress any key to exit.\n\n");
            Console.ReadLine();
        }
Esempio n. 16
0
		public Pubnub_MessagingMain () : base (UITableViewStyle.Grouped, null)
		{
			PubnubProxy proxy =  null;
			Pubnub pubnub = null;

			EntryElement entryChannelName = new EntryElement("Channel Name", "Enter Channel Name", "");
			EntryElement entryCipher = new EntryElement("Cipher", "Enter Cipher", "");

			EntryElement entryProxyServer = new EntryElement("Server", "Enter Server", "");
			EntryElement entryProxyPort = new EntryElement("Port", "Enter Port", "");

			EntryElement entryProxyUser = new EntryElement("Username", "Enter Username", "");
			EntryElement entryProxyPassword = new EntryElement("Password", "Enter Password", "", true);

			BooleanElement proxyEnabled = new BooleanElement ("Proxy", false);

			BooleanElement sslEnabled = new BooleanElement ("Enable SSL", false);
			Root = new RootElement ("Pubnub Messaging") {
				new Section ("Basic Settings")
				{
					entryChannelName,
					sslEnabled
				},
				new Section ("Enter cipher key for encryption. Leave blank for unencrypted transfer.")
				{
					entryCipher
				},
				new Section()
				{
					new RootElement ("Proxy Settings", 0, 0){
						new Section (){
							proxyEnabled
						},
						new Section ("Configuration"){
							entryProxyServer,
							entryProxyPort,
							entryProxyUser,
							entryProxyPassword
						},
					}
				},
				new Section()
				{
					new StyledStringElement ("Launch", () => {
						bool errorFree = true;
						if(String.IsNullOrWhiteSpace (entryChannelName.Value.Trim()))
						{
							errorFree = false;
							new UIAlertView ("Error!", "Please enter a channel name", null, "OK").Show (); 
						}

						if(errorFree)
						{
							pubnub = new Pubnub ("demo", "demo", "", entryCipher.Value, sslEnabled.Value);
						}

						if ((errorFree) && (proxyEnabled.Value))
						{
							int port;
							if(Int32.TryParse(entryProxyPort.Value, out port) && ((port >= 1) && (port <= 65535))) 
							{
								proxy = new PubnubProxy();
								proxy.ProxyServer = entryProxyServer.Value;
								proxy.ProxyPort = port;
								proxy.ProxyUserName = entryProxyUser.Value;
								proxy.ProxyPassword = entryProxyPassword.Value;

								try
								{
									pubnub.Proxy = proxy;
								}
								catch (MissingFieldException mse)
								{
									errorFree = false;
									proxyEnabled.Value = false;
									Console.WriteLine(mse.Message);
									new UIAlertView ("Error!", "Proxy settings invalid, please re-enter the details.", null, "OK").Show (); 
								}
							}
							else
							{
								errorFree = false;
								new UIAlertView ("Error!", "Proxy port must be a valid integer between 1 to 65535", null, "OK").Show (); 
							}
						}

						if(errorFree)
						{
							new Pubnub_MessagingSub(entryChannelName.Value, entryCipher.Value, sslEnabled.Value, pubnub);
						}
					})
					{
						BackgroundColor = UIColor.Blue,
						TextColor = UIColor.White,
						Alignment = UITextAlignment.Center
					},
				}
			};
		}
Esempio n. 17
0
		protected void ShowSettings ()
		{
			DisableActions();
			if(pubnub != null){
				pubnub.EndPendingRequests();
			}
			SettingsDialog settings = new SettingsDialog(this);
			settings.Modal = true;
			
			settings.Name = "Settings";
			bool errorFree = true;
			settings.Response += delegate(object o, ResponseArgs args) {
				if(args.ResponseId == Gtk.ResponseType.Ok)
				{
					//string channel = this.Channel; 
					pubnub = new Pubnub("demo", "demo", "", this.Cipher , this.Ssl);
					if(!string.IsNullOrEmpty(this.CustomUuid))
					{
						pubnub.SessionUUID = this.CustomUuid;
					}
					StringBuilder sbHead = new StringBuilder();
					//sbHead.Append("Ch:");
					foreach(string ch in this.Channel.Split(','))
					{
						sbHead.Append(ch.Trim());
						sbHead.Append("\n");
					}
					
					entrySsl.Text =  (this.Ssl)?"On": "Off";
					entryUuid.Text = pubnub.SessionUUID;
					entryCipher.Text = this.Cipher;
					//entryServerTime.Text = this.time

					//this.tvChannels.Buffer.Text = sbHead.ToString();
					
					PubnubProxy proxy = new PubnubProxy();
					if(!string.IsNullOrWhiteSpace(this.Server))
					{
		                proxy.ProxyServer = this.Server;
		                proxy.ProxyPort = this.Port;
		                proxy.ProxyUserName = this.Username;
		                proxy.ProxyPassword = this.Password;
						
		                try
		                {
		                    pubnub.Proxy = proxy;
		                }
		                catch (MissingFieldException mse)
		                {
							Console.WriteLine(mse.Message);
							errorFree = false;
		                }
					}
					if(errorFree)
					{
						EnableActions();
						SubscribeToChannels();
					}
					else
					{
						ShowSettings();
					}
				} else {
					if(pubnub != null){
						EnableActions();
					}
				}
			};
			settings.Run ();
			settings.Destroy();
		}
Esempio n. 18
0
 void ProxyCheckedChanged (object sender, CompoundButton.CheckedChangeEventArgs e)
 {
     if (e.IsChecked) {
         proxyUsername.Enabled = true;
         proxyPassword.Enabled = true;
         proxyServer.Enabled = true;
         proxyPort.Enabled = true;
     } else {
         proxyUsername.Enabled = false;
         proxyUsername.Text = "";
         proxyPassword.Enabled = false;
         proxyPassword.Text = "";
         proxyServer.Enabled = false;
         proxyServer.Text = "";
         proxyPort.Enabled = false;
         proxyPort.Text = "";
         proxy = null;
     }
 }
Esempio n. 19
0
        public Pubnub_MessagingMain() : base(UITableViewStyle.Grouped, null)
        {
            PubnubProxy proxy  = null;
            Pubnub      pubnub = null;

            EntryElement entryChannelName = new EntryElement("Channel Name", "Enter Channel Name", "");

            entryChannelName.AutocapitalizationType = UITextAutocapitalizationType.None;
            entryChannelName.AutocorrectionType     = UITextAutocorrectionType.No;

            EntryElement entryCipher = new EntryElement("Cipher", "Enter Cipher", "");

            entryCipher.AutocapitalizationType = UITextAutocapitalizationType.None;
            entryCipher.AutocorrectionType     = UITextAutocorrectionType.No;

            EntryElement entryProxyServer = new EntryElement("Server", "Enter Server", "");

            entryProxyServer.AutocapitalizationType = UITextAutocapitalizationType.None;
            entryProxyServer.AutocorrectionType     = UITextAutocorrectionType.No;

            EntryElement entryProxyPort = new EntryElement("Port", "Enter Port", "");

            EntryElement entryProxyUser = new EntryElement("Username", "Enter Username", "");

            entryProxyUser.AutocapitalizationType = UITextAutocapitalizationType.None;
            entryProxyUser.AutocorrectionType     = UITextAutocorrectionType.No;

            EntryElement entryProxyPassword = new EntryElement("Password", "Enter Password", "", true);

            EntryElement entryCustonUuid = new EntryElement("CustomUuid", "Enter Custom UUID", "");

            entryCustonUuid.AutocapitalizationType = UITextAutocapitalizationType.None;
            entryCustonUuid.AutocorrectionType     = UITextAutocorrectionType.No;

            BooleanElement proxyEnabled = new BooleanElement("Proxy", false);

            BooleanElement sslEnabled = new BooleanElement("Enable SSL", false);

            Root = new RootElement("Pubnub Messaging")
            {
                new Section("Basic Settings")
                {
                    entryChannelName,
                    sslEnabled
                },
                new Section("Enter cipher key for encryption. Leave blank for unencrypted transfer.")
                {
                    entryCipher
                },
                new Section("Enter custom UUID or leave blank to use the default UUID")
                {
                    entryCustonUuid
                },
                new Section()
                {
                    new RootElement("Proxy Settings", 0, 0)
                    {
                        new Section()
                        {
                            proxyEnabled
                        },
                        new Section("Configuration")
                        {
                            entryProxyServer,
                            entryProxyPort,
                            entryProxyUser,
                            entryProxyPassword
                        },
                    }
                },
                new Section()
                {
                    new StyledStringElement("Launch", () => {
                        bool errorFree = true;
                        if (String.IsNullOrWhiteSpace(entryChannelName.Value.Trim()))
                        {
                            errorFree = false;
                            new UIAlertView("Error!", "Please enter a channel name", null, "OK").Show();
                        }

                        if (errorFree)
                        {
                            pubnub = new Pubnub("demo", "demo", "", entryCipher.Value, sslEnabled.Value);
                            if (!String.IsNullOrWhiteSpace(entryCustonUuid.Value.Trim()))
                            {
                                pubnub.SessionUUID = entryCustonUuid.Value.Trim();
                            }
                        }

                        if ((errorFree) && (proxyEnabled.Value))
                        {
                            int port;
                            if (Int32.TryParse(entryProxyPort.Value, out port) && ((port >= 1) && (port <= 65535)))
                            {
                                proxy               = new PubnubProxy();
                                proxy.ProxyServer   = entryProxyServer.Value;
                                proxy.ProxyPort     = port;
                                proxy.ProxyUserName = entryProxyUser.Value;
                                proxy.ProxyPassword = entryProxyPassword.Value;

                                try
                                {
                                    pubnub.Proxy = proxy;
                                }
                                catch (MissingFieldException mse)
                                {
                                    errorFree          = false;
                                    proxyEnabled.Value = false;
                                    Console.WriteLine(mse.Message);
                                    new UIAlertView("Error!", "Proxy settings invalid, please re-enter the details.", null, "OK").Show();
                                }
                            }
                            else
                            {
                                errorFree = false;
                                new UIAlertView("Error!", "Proxy port must be a valid integer between 1 to 65535", null, "OK").Show();
                            }
                        }

                        if (errorFree)
                        {
                            new Pubnub_MessagingSub(entryChannelName.Value, entryCipher.Value, sslEnabled.Value, pubnub);
                        }
                    })
                    {
                        BackgroundColor = UIColor.Blue,
                        TextColor       = UIColor.White,
                        Alignment       = UITextAlignment.Center
                    },
                }
            };
        }
Esempio n. 20
0
		static public void Main ()
		{
			AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;

			PubnubProxy proxy = null;
            
			Console.WriteLine ("HINT: TO TEST RE-CONNECT AND CATCH-UP,");
			Console.WriteLine ("      DISCONNECT YOUR MACHINE FROM NETWORK/INTERNET AND ");
			Console.WriteLine ("      RE-CONNECT YOUR MACHINE AFTER SOMETIME.");
			Console.WriteLine ();
			Console.WriteLine ("      IF NO NETWORK BEFORE MAX RE-TRY CONNECT,");
			Console.WriteLine ("      NETWORK ERROR MESSAGE WILL BE SENT");
			Console.WriteLine ();

			Console.WriteLine ("Enter Pubnub Origin. Default Origin = pubsub.pubnub.com");
			Console.WriteLine ("If you want to accept default value, press ENTER.");
			string origin = Console.ReadLine ();
			Console.ForegroundColor = ConsoleColor.Blue;
			if (origin.Trim () == "") {
				origin = "pubsub.pubnub.com";
				Console.WriteLine ("Default Origin selected");
			} else {
				Console.WriteLine ("Pubnub Origin Provided");
			}
			Console.ResetColor ();
			Console.WriteLine ();

			Console.WriteLine ("Enable SSL? ENTER Y for Yes, else N");
			string enableSSL = Console.ReadLine ();
			Console.ForegroundColor = ConsoleColor.Blue;
			if (enableSSL.Trim ().ToLower () == "y") {
				Console.WriteLine ("SSL Enabled");
			} else {
				Console.WriteLine ("SSL NOT Enabled");
			}
			Console.ResetColor ();
			Console.WriteLine ();

			Console.WriteLine ("ENTER cipher key for encryption feature.");
			Console.WriteLine ("If you don't want to avail at this time, press ENTER.");
			string cipherKey = Console.ReadLine ();
			Console.ForegroundColor = ConsoleColor.Blue;
			if (cipherKey.Trim ().Length > 0) {
				Console.WriteLine ("Cipher key provided.");
			} else {
				Console.WriteLine ("No Cipher key provided");
			}
			Console.ResetColor ();
			Console.WriteLine ();

			Console.WriteLine ("ENTER subscribe key.");
			Console.WriteLine ("If you want to accept default demo subscribe key, press ENTER.");
			string subscribeKey = Console.ReadLine ();
			Console.ForegroundColor = ConsoleColor.Blue;
			if (subscribeKey.Trim ().Length > 0) {
				Console.WriteLine ("Subscribe key provided.");
			} else {
				Console.WriteLine ("Default demo subscribe key provided");
				subscribeKey = "demo-36";
			}
			Console.ResetColor ();
			Console.WriteLine ();

			Console.WriteLine ("ENTER publish key.");
			Console.WriteLine ("If you want to accept default demo publish key, press ENTER.");
			string publishKey = Console.ReadLine ();
			Console.ForegroundColor = ConsoleColor.Blue;
			if (publishKey.Trim ().Length > 0) {
				Console.WriteLine ("Publish key provided.");
			} else {
				Console.WriteLine ("Default demo publish key provided");
				publishKey = "demo-36";
			}
			Console.ResetColor ();
			Console.WriteLine ();

			Console.WriteLine ("ENTER secret key.");
			Console.WriteLine ("If you don't want to avail at this time, press ENTER.");
			string secretKey = Console.ReadLine ();
			Console.ForegroundColor = ConsoleColor.Blue;
			if (secretKey.Trim ().Length > 0) {
				Console.WriteLine ("Secret key provided.");
			} else {
				Console.WriteLine ("Default demo secret key provided");
				secretKey = "demo-36";
			}
			Console.ResetColor ();
			Console.WriteLine ();

			pubnub = new Pubnub (publishKey, subscribeKey, secretKey, cipherKey,
				(enableSSL.Trim ().ToLower () == "y") ? true : false);
			pubnub.Origin = origin;

			Console.WriteLine ("Use Custom Session UUID? ENTER Y for Yes, else N");
			string enableCustomUUID = Console.ReadLine ();
			if (enableCustomUUID.Trim ().ToLower () == "y") {
				Console.WriteLine ("ENTER Session UUID.");
				string sessionUUID = Console.ReadLine ();
				pubnub.SessionUUID = sessionUUID;
				Console.ForegroundColor = ConsoleColor.Blue;
				Console.WriteLine ("Accepted Custom Session UUID.");
				Console.ResetColor ();
			} else {
				Console.ForegroundColor = ConsoleColor.Blue;
				Console.WriteLine ("Default Session UUID opted.");
				Console.ResetColor ();
			}
			Console.WriteLine ();

			Console.WriteLine ("By default Resume On Reconnect is enabled. Do you want to disable it? ENTER Y for Yes, else N");
			string disableResumeOnReconnect = Console.ReadLine ();
			Console.ForegroundColor = ConsoleColor.Blue;
			if (disableResumeOnReconnect.Trim ().ToLower () == "y") {
				Console.WriteLine ("Resume On Reconnect Disabled");
				pubnub.EnableResumeOnReconnect = false;
			} else {
				Console.WriteLine ("Resume On Reconnect Enabled by default");
				pubnub.EnableResumeOnReconnect = true;
			}
			Console.ResetColor ();
			Console.WriteLine ();

			Console.WriteLine ("Subscribe Timeout = 310 seconds (default). Enter the value to change, else press ENTER");
			string subscribeTimeoutEntry = Console.ReadLine ();
			int subscribeTimeout;
			Int32.TryParse (subscribeTimeoutEntry, out subscribeTimeout);
			Console.ForegroundColor = ConsoleColor.Blue;
			if (subscribeTimeout > 0) {
				Console.WriteLine ("Subscribe Timeout = {0}", subscribeTimeout);
				pubnub.SubscribeTimeout = subscribeTimeout;
			} else {
				Console.WriteLine ("Subscribe Timeout = {0} (default)", pubnub.SubscribeTimeout);
			}
			Console.ResetColor ();
			Console.WriteLine ();

			Console.WriteLine ("Non Subscribe Timeout = 15 seconds (default). Enter the value to change, else press ENTER");
			string nonSubscribeTimeoutEntry = Console.ReadLine ();
			int nonSubscribeTimeout;
			Int32.TryParse (nonSubscribeTimeoutEntry, out nonSubscribeTimeout);
			Console.ForegroundColor = ConsoleColor.Blue;
			if (nonSubscribeTimeout > 0) {
				Console.WriteLine ("Non Subscribe Timeout = {0}", nonSubscribeTimeout);
				pubnub.NonSubscribeTimeout = nonSubscribeTimeout;
			} else {
				Console.WriteLine ("Non Subscribe Timeout = {0} (default)", pubnub.NonSubscribeTimeout);
			}
			Console.ResetColor ();
			Console.WriteLine ();

			Console.WriteLine ("Network Check MAX retries = 50 (default). Enter the value to change, else press ENTER");
			string networkCheckMaxRetriesEntry = Console.ReadLine ();
			int networkCheckMaxRetries;
			Int32.TryParse (networkCheckMaxRetriesEntry, out networkCheckMaxRetries);
			Console.ForegroundColor = ConsoleColor.Blue;
			if (networkCheckMaxRetries > 0) {
				Console.WriteLine ("Network Check MAX retries = {0}", networkCheckMaxRetries);
				pubnub.NetworkCheckMaxRetries = networkCheckMaxRetries;
			} else {
				Console.WriteLine ("Network Check MAX retries = {0} (default)", pubnub.NetworkCheckMaxRetries);
			}
			Console.ResetColor ();
			Console.WriteLine ();

			Console.WriteLine ("Network Check Retry Interval = 10 seconds (default). Enter the value to change, else press ENTER");
			string networkCheckRetryIntervalEntry = Console.ReadLine ();
			int networkCheckRetryInterval;
			Int32.TryParse (networkCheckRetryIntervalEntry, out networkCheckRetryInterval);
			Console.ForegroundColor = ConsoleColor.Blue;
			if (networkCheckRetryInterval > 0) {
				Console.WriteLine ("Network Check Retry Interval = {0} seconds", networkCheckRetryInterval);
				pubnub.NetworkCheckRetryInterval = networkCheckRetryInterval;
			} else {
				Console.WriteLine ("Network Check Retry Interval = {0} seconds (default)", pubnub.NetworkCheckRetryInterval);
			}
			Console.ResetColor ();
			Console.WriteLine ();

			Console.WriteLine ("Local Client Heartbeat Interval = 15 seconds (default). Enter the value to change, else press ENTER");
			string heartbeatIntervalEntry = Console.ReadLine ();
			int localClientHeartbeatInterval;
			Int32.TryParse (heartbeatIntervalEntry, out localClientHeartbeatInterval);
			Console.ForegroundColor = ConsoleColor.Blue;
			if (localClientHeartbeatInterval > 0) {
				Console.WriteLine ("Heartbeat Interval = {0} seconds", localClientHeartbeatInterval);
				pubnub.LocalClientHeartbeatInterval = localClientHeartbeatInterval;
			} else {
				Console.WriteLine ("Heartbeat Interval = {0} seconds (default)", pubnub.LocalClientHeartbeatInterval);
			}
			Console.ResetColor ();
			Console.WriteLine ();

			Console.WriteLine ("HTTP Proxy Server with NTLM authentication(IP + username/pwd) exists? ENTER Y for Yes, else N");
			Console.ForegroundColor = ConsoleColor.Red;
			Console.ResetColor ();
			string enableProxy = Console.ReadLine ();
			if (enableProxy.Trim ().ToLower () == "y") {
				bool proxyAccepted = false;
				while (!proxyAccepted) {
					Console.WriteLine ("ENTER proxy server name or IP.");
					string proxyServer = Console.ReadLine ();
					Console.WriteLine ("ENTER port number of proxy server.");
					string proxyPort = Console.ReadLine ();
					int port;
					Int32.TryParse (proxyPort, out port);
					Console.WriteLine ("ENTER user name for proxy server authentication.");
					string proxyUsername = Console.ReadLine ();
					Console.WriteLine ("ENTER password for proxy server authentication.");
					string proxyPassword = Console.ReadLine ();
                    
					proxy = new PubnubProxy ();
					proxy.ProxyServer = proxyServer;
					proxy.ProxyPort = port;
					proxy.ProxyUserName = proxyUsername;
					proxy.ProxyPassword = proxyPassword;
					Console.ForegroundColor = ConsoleColor.Blue;
					try {
						pubnub.Proxy = proxy;
						proxyAccepted = true;
						Console.WriteLine ("Proxy details accepted");
						Console.ResetColor ();
					} catch (MissingFieldException mse) {
						Console.WriteLine (mse.Message);
						Console.WriteLine ("Please RE-ENTER Proxy Server details.");
					}
					Console.ResetColor ();
				}
			} else {
				Console.ForegroundColor = ConsoleColor.Blue;
				Console.WriteLine ("No Proxy");
				Console.ResetColor ();
			}
			Console.WriteLine ();

			Console.WriteLine ("Enter Auth Key. If you don't want to use Auth Key, Press ENTER Key");
			authKey = Console.ReadLine ();
			pubnub.AuthenticationKey = authKey;

			Console.ForegroundColor = ConsoleColor.Blue;
			Console.WriteLine (string.Format ("Auth Key = {0}", pubnub.AuthenticationKey));
			Console.ResetColor ();
			Console.WriteLine ();

			Console.WriteLine ("Display ErrorCallback messages? Enter Y for Yes, Else N for No.");
			Console.WriteLine ("Default = N  ");
			string displayErrMessage = Console.ReadLine ();
			Console.ForegroundColor = ConsoleColor.Blue;
			if (displayErrMessage.Trim ().ToLower () == "y") {
				showErrorMessageSegments = true;
				Console.WriteLine ("ErrorCallback messages will  be displayed");
			} else {
				showErrorMessageSegments = false;
				Console.WriteLine ("ErrorCallback messages will NOT be displayed.");
			}
			Console.ResetColor ();
			Console.WriteLine ();

			Console.WriteLine ("Display Debug Info in ErrorCallback messages? Enter Y for Yes, Else N for No.");
			Console.WriteLine ("Default = Y  ");
			string debugMessage = Console.ReadLine ();
			Console.ForegroundColor = ConsoleColor.Blue;
			if (debugMessage.Trim ().ToLower () == "n") {
				showDebugMessages = false;
				Console.WriteLine ("ErrorCallback messages will NOT  be displayed");
			} else {
				showDebugMessages = true;
				Console.WriteLine ("Debug messages will be displayed.");
			}
			Console.ResetColor ();
			Console.WriteLine ();

			bool exitFlag = false;
			string channel = "";
			int currentUserChoice = 0;
			string userinput = "";
			Console.WriteLine ("");
			while (!exitFlag) {

				if (currentUserChoice < 1 || (currentUserChoice > 30 && currentUserChoice != 99)) {
					Console.WriteLine ("ENTER 1 FOR Subscribe");
					Console.WriteLine ("ENTER 2 FOR Publish");
					Console.WriteLine ("ENTER 3 FOR Presence");
					Console.WriteLine ("ENTER 4 FOR Detailed History");
					Console.WriteLine ("ENTER 5 FOR Here_Now");
					Console.WriteLine ("ENTER 6 FOR Unsubscribe");
					Console.WriteLine ("ENTER 7 FOR Presence-Unsubscribe");
					Console.WriteLine ("ENTER 8 FOR Time");
					Console.WriteLine ("ENTER 9 FOR Disconnect/Reconnect existing Subscriber(s) (when internet is available)");
					Console.WriteLine ("ENTER 10 TO Disable Network Connection (no internet)");
					Console.WriteLine ("ENTER 11 TO Enable Network Connection (yes internet)");
					Console.WriteLine ("ENTER 12 FOR Grant Access");
					Console.WriteLine ("ENTER 13 FOR Audit Access");
					Console.WriteLine ("ENTER 14 FOR Revoke Access");
					Console.WriteLine ("ENTER 15 FOR Grant Access for Presence Channel");
					Console.WriteLine ("ENTER 16 FOR Audit Access for Presence Channel");
					Console.WriteLine ("ENTER 17 FOR Revoke Access for Presence Channel");
					Console.WriteLine ("ENTER 18 FOR Change/Update Auth Key (Current value = {0})", pubnub.AuthenticationKey);
					Console.WriteLine ("ENTER 19 TO Simulate Machine Sleep Mode");
					Console.WriteLine ("ENTER 20 TO Simulate Machine Awake Mode");
					Console.WriteLine ("ENTER 21 TO Set Presence Heartbeat (Current value = {0} sec)", pubnub.PresenceHeartbeat);
					Console.WriteLine ("ENTER 22 TO Set Presence Heartbeat Interval (Current value = {0} sec)", pubnub.PresenceHeartbeatInterval);
					Console.WriteLine ("Enter 23 TO Add/Modify Local User State");
					Console.WriteLine ("Enter 24 TO Delete Local User State");
					Console.WriteLine ("Enter 25 TO View/Get Local User State");
					Console.WriteLine ("Enter 26 TO Set User State");
					Console.WriteLine ("Enter 27 TO Get User State");
					Console.WriteLine ("Enter 28 FOR WhereNow");
					Console.WriteLine ("Enter 29 FOR GlobalHere_Now");
					Console.WriteLine ("Enter 30 TO change UUID. (Current value = {0})", pubnub.SessionUUID);
					Console.WriteLine ("ENTER 99 FOR EXIT OR QUIT");

					userinput = Console.ReadLine ();
				}
				switch (userinput) {
				case "99":
					exitFlag = true;
					pubnub.EndPendingRequests ();
					break;
				case "1":
					Console.WriteLine ("Enter CHANNEL name for subscribe. Use comma to enter multiple channels.");
					channel = Console.ReadLine ();

					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", channel));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Running subscribe()");
					pubnub.Subscribe<string> (channel, DisplaySubscribeReturnMessage, DisplaySubscribeConnectStatusMessage, DisplayErrorMessage);
                    //pubnub2.Subscribe<string>(channel, DisplaySubscribeReturnMessage, DisplaySubscribeConnectStatusMessage, DisplayErrorMessage);
                    //pubnub.Subscribe<object>(channel, (object o)=> {DisplayReturnMessage(o);}, (object o)=> {DisplayReturnMessage(o);}, DisplayErrorMessage);

					break;
				case "2":
					Console.WriteLine ("Enter CHANNEL name for publish.");
					channel = Console.ReadLine ();

					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", channel));
					Console.ResetColor ();

                        /* TO TEST SMALL TEXT PUBLISH ONLY */
					Console.WriteLine ("Enter the message for publish and press ENTER key to submit");
					string publishMsg = Console.ReadLine ();

                            /* UNCOMMENT THE FOLLOWING CODE BLOCK TO TEST LARGE TEXT PUBLISH ONLY */
                            #region Code To Test Large Text Publish
                        /*ConsoleKeyInfo enteredKey;
                        StringBuilder publishBuilder = new StringBuilder ();
                        do {
                            enteredKey = Console.ReadKey (); //This logic is being used to capture > 2K input in console window
                            if (enteredKey.Key != ConsoleKey.Enter) {
                                publishBuilder.Append (enteredKey.KeyChar);
                            }
                        } while (enteredKey.Key != ConsoleKey.Enter);
                        string publishMsg = publishBuilder.ToString ();*/
                            #endregion

					Console.WriteLine ("Running publish()");
					Console.WriteLine ("Sending message " + publishMsg);
					double doubleData;
					int intData;
					if (int.TryParse (publishMsg, out intData)) { //capture numeric data
						pubnub.Publish<string> (channel, intData, DisplayReturnMessage, DisplayErrorMessage);
					} else if (double.TryParse (publishMsg, out doubleData)) { //capture numeric data
						pubnub.Publish<string> (channel, doubleData, DisplayReturnMessage, DisplayErrorMessage);
					} else {
						//check whether any numeric is sent in double quotes
						if (publishMsg.IndexOf ("\"") == 0 && publishMsg.LastIndexOf ("\"") == publishMsg.Length - 1) {
							string strMsg = publishMsg.Substring (1, publishMsg.Length - 2);
							if (int.TryParse (strMsg, out intData)) {
								pubnub.Publish<string> (channel, strMsg, DisplayReturnMessage, DisplayErrorMessage);
							} else if (double.TryParse (strMsg, out doubleData)) {
								pubnub.Publish<string> (channel, strMsg, DisplayReturnMessage, DisplayErrorMessage);
							} else {
								pubnub.Publish<string> (channel, publishMsg, DisplayReturnMessage, DisplayErrorMessage);
							}
						} else {
							pubnub.Publish<string> (channel, publishMsg, DisplayReturnMessage, DisplayErrorMessage);
							//pubnub2.Publish<string>(channel, publishMsg, DisplayReturnMessage, DisplayErrorMessage);
						}
					}
					break;
				case "3":
					Console.WriteLine ("Enter CHANNEL name for presence. Use comma to enter multiple channels.");
					channel = Console.ReadLine ();

					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Presence Channel = {0}", channel));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Running presence()");
					pubnub.Presence<string> (channel, DisplayPresenceReturnMessage, DisplayPresenceConnectStatusMessage, DisplayErrorMessage);

					break;
				case "4":
					Console.WriteLine ("Enter CHANNEL name for Detailed History");
					channel = Console.ReadLine ();

					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", channel));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Running detailed history()");
					pubnub.DetailedHistory<string> (channel, 100, DisplayReturnMessage, DisplayErrorMessage);
					break;
				case "5":
					bool showUUID = true;
					bool includeUserState = false;

					Console.WriteLine ("Enter CHANNEL name for HereNow");
					channel = Console.ReadLine ();

					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", channel));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Show UUID List? Y or N? Default is Y. Press N for No Else press ENTER");
					string userChoiceShowUUID = Console.ReadLine ();
					if (userChoiceShowUUID.ToLower () == "n") {
						showUUID = false;
					}
					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Show UUID = {0}", showUUID));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Include User State? Y or N? Default is N. Press Y for Yes Else press ENTER");
					string userChoiceIncludeUserState = Console.ReadLine ();
					if (userChoiceIncludeUserState.ToLower () == "y") {
						includeUserState = true;
					}
					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Include User State = {0}", includeUserState));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Running Here_Now()");
					pubnub.HereNow<string> (channel, showUUID, includeUserState, DisplayReturnMessage, DisplayErrorMessage);
					break;
				case "6":
					Console.WriteLine ("Enter CHANNEL name for Unsubscribe. Use comma to enter multiple channels.");
					channel = Console.ReadLine ();

					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", channel));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Running unsubscribe()");
					pubnub.Unsubscribe<string> (channel, DisplayReturnMessage, DisplaySubscribeConnectStatusMessage, DisplaySubscribeDisconnectStatusMessage, DisplayErrorMessage);
                    /*pubnub.Unsubscribe<object>(channel, (object o) => {}
                    , (object o) => {}, (object o) => {}, (PubnubClientError e) => {});*/
					break;
				case "7":
					Console.WriteLine ("Enter CHANNEL name for Presence Unsubscribe. Use comma to enter multiple channels.");
					channel = Console.ReadLine ();

					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", channel));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Running presence-unsubscribe()");
					pubnub.PresenceUnsubscribe<string> (channel, DisplayReturnMessage, DisplayPresenceConnectStatusMessage, DisplayPresenceDisconnectStatusMessage, DisplayErrorMessage);
					break;
				case "8":
					Console.WriteLine ("Running time()");
					pubnub.Time<string> (DisplayReturnMessage, DisplayErrorMessage);
					break;
				case "9":
					Console.WriteLine ("Running Disconnect/auto-Reconnect Subscriber Request Connection");
					pubnub.TerminateCurrentSubscriberRequest ();
					break;
				case "10":
					Console.WriteLine ("Disabling Network Connection (no internet)");
					Console.ForegroundColor = ConsoleColor.Red;
					Console.WriteLine ("Initiating Simulation of Internet non-availability");
					Console.WriteLine ("Until Choice=11 is entered, no operations will occur");
					Console.WriteLine ("NOTE: Publish from other pubnub clients can occur and those will be ");
					Console.WriteLine ("      captured upon choice=11 is entered provided resume on reconnect is enabled.");
					Console.ResetColor ();
					pubnub.EnableSimulateNetworkFailForTestingOnly ();
					break;
				case "11":
					Console.WriteLine ("Enabling Network Connection (yes internet)");
					Console.ForegroundColor = ConsoleColor.Red;
					Console.WriteLine ("Stopping Simulation of Internet non-availability");  
					Console.ResetColor ();
					pubnub.DisableSimulateNetworkFailForTestingOnly ();
					break;
				case "12":
					Console.WriteLine ("Enter CHANNEL name for PAM Grant. For Presence, Select Option 15.");
					channel = Console.ReadLine ();
					Console.WriteLine ("Read Access? Enter Y for Yes (default), N for No.");
					string readAccess = Console.ReadLine ();
					bool read = (readAccess.ToLower () == "n") ? false : true;
					Console.WriteLine ("Write Access? Enter Y for Yes (default), N for No.");
					string writeAccess = Console.ReadLine ();
					bool write = (writeAccess.ToLower () == "n") ? false : true;
					Console.WriteLine ("How many minutes do you want to allow Grant Access? Enter the number of minutes.");
					Console.WriteLine ("Default = 1440 minutes (24 hours). Press ENTER now to accept default value.");
					string grantTimeLimit = Console.ReadLine ();
					int grantTimeLimitInSeconds;
					Int32.TryParse (grantTimeLimit, out grantTimeLimitInSeconds);
					if (grantTimeLimitInSeconds == 0)
						grantTimeLimitInSeconds = 1440;

					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", channel));
					Console.WriteLine (string.Format ("Read Access = {0}", read.ToString ()));
					Console.WriteLine (string.Format ("Write Access = {0}", write.ToString ()));
					Console.WriteLine (string.Format ("Grant Access Time Limit = {0}", grantTimeLimitInSeconds.ToString ()));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Running PamGrant()");
					pubnub.GrantAccess<string> (channel, read, write, grantTimeLimitInSeconds, DisplayReturnMessage, DisplayErrorMessage);
					break;
				case "13":
					Console.WriteLine ("Enter CHANNEL name for PAM Audit");
					channel = Console.ReadLine ();

					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", channel));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Running PamAudit()");
					pubnub.AuditAccess<string> (channel, DisplayReturnMessage, DisplayErrorMessage);
					break;
				case "14":
					Console.WriteLine ("Enter CHANNEL name for PAM Revoke");
					channel = Console.ReadLine ();

					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", channel));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Running PamRevoke()");
					pubnub.GrantAccess<string> (channel, false, false, DisplayReturnMessage, DisplayErrorMessage);
					break;
				case "15":
					Console.WriteLine ("Enter CHANNEL name for PAM Grant Presence.");
					channel = Console.ReadLine ();
					Console.WriteLine ("Read Access? Enter Y for Yes (default), N for No.");
					string readPresenceAccess = Console.ReadLine ();
					bool readPresence = (readPresenceAccess.ToLower () == "n") ? false : true;
					Console.WriteLine ("Write Access? Enter Y for Yes (default), N for No.");
					string writePresenceAccess = Console.ReadLine ();
					bool writePresence = (writePresenceAccess.ToLower () == "n") ? false : true;
					Console.WriteLine ("How many minutes do you want to allow Grant Presence Access? Enter the number of minutes.");
					Console.WriteLine ("Default = 1440 minutes (24 hours). Press ENTER now to accept default value.");
					string grantPresenceTimeLimit = Console.ReadLine ();
					int grantPresenceTimeLimitInSeconds;
					Int32.TryParse (grantPresenceTimeLimit, out grantPresenceTimeLimitInSeconds);
					if (grantPresenceTimeLimitInSeconds == 0)
						grantPresenceTimeLimitInSeconds = 1440;

					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", channel));
					Console.WriteLine (string.Format ("Read Access = {0}", readPresence.ToString ()));
					Console.WriteLine (string.Format ("Write Access = {0}", writePresence.ToString ()));
					Console.WriteLine (string.Format ("Grant Access Time Limit = {0}", grantPresenceTimeLimitInSeconds.ToString ()));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Running PAM GrantPresenceAccess()");
					pubnub.GrantPresenceAccess<string> (channel, readPresence, writePresence, grantPresenceTimeLimitInSeconds, DisplayReturnMessage, DisplayErrorMessage);
					break;
				case "16":
					Console.WriteLine ("Enter CHANNEL name for PAM Presence Audit");
					channel = Console.ReadLine ();

					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", channel));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Running PAM Presence Audit()");
					pubnub.AuditPresenceAccess<string> (channel, DisplayReturnMessage, DisplayErrorMessage);
					break;
				case "17":
					Console.WriteLine ("Enter CHANNEL name for PAM Presence Revoke");
					channel = Console.ReadLine ();

					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", channel));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Running PAM Presence Revoke()");
					pubnub.GrantPresenceAccess<string> (channel, false, false, DisplayReturnMessage, DisplayErrorMessage);
					break;
				case "18":
					Console.WriteLine ("Enter Auth Key. Use comma to enter multiple Auth Keys.");
					Console.WriteLine ("If you don't want to use Auth Key, Press ENTER Key");
					authKey = Console.ReadLine ();
					pubnub.AuthenticationKey = authKey;

					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Auth Key(s) = {0}", authKey));
					Console.ResetColor ();
					Console.WriteLine ();

					break;
				case "19":
					Console.WriteLine ("Enabling simulation of Sleep/Suspend Mode");  
					pubnub.EnableMachineSleepModeForTestingOnly ();
					Console.ForegroundColor = ConsoleColor.Red;  
					Console.WriteLine ("Machine Sleep Mode simulation activated");
					Console.ResetColor ();  
					break;
				case "20":
					Console.WriteLine ("Disabling simulation of Sleep/Suspend Mode");  
					pubnub.DisableMachineSleepModeForTestingOnly ();
					Console.ForegroundColor = ConsoleColor.Red;  
					Console.WriteLine ("Simulation going to awake mode");  
					Console.ResetColor ();  
					break;
				case "21":
					Console.WriteLine ("Enter Presence Heartbeat in seconds");
					string pnHeartbeatInput = Console.ReadLine ();
					Int32.TryParse (pnHeartbeatInput, out presenceHeartbeat);
					pubnub.PresenceHeartbeat = presenceHeartbeat;
					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Presence Heartbeat = {0}", presenceHeartbeat));
					Console.ResetColor ();
					break;
				case "22":
					Console.WriteLine ("Enter Presence Heartbeat Interval in seconds");
					Console.WriteLine ("NOTE: We apply the logic Presence Heartbeat/2-1 seconds to calculate it." +
						"\nIf you enter a value greater than the value from this logic, \nwe will reset it to this calculated value.");
					string pnHeartbeatIntervalInput = Console.ReadLine ();
					Int32.TryParse (pnHeartbeatIntervalInput, out presenceHeartbeatInterval);
					pubnub.PresenceHeartbeatInterval = presenceHeartbeatInterval;
					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Presence Heartbeat Interval = {0}", pubnub.PresenceHeartbeatInterval));
					Console.ResetColor ();
					break;
				case "23":
					Console.WriteLine ("Enter channel name");
					string userStateChannel = Console.ReadLine ();
					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", userStateChannel));
					Console.ResetColor ();

					Console.WriteLine ("User State will be accepted as dictionary key:value pair. You will be asked to enter multiple keys, to exit add an empty key");
					while (true) {
						Console.WriteLine ("Enter key. ");
						string keyUserState = Console.ReadLine ();
						if (string.IsNullOrEmpty (keyUserState.Trim ())) {
							Console.WriteLine ("dictionary key:value pair entry completed.");
							break;
						}
						Console.WriteLine ("Enter value");
						string valueUserState = Console.ReadLine ();
						int valueInt;
						double valueDouble;
						string currentUserState = "";
						if (Int32.TryParse (valueUserState, out valueInt)) {
							currentUserState = pubnub.SetLocalUserState (userStateChannel, keyUserState, valueInt);
						} else if (Double.TryParse (valueUserState, out valueDouble)) {
							currentUserState = pubnub.SetLocalUserState (userStateChannel, keyUserState, valueDouble);
						} else {
							currentUserState = pubnub.SetLocalUserState (userStateChannel, keyUserState, valueUserState);
						}

						Console.ForegroundColor = ConsoleColor.Blue;
						if (!string.IsNullOrEmpty (currentUserState)) {
							Console.WriteLine ("Current User State = {0}", currentUserState);
						} else {
							Console.Write ("No User State Exists");
						}
						Console.ResetColor ();
					}
					break;

				case "24":
					Console.WriteLine ("Enter channel name");
					string deleteUserStateChannel = Console.ReadLine ();
					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", deleteUserStateChannel));
					Console.ResetColor ();

					Console.WriteLine ("Enter key of the local user state to be deleted");
					string deleteKeyUserState = Console.ReadLine ();
					string currentUserStateAfterDelete = pubnub.SetLocalUserState (deleteUserStateChannel, deleteKeyUserState, null);

					Console.ForegroundColor = ConsoleColor.Blue;
					if (!string.IsNullOrEmpty (currentUserStateAfterDelete)) {
						Console.WriteLine ("Current User State = {0}", currentUserStateAfterDelete);
					} else {
						Console.Write ("No User State Exists");
					}
					Console.ResetColor ();
					break;
				case "25":
					Console.WriteLine ("Enter channel name");
					string getUserStateChannel = Console.ReadLine ();
					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", getUserStateChannel));
					Console.ResetColor ();

					string currentUserStateView = pubnub.GetLocalUserState (getUserStateChannel);

					Console.ForegroundColor = ConsoleColor.Blue;
					if (!string.IsNullOrEmpty (currentUserStateView)) {
						Console.WriteLine ("Current User State = {0}", currentUserStateView);
					} else {
						Console.Write ("No User State Exists");
					}
					Console.ResetColor ();
					break;
				case "26":
					Console.WriteLine ("Enter channel name");
					string setUserStateChannel = Console.ReadLine ();
					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", setUserStateChannel));
					Console.ResetColor ();

					//Console.WriteLine ("NOTE: Hopefully you added local user state.");
					Console.WriteLine ("If you want to consider already created local user state, press ENTER");
					Console.WriteLine ("Else enter user state in json format (Eg. {\"key1\":\"value1\",\"key2\":\"value2\"}");
					string manualJsonUserState = Console.ReadLine ();

					string jsonUserState = "";
					if (string.IsNullOrEmpty (manualJsonUserState)) {
						jsonUserState = pubnub.GetLocalUserState (setUserStateChannel);
					} else {
						jsonUserState = manualJsonUserState;
					}
					if (jsonUserState == "" || jsonUserState == "{}") {
						Console.WriteLine ("Invalid User State");
						break;
					}
					Console.WriteLine ("Enter UUID. (Optional. Press ENTER to skip it)");
					string uuid = Console.ReadLine ();
					if (string.IsNullOrEmpty (uuid)) {
						pubnub.SetUserState<string> (setUserStateChannel, jsonUserState, DisplayReturnMessage, DisplayErrorMessage);
					} else {
						pubnub.SetUserState<string> (setUserStateChannel, uuid, jsonUserState, DisplayReturnMessage, DisplayErrorMessage);
					}
					break;
				case "27":
					Console.WriteLine ("Enter channel name");
					string getUserStateChannel2 = Console.ReadLine ();
					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Channel = {0}", getUserStateChannel2));
					Console.ResetColor ();

					Console.WriteLine ("Enter UUID. (Optional. Press ENTER to skip it)");
					string uuid2 = Console.ReadLine ();
					if (string.IsNullOrEmpty (uuid2)) {
						pubnub.GetUserState<string> (getUserStateChannel2, DisplayReturnMessage, DisplayErrorMessage);
					} else {
						pubnub.GetUserState<string> (getUserStateChannel2, uuid2, DisplayReturnMessage, DisplayErrorMessage);
					}
					break;
				case "28":
					Console.WriteLine ("Enter uuid for WhereNow. To consider SessionUUID, just press ENTER");
					string whereNowUuid = Console.ReadLine ();

					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("uuid = {0}", whereNowUuid));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Running Where_Now()");
					pubnub.WhereNow<string> (whereNowUuid, DisplayReturnMessage, DisplayErrorMessage);
					break;
				case "29":
					bool globalHereNowShowUUID = true;
					bool globalHereNowIncludeUserState = false;

					Console.WriteLine ("Show UUID List? Y or N? Default is Y. Press N for No Else press ENTER");
					string userChoiceGlobalHereNowShowUUID = Console.ReadLine ();
					if (userChoiceGlobalHereNowShowUUID.ToLower () == "n") {
						globalHereNowShowUUID = false;
					}
					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Show UUID = {0}", globalHereNowShowUUID));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Include User State? Y or N? Default is N. Press Y for Yes Else press ENTER");
					string userChoiceGlobalHereNowIncludeUserState = Console.ReadLine ();
					if (userChoiceGlobalHereNowIncludeUserState.ToLower () == "y") {
						globalHereNowIncludeUserState = true;
					}
					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine (string.Format ("Include User State = {0}", globalHereNowIncludeUserState));
					Console.ResetColor ();
					Console.WriteLine ();

					Console.WriteLine ("Running Global HereNow()");
					pubnub.GlobalHereNow<string> (globalHereNowShowUUID, globalHereNowIncludeUserState, DisplayReturnMessage, DisplayErrorMessage);
					break;
				case "30":
					Console.WriteLine ("ENTER UUID.");
					string sessionUUID = Console.ReadLine ();
					pubnub.ChangeUUID (sessionUUID);
					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine ("UUID = {0}", pubnub.SessionUUID);
					Console.ResetColor ();
					break;
				default:
					Console.ForegroundColor = ConsoleColor.Red;
					Console.WriteLine ("INVALID CHOICE. ENTER 99 FOR EXIT OR QUIT");
					Console.ResetColor ();
					break;
				}
				if (!exitFlag) {
					userinput = Console.ReadLine ();
					Int32.TryParse (userinput, out currentUserChoice);
				}
			}

			Console.WriteLine ("\nPress any key to exit.\n\n");
			Console.ReadLine ();
		}
Esempio n. 21
0
		static public void Main()
		{
			PubnubProxy proxy = null;

			Console.WriteLine("HINT: TO TEST RE-CONNECT AND CATCH-UP,");
			Console.WriteLine("      DISCONNECT YOUR MACHINE FROM NETWORK/INTERNET AND ");
			Console.WriteLine("      RE-CONNECT YOUR MACHINE AFTER SOMETIME.");
			Console.WriteLine();
			Console.WriteLine("      IF NO NETWORK BEFORE MAX RE-TRY CONNECT,");
			Console.WriteLine("      NETWORK ERROR MESSAGE WILL BE SENT");
			Console.WriteLine();
			
			Console.WriteLine("ENTER Channel Name");
			channel = Console.ReadLine();
			
			Console.WriteLine(string.Format("Channel = {0}",channel));
			Console.WriteLine();
			
			Console.WriteLine("Enable SSL? ENTER Y for Yes, else N");
			string enableSSL = Console.ReadLine();
			if (enableSSL.Trim().ToLower() == "y")
			{
				Console.WriteLine("SSL Enabled");
			}
			else
			{
				Console.WriteLine("SSL NOT Enabled");
			}
			Console.WriteLine();
			
			Console.WriteLine("ENTER cipher key for encryption feature.");
			Console.WriteLine("If you don't want to avail at this time, press ENTER.");
			string cipheryKey = Console.ReadLine();
			if (cipheryKey.Trim().Length > 0)
			{
				Console.WriteLine("Cipher key provided.");
			}
			else
			{
				Console.WriteLine("No Cipher key provided");
			}
			Console.WriteLine();
			
			pubnub = new Pubnub("demo", "demo", "", cipheryKey,
			                    (enableSSL.Trim().ToLower() == "y") ? true : false);

			Console.WriteLine("Use Custom Session UUID? ENTER Y for Yes, else N");
			string enableCustomUUID = Console.ReadLine();
			if (enableCustomUUID.Trim().ToLower() == "y")
			{
				Console.WriteLine("ENTER Session UUID.");
				string sessionUUID = Console.ReadLine();
				pubnub.SessionUUID = sessionUUID;
				Console.WriteLine("Accepted Custom Session UUID.");
			}
			else
			{
				Console.WriteLine("Default Session UUID opted.");
			}
			Console.WriteLine();

			Console.WriteLine("Proxy Server exists? ENTER Y for Yes, else N");
			string enableProxy = Console.ReadLine();
			if (enableProxy.Trim().ToLower() == "y")
			{
				bool proxyAccepted = false;
				while (!proxyAccepted)
				{
					Console.WriteLine("ENTER proxy server name or IP.");
					string proxyServer = Console.ReadLine();
					Console.WriteLine("ENTER port number of proxy server.");
					string proxyPort = Console.ReadLine();
					int port;
					Int32.TryParse(proxyPort, out port);
					Console.WriteLine("ENTER user name for proxy server authentication.");
					string proxyUsername = Console.ReadLine();
					Console.WriteLine("ENTER password for proxy server authentication.");
					string proxyPassword = Console.ReadLine();
					
					proxy = new PubnubProxy();
					proxy.ProxyServer = proxyServer;
					proxy.ProxyPort = port;
					proxy.ProxyUserName = proxyUsername;
					proxy.ProxyPassword = proxyPassword;
					try
					{
						pubnub.Proxy = proxy;
						proxyAccepted = true;
						Console.WriteLine("Proxy details accepted");
					}
					catch (MissingFieldException mse)
					{
						Console.WriteLine(mse.Message);
						Console.WriteLine("Please RE-ENTER Proxy Server details.");
					}
				}
			}
			else
			{
				Console.WriteLine("No Proxy");
			}
			Console.WriteLine();

			Console.WriteLine("ENTER 1 FOR Subscribe (not implementing connectCallback)");
			Console.WriteLine("ENTER 2 FOR Subscribe (implementing connectCallback)");
			Console.WriteLine("ENTER 3 FOR Publish");
			Console.WriteLine("ENTER 4 FOR Presence");
			Console.WriteLine("ENTER 5 FOR Detailed History");
			Console.WriteLine("ENTER 6 FOR Here_Now");
			Console.WriteLine("ENTER 7 FOR Unsubscribe");
			Console.WriteLine("ENTER 8 FOR Presence-Unsubscribe");
			Console.WriteLine("ENTER 9 FOR Time");
			Console.WriteLine("ENTER 0 FOR EXIT OR QUIT");
			
			bool exitFlag = false;
			
			Console.WriteLine("");
			while (!exitFlag)
			{
				string userinput = Console.ReadLine();
				switch (userinput)
				{
				case "0":
					exitFlag = true;
					pubnub.EndPendingRequests();
					break;
				case "1":
					Console.WriteLine("Running subscribe() (not implementing connectCallback)");
					pubnub.Subscribe<string>(channel, DisplayReturnMessage);
					break;
				case "2":
					Console.WriteLine("Running subscribe() (implementing connectCallback)");
					pubnub.Subscribe<string>(channel, DisplayReturnMessage, DisplayConnectStatusMessage);
					break;
				case "3":
					Console.WriteLine("Running publish()");
					Console.WriteLine("Enter the message for publish. To exit loop, enter QUIT");
					string publishMsg = Console.ReadLine();
					double doubleData;
					int intData;
					if (int.TryParse(publishMsg, out intData)) //capture numeric data
					{
						pubnub.Publish<string>(channel, intData, DisplayReturnMessage);
					}
					else if (double.TryParse(publishMsg, out doubleData)) //capture numeric data
					{
						pubnub.Publish<string>(channel, doubleData, DisplayReturnMessage);
					}
					else
					{
						//check whether any numeric is sent in double quotes
						if (publishMsg.IndexOf("\"") == 0 && publishMsg.LastIndexOf("\"") == publishMsg.Length - 1)
						{
							string strMsg = publishMsg.Substring(1, publishMsg.Length - 2);
							if (int.TryParse(strMsg, out intData))
							{
								pubnub.Publish<string>(channel, strMsg, DisplayReturnMessage);
							}
							else if (double.TryParse(strMsg, out doubleData))
							{
								pubnub.Publish<string>(channel, strMsg, DisplayReturnMessage);
							}
							else
							{
								pubnub.Publish<string>(channel, publishMsg, DisplayReturnMessage);
							}
						}
						else
						{
							pubnub.Publish<string>(channel, publishMsg, DisplayReturnMessage);
						}
					}
					break;
				case "4":
					Console.WriteLine("Running presence()");
					pubnub.Presence<string>(channel, DisplayReturnMessage);
					break;
				case "5":
					Console.WriteLine("Running detailed history()");
					pubnub.DetailedHistory<string>(channel, 100, DisplayReturnMessage);
					break;
				case "6":
					Console.WriteLine("Running Here_Now()");
					pubnub.HereNow<string>(channel, DisplayReturnMessage);
					break;
				case "7":
					Console.WriteLine("Running unsubscribe()");
					pubnub.Unsubscribe<string>(channel, DisplayReturnMessage);
					break;
				case "8":
					Console.WriteLine("Running presence-unsubscribe()");
					pubnub.PresenceUnsubscribe<string>(channel, DisplayReturnMessage);
					break;
				case "9":
					Console.WriteLine("Running time()");
					pubnub.Time<string>(DisplayReturnMessage);
					break;
				default:
					Console.WriteLine("INVALID CHOICE.");
					break;
				}
			}
			
			Console.WriteLine("\nPress any key to exit.\n\n");
			Console.ReadLine();
			
		}
Esempio n. 22
0
        void EnableProxy (object sender, EventArgs e)
        {
            int port;

            bool errorFree = true;

            if (!tgProxy.Checked) 
            {
                proxyEnabled = false;
                tvProxy.Text = SetProxyText(false);
                dialog.Dismiss ();
            } 
            else 
            {
                if (string.IsNullOrWhiteSpace (proxyServer.Text)) {
                    errorFree = false;
                    ShowAlert ("Please enter proxy server."); 
                }

                if ((errorFree) && (string.IsNullOrWhiteSpace (proxyUsername.Text))) {
                    errorFree = false;
                    ShowAlert ("Please enter proxy username."); 
                }

                if ((errorFree) && (string.IsNullOrWhiteSpace (proxyPassword.Text))) {
                    errorFree = false;
                    ShowAlert ("Please enter proxy password."); 
                }

                if (errorFree) {
                    if (Int32.TryParse (proxyPort.Text, out port) && ((port >= 1) && (port <= 65535))) {
                        proxy = new PubnubProxy ();
                        proxy.ProxyServer = proxyServer.Text;
                        proxy.ProxyPort = port;
                        proxy.ProxyUserName = proxyUsername.Text;
                        proxy.ProxyPassword = proxyPassword.Text;
                        proxyEnabled = true;
                        tvProxy.Text = SetProxyText (true);
                        dialog.Dismiss ();
                    } else {
                        ShowAlert ("Proxy port must be a valid integer between 1 to 65535"); 
                    }
                }
            }
        }
Esempio n. 23
0
        protected void ShowSettings()
        {
            DisableActions();
            if (pubnub != null)
            {
                pubnub.EndPendingRequests();
            }
            SettingsDialog settings = new SettingsDialog(this);

            settings.Modal = true;

            settings.Name = "Settings";
            bool errorFree = true;

            settings.Response += delegate(object o, ResponseArgs args) {
                if (args.ResponseId == Gtk.ResponseType.Ok)
                {
                    //string channel = this.Channel;
                    pubnub = new Pubnub("demo", "demo", "", this.Cipher, this.Ssl);
                    if (!string.IsNullOrEmpty(this.CustomUuid))
                    {
                        pubnub.SessionUUID = this.CustomUuid;
                    }
                    StringBuilder sbHead = new StringBuilder();
                    //sbHead.Append("Ch:");
                    foreach (string ch in this.Channel.Split(','))
                    {
                        sbHead.Append(ch.Trim());
                        sbHead.Append("\n");
                    }

                    entrySsl.Text    = (this.Ssl)?"On": "Off";
                    entryUuid.Text   = pubnub.SessionUUID;
                    entryCipher.Text = this.Cipher;
                    //entryServerTime.Text = this.time

                    //this.tvChannels.Buffer.Text = sbHead.ToString();

                    PubnubProxy proxy = new PubnubProxy();
                    if (!string.IsNullOrWhiteSpace(this.Server))
                    {
                        proxy.ProxyServer   = this.Server;
                        proxy.ProxyPort     = this.Port;
                        proxy.ProxyUserName = this.Username;
                        proxy.ProxyPassword = this.Password;

                        try
                        {
                            pubnub.Proxy = proxy;
                        }
                        catch (MissingFieldException mse)
                        {
                            Console.WriteLine(mse.Message);
                            errorFree = false;
                        }
                    }
                    if (errorFree)
                    {
                        EnableActions();
                        SubscribeToChannels();
                    }
                    else
                    {
                        ShowSettings();
                    }
                }
                else
                {
                    if (pubnub != null)
                    {
                        EnableActions();
                    }
                }
            };
            settings.Run();
            settings.Destroy();
        }