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); } }
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"); } }
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); }
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"); } } } }
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"); }
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"); }
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; }
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(); }
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(); }
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(); }
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(); }
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(); }
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 }, } }; }
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(); }
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 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 }, } }; }
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 (); }
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(); }
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"); } } } }
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(); }