From c0aa18c1a44f20ab00ff1df27fd5517cfeb1a972 Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Tue, 18 Dec 2018 18:39:23 +0530 Subject: [PATCH 01/18] User Exception handling in SubscribeHandler --- PubNubUnity/Assets/PubNub/ExampleScene.unity | 2 +- PubNubUnity/Assets/PubNub/Examples/Example.cs | 10 +- .../Assets/PubNub/Helpers/CustomException.cs | 6 + PubNubUnity/Assets/PubNub/PubNub.cs | 6 +- .../PubNub/WebRequest/PNUnityWebRequest.cs | 5 + .../PubNub/Workers/SubscriptionWorker.cs | 5 + .../ProjectSettings/AudioManager.asset | 34 +- .../ProjectSettings/ClusterInputManager.asset | 12 +- .../ProjectSettings/DynamicsManager.asset | 58 +- .../ProjectSettings/EditorBuildSettings.asset | 8 +- .../ProjectSettings/EditorSettings.asset | 43 +- .../ProjectSettings/GraphicsSettings.asset | 3 + .../ProjectSettings/InputManager.asset | 590 +++++++++--------- .../ProjectSettings/NavMeshAreas.asset | 182 +++--- .../ProjectSettings/NetworkManager.asset | 8 + .../ProjectSettings/Physics2DSettings.asset | 92 ++- .../ProjectSettings/PresetManager.asset | 33 +- .../ProjectSettings/ProjectSettings.asset | 80 ++- .../ProjectSettings/QualitySettings.asset | 414 ++++++------ PubNubUnity/ProjectSettings/TagManager.asset | 86 +-- PubNubUnity/ProjectSettings/TimeManager.asset | 2 +- .../UnityConnectSettings.asset | 2 +- 22 files changed, 860 insertions(+), 821 deletions(-) create mode 100644 PubNubUnity/ProjectSettings/NetworkManager.asset diff --git a/PubNubUnity/Assets/PubNub/ExampleScene.unity b/PubNubUnity/Assets/PubNub/ExampleScene.unity index 48e4da8e..013d151b 100644 --- a/PubNubUnity/Assets/PubNub/ExampleScene.unity +++ b/PubNubUnity/Assets/PubNub/ExampleScene.unity @@ -1837,7 +1837,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} m_AnchoredPosition: {x: 224.19997, y: -299.9} - m_SizeDelta: {x: 390.7, y: 0} + m_SizeDelta: {x: 390.7, y: 9.333333} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &582394247 MonoBehaviour: diff --git a/PubNubUnity/Assets/PubNub/Examples/Example.cs b/PubNubUnity/Assets/PubNub/Examples/Example.cs index 96025849..74873077 100644 --- a/PubNubUnity/Assets/PubNub/Examples/Example.cs +++ b/PubNubUnity/Assets/PubNub/Examples/Example.cs @@ -386,7 +386,7 @@ void Init(){ listChannelGroups = new List (){cg1, cg2}; listChannels = new List (){ch1, ch2}; - //pubnub.SusbcribeCallback += SusbcribeCallbackHandler; + pubnub.SusbcribeCallback += SusbcribeCallbackHandler2; /*pubnub.SusbcribeCallback += (sender, e) => { @@ -416,7 +416,7 @@ void Init(){ } };*/ - //pubnub.Subscribe ().ChannelGroups(new List (){"my_channel"}).Channels(new List (){"my_channel"}).WithPresence().Execute(); + pubnub.Subscribe ().ChannelGroups(new List (){"my_channel_group"}).Channels(new List (){"channel1"}).WithPresence().Execute(); //GetHistoryRecursive(0, "channel1"); /*pubnub.SusbcribeCallback += SusbcribeCallbackHandler2; @@ -465,10 +465,10 @@ void SusbcribeCallbackHandler2(object sender, EventArgs e) { } if (mea.MessageResult != null) { Debug.Log("SusbcribeCallback in message" + mea.MessageResult.Channel + mea.MessageResult.Payload); - Dictionary messageIds = mea.MessageResult.Payload as Dictionary; + // Dictionary messageIds = mea.MessageResult.Payload as Dictionary; - UnityEngine.Debug.Log("message_id:" + messageIds["message_id"]); - DisplayMessages (messageIds, mea.MessageResult.Channel); + // UnityEngine.Debug.Log("message_id:" + messageIds["message_id"]); + // DisplayMessages (messageIds, mea.MessageResult.Channel); } diff --git a/PubNubUnity/Assets/PubNub/Helpers/CustomException.cs b/PubNubUnity/Assets/PubNub/Helpers/CustomException.cs index 3b403b98..ede6a3f5 100644 --- a/PubNubUnity/Assets/PubNub/Helpers/CustomException.cs +++ b/PubNubUnity/Assets/PubNub/Helpers/CustomException.cs @@ -8,4 +8,10 @@ public PubNubException() { } public PubNubException(string message) : base(message) { } public PubNubException(string message, System.Exception inner) : base(message, inner) { } } + public class PubNubUserException : System.Exception + { + public PubNubUserException() { } + public PubNubUserException(string message) : base(message) { } + public PubNubUserException(string message, System.Exception inner) : base(message, inner) { } + } } \ No newline at end of file diff --git a/PubNubUnity/Assets/PubNub/PubNub.cs b/PubNubUnity/Assets/PubNub/PubNub.cs index 0cff15f6..2f0ea0d9 100644 --- a/PubNubUnity/Assets/PubNub/PubNub.cs +++ b/PubNubUnity/Assets/PubNub/PubNub.cs @@ -38,7 +38,11 @@ private void PubNubUnityInitializationAfterCleanup(){ public event EventHandler SusbcribeCallback; private void RaiseEvent(EventArgs ea){ if (SusbcribeCallback != null) { - SusbcribeCallback.Raise (typeof(PubNub), ea); + try{ + SusbcribeCallback.Raise (typeof(PubNub), ea); + }catch (Exception ex) { + throw new PubNubUserException(ex.Message, ex); + } } } diff --git a/PubNubUnity/Assets/PubNub/WebRequest/PNUnityWebRequest.cs b/PubNubUnity/Assets/PubNub/WebRequest/PNUnityWebRequest.cs index 8fda306e..98afdd85 100644 --- a/PubNubUnity/Assets/PubNub/WebRequest/PNUnityWebRequest.cs +++ b/PubNubUnity/Assets/PubNub/WebRequest/PNUnityWebRequest.cs @@ -377,6 +377,11 @@ public void ProcessResponse (UnityWebRequestWrapper unityWebRequestWrapper, stri #endif FireEvent (message, isError, false, unityWebRequestWrapper.CurrentRequestState, unityWebRequestWrapper.CurrentRequestType, key); } + } catch (PubNubUserException ex) { + #if (ENABLE_PUBNUB_LOGGING) + this.PNLog.WriteToLog (string.Format ("ProcessResponse: PubNubUserException: Exception={0}", ex.ToString ()), PNLoggingMethod.LevelError); + #endif + throw ex; } catch (Exception ex) { #if (ENABLE_PUBNUB_LOGGING) this.PNLog.WriteToLog (string.Format ("ProcessResponse: RunWebRequestSub {0}, Exception: {1}", unityWebRequestWrapper.CurrentRequestType.ToString (), ex.ToString ()), PNLoggingMethod.LevelError); diff --git a/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs b/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs index 1f6fdfa6..0270c0a7 100644 --- a/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs +++ b/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs @@ -705,6 +705,11 @@ private void WebRequestCompleteHandler (object sender, EventArgs ea) } } + } catch (PubNubUserException ex) { + #if (ENABLE_PUBNUB_LOGGING) + this.PubNubInstance.PNLog.WriteToLog (string.Format ("WebRequestCompleteHandler: PubNubUserException: Exception={0}", ex.ToString ()), PNLoggingMethod.LevelError); + #endif + throw ex; } catch (Exception ex) { #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog (string.Format ("WebRequestCompleteHandler: Exception={0}", ex.ToString ()), PNLoggingMethod.LevelError); diff --git a/PubNubUnity/ProjectSettings/AudioManager.asset b/PubNubUnity/ProjectSettings/AudioManager.asset index 4f31e744..304925eb 100644 --- a/PubNubUnity/ProjectSettings/AudioManager.asset +++ b/PubNubUnity/ProjectSettings/AudioManager.asset @@ -1,17 +1,17 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!11 &1 -AudioManager: - m_ObjectHideFlags: 0 - m_Volume: 1 - Rolloff Scale: 1 - Doppler Factor: 1 - Default Speaker Mode: 2 - m_SampleRate: 0 - m_DSPBufferSize: 1024 - m_VirtualVoiceCount: 512 - m_RealVoiceCount: 32 - m_SpatializerPlugin: - m_AmbisonicDecoderPlugin: - m_DisableAudio: 0 - m_VirtualizeEffects: 1 +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!11 &1 +AudioManager: + m_ObjectHideFlags: 0 + m_Volume: 1 + Rolloff Scale: 1 + Doppler Factor: 1 + Default Speaker Mode: 2 + m_SampleRate: 0 + m_DSPBufferSize: 1024 + m_VirtualVoiceCount: 512 + m_RealVoiceCount: 32 + m_SpatializerPlugin: + m_AmbisonicDecoderPlugin: + m_DisableAudio: 0 + m_VirtualizeEffects: 1 diff --git a/PubNubUnity/ProjectSettings/ClusterInputManager.asset b/PubNubUnity/ProjectSettings/ClusterInputManager.asset index e7886b26..a84cf4e6 100644 --- a/PubNubUnity/ProjectSettings/ClusterInputManager.asset +++ b/PubNubUnity/ProjectSettings/ClusterInputManager.asset @@ -1,6 +1,6 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!236 &1 -ClusterInputManager: - m_ObjectHideFlags: 0 - m_Inputs: [] +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!236 &1 +ClusterInputManager: + m_ObjectHideFlags: 0 + m_Inputs: [] diff --git a/PubNubUnity/ProjectSettings/DynamicsManager.asset b/PubNubUnity/ProjectSettings/DynamicsManager.asset index 78992f08..d2855a33 100644 --- a/PubNubUnity/ProjectSettings/DynamicsManager.asset +++ b/PubNubUnity/ProjectSettings/DynamicsManager.asset @@ -1,29 +1,29 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!55 &1 -PhysicsManager: - m_ObjectHideFlags: 0 - serializedVersion: 7 - m_Gravity: {x: 0, y: -9.81, z: 0} - m_DefaultMaterial: {fileID: 0} - m_BounceThreshold: 2 - m_SleepThreshold: 0.005 - m_DefaultContactOffset: 0.01 - m_DefaultSolverIterations: 6 - m_DefaultSolverVelocityIterations: 1 - m_QueriesHitBackfaces: 0 - m_QueriesHitTriggers: 1 - m_EnableAdaptiveForce: 0 - m_ClothInterCollisionDistance: 0 - m_ClothInterCollisionStiffness: 0 - m_ContactsGeneration: 1 - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff - m_AutoSimulation: 1 - m_AutoSyncTransforms: 1 - m_ClothInterCollisionSettingsToggle: 0 - m_ContactPairsMode: 0 - m_BroadphaseType: 0 - m_WorldBounds: - m_Center: {x: 0, y: 0, z: 0} - m_Extent: {x: 250, y: 250, z: 250} - m_WorldSubdivisions: 8 +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!55 &1 +PhysicsManager: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_Gravity: {x: 0, y: -9.81, z: 0} + m_DefaultMaterial: {fileID: 0} + m_BounceThreshold: 2 + m_SleepThreshold: 0.005 + m_DefaultContactOffset: 0.01 + m_DefaultSolverIterations: 6 + m_DefaultSolverVelocityIterations: 1 + m_QueriesHitBackfaces: 0 + m_QueriesHitTriggers: 1 + m_EnableAdaptiveForce: 0 + m_ClothInterCollisionDistance: 0 + m_ClothInterCollisionStiffness: 0 + m_ContactsGeneration: 1 + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_AutoSimulation: 1 + m_AutoSyncTransforms: 1 + m_ClothInterCollisionSettingsToggle: 0 + m_ContactPairsMode: 0 + m_BroadphaseType: 0 + m_WorldBounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 250, y: 250, z: 250} + m_WorldSubdivisions: 8 diff --git a/PubNubUnity/ProjectSettings/EditorBuildSettings.asset b/PubNubUnity/ProjectSettings/EditorBuildSettings.asset index 0147887e..4181ee92 100644 --- a/PubNubUnity/ProjectSettings/EditorBuildSettings.asset +++ b/PubNubUnity/ProjectSettings/EditorBuildSettings.asset @@ -4,5 +4,11 @@ EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 - m_Scenes: [] + m_Scenes: + - enabled: 0 + path: Assets/Scenes/SampleScene.unity + guid: 99c9720ab356a0642a771bea13969a05 + - enabled: 1 + path: Assets/PubNub/ExampleScene.unity + guid: b7652d5ad86804e0d9c6616c45cc0018 m_configObjects: {} diff --git a/PubNubUnity/ProjectSettings/EditorSettings.asset b/PubNubUnity/ProjectSettings/EditorSettings.asset index fc568694..78c18acc 100644 --- a/PubNubUnity/ProjectSettings/EditorSettings.asset +++ b/PubNubUnity/ProjectSettings/EditorSettings.asset @@ -1,22 +1,21 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!159 &1 -EditorSettings: - m_ObjectHideFlags: 0 - serializedVersion: 7 - m_ExternalVersionControlSupport: Hidden Meta Files - m_SerializationMode: 2 - m_LineEndingsForNewScripts: 1 - m_DefaultBehaviorMode: 0 - m_SpritePackerMode: 0 - m_SpritePackerPaddingPower: 1 - m_EtcTextureCompressorBehavior: 1 - m_EtcTextureFastCompressor: 1 - m_EtcTextureNormalCompressor: 2 - m_EtcTextureBestCompressor: 4 - m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp - m_ProjectGenerationRootNamespace: - m_UserGeneratedProjectSuffix: - m_CollabEditorSettings: - inProgressEnabled: 1 - m_EnableTextureStreamingInPlayMode: 1 +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!159 &1 +EditorSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_ExternalVersionControlSupport: Visible Meta Files + m_SerializationMode: 2 + m_LineEndingsForNewScripts: 2 + m_DefaultBehaviorMode: 0 + m_SpritePackerMode: 0 + m_SpritePackerPaddingPower: 1 + m_EtcTextureCompressorBehavior: 1 + m_EtcTextureFastCompressor: 1 + m_EtcTextureNormalCompressor: 2 + m_EtcTextureBestCompressor: 4 + m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd + m_ProjectGenerationRootNamespace: + m_UserGeneratedProjectSuffix: + m_CollabEditorSettings: + inProgressEnabled: 1 diff --git a/PubNubUnity/ProjectSettings/GraphicsSettings.asset b/PubNubUnity/ProjectSettings/GraphicsSettings.asset index 74d7b532..e21d2cd8 100644 --- a/PubNubUnity/ProjectSettings/GraphicsSettings.asset +++ b/PubNubUnity/ProjectSettings/GraphicsSettings.asset @@ -35,6 +35,9 @@ GraphicsSettings: - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0} m_PreloadedShaders: [] m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} diff --git a/PubNubUnity/ProjectSettings/InputManager.asset b/PubNubUnity/ProjectSettings/InputManager.asset index 17c8f538..25966468 100644 --- a/PubNubUnity/ProjectSettings/InputManager.asset +++ b/PubNubUnity/ProjectSettings/InputManager.asset @@ -1,295 +1,295 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!13 &1 -InputManager: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Axes: - - serializedVersion: 3 - m_Name: Horizontal - descriptiveName: - descriptiveNegativeName: - negativeButton: left - positiveButton: right - altNegativeButton: a - altPositiveButton: d - gravity: 3 - dead: 0.001 - sensitivity: 3 - snap: 1 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Vertical - descriptiveName: - descriptiveNegativeName: - negativeButton: down - positiveButton: up - altNegativeButton: s - altPositiveButton: w - gravity: 3 - dead: 0.001 - sensitivity: 3 - snap: 1 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire1 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left ctrl - altNegativeButton: - altPositiveButton: mouse 0 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire2 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left alt - altNegativeButton: - altPositiveButton: mouse 1 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire3 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left shift - altNegativeButton: - altPositiveButton: mouse 2 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Jump - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: space - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse X - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse Y - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 1 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse ScrollWheel - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 2 - joyNum: 0 - - serializedVersion: 3 - m_Name: Horizontal - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0.19 - sensitivity: 1 - snap: 0 - invert: 0 - type: 2 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Vertical - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0.19 - sensitivity: 1 - snap: 0 - invert: 1 - type: 2 - axis: 1 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire1 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 0 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire2 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 1 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire3 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 2 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Jump - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 3 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Submit - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: return - altNegativeButton: - altPositiveButton: joystick button 0 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Submit - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: enter - altNegativeButton: - altPositiveButton: space - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Cancel - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: escape - altNegativeButton: - altPositiveButton: joystick button 1 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!13 &1 +InputManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Axes: + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: a + altPositiveButton: d + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: s + altPositiveButton: w + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: mouse 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: mouse 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: mouse 2 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: space + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse X + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse Y + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse ScrollWheel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 2 + joyNum: 0 + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 0 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 1 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 2 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 3 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: enter + altNegativeButton: + altPositiveButton: space + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Cancel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: escape + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 diff --git a/PubNubUnity/ProjectSettings/NavMeshAreas.asset b/PubNubUnity/ProjectSettings/NavMeshAreas.asset index 3b0b7c3d..c8fa1b5b 100644 --- a/PubNubUnity/ProjectSettings/NavMeshAreas.asset +++ b/PubNubUnity/ProjectSettings/NavMeshAreas.asset @@ -1,91 +1,91 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!126 &1 -NavMeshProjectSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - areas: - - name: Walkable - cost: 1 - - name: Not Walkable - cost: 1 - - name: Jump - cost: 2 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - m_LastAgentTypeID: -887442657 - m_Settings: - - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.75 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_SettingNames: - - Humanoid +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!126 &1 +NavMeshProjectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + areas: + - name: Walkable + cost: 1 + - name: Not Walkable + cost: 1 + - name: Jump + cost: 2 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + m_LastAgentTypeID: -887442657 + m_Settings: + - serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.75 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_SettingNames: + - Humanoid diff --git a/PubNubUnity/ProjectSettings/NetworkManager.asset b/PubNubUnity/ProjectSettings/NetworkManager.asset new file mode 100644 index 00000000..e9cd5781 --- /dev/null +++ b/PubNubUnity/ProjectSettings/NetworkManager.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!149 &1 +NetworkManager: + m_ObjectHideFlags: 0 + m_DebugLevel: 0 + m_Sendrate: 15 + m_AssetToPrefab: {} diff --git a/PubNubUnity/ProjectSettings/Physics2DSettings.asset b/PubNubUnity/ProjectSettings/Physics2DSettings.asset index 8e9e0210..2446c25e 100644 --- a/PubNubUnity/ProjectSettings/Physics2DSettings.asset +++ b/PubNubUnity/ProjectSettings/Physics2DSettings.asset @@ -1,55 +1,37 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!19 &1 -Physics2DSettings: - m_ObjectHideFlags: 0 - serializedVersion: 3 - m_Gravity: {x: 0, y: -9.81} - m_DefaultMaterial: {fileID: 0} - m_VelocityIterations: 8 - m_PositionIterations: 3 - m_VelocityThreshold: 1 - m_MaxLinearCorrection: 0.2 - m_MaxAngularCorrection: 8 - m_MaxTranslationSpeed: 100 - m_MaxRotationSpeed: 360 - m_BaumgarteScale: 0.2 - m_BaumgarteTimeOfImpactScale: 0.75 - m_TimeToSleep: 0.5 - m_LinearSleepTolerance: 0.01 - m_AngularSleepTolerance: 2 - m_DefaultContactOffset: 0.01 - m_JobOptions: - serializedVersion: 2 - useMultithreading: 0 - useConsistencySorting: 0 - m_InterpolationPosesPerJob: 100 - m_NewContactsPerJob: 30 - m_CollideContactsPerJob: 100 - m_ClearFlagsPerJob: 200 - m_ClearBodyForcesPerJob: 200 - m_SyncDiscreteFixturesPerJob: 50 - m_SyncContinuousFixturesPerJob: 50 - m_FindNearestContactsPerJob: 100 - m_UpdateTriggerContactsPerJob: 100 - m_IslandSolverCostThreshold: 100 - m_IslandSolverBodyCostScale: 1 - m_IslandSolverContactCostScale: 10 - m_IslandSolverJointCostScale: 10 - m_IslandSolverBodiesPerJob: 50 - m_IslandSolverContactsPerJob: 50 - m_AutoSimulation: 1 - m_QueriesHitTriggers: 1 - m_QueriesStartInColliders: 1 - m_CallbacksOnDisable: 1 - m_AutoSyncTransforms: 1 - m_AlwaysShowColliders: 0 - m_ShowColliderSleep: 1 - m_ShowColliderContacts: 0 - m_ShowColliderAABB: 0 - m_ContactArrowScale: 0.2 - m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} - m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} - m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} - m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!19 &1 +Physics2DSettings: + m_ObjectHideFlags: 0 + serializedVersion: 3 + m_Gravity: {x: 0, y: -9.81} + m_DefaultMaterial: {fileID: 0} + m_VelocityIterations: 8 + m_PositionIterations: 3 + m_VelocityThreshold: 1 + m_MaxLinearCorrection: 0.2 + m_MaxAngularCorrection: 8 + m_MaxTranslationSpeed: 100 + m_MaxRotationSpeed: 360 + m_BaumgarteScale: 0.2 + m_BaumgarteTimeOfImpactScale: 0.75 + m_TimeToSleep: 0.5 + m_LinearSleepTolerance: 0.01 + m_AngularSleepTolerance: 2 + m_DefaultContactOffset: 0.01 + m_AutoSimulation: 1 + m_QueriesHitTriggers: 1 + m_QueriesStartInColliders: 1 + m_ChangeStopsCallbacks: 0 + m_CallbacksOnDisable: 1 + m_AutoSyncTransforms: 1 + m_AlwaysShowColliders: 0 + m_ShowColliderSleep: 1 + m_ShowColliderContacts: 0 + m_ShowColliderAABB: 0 + m_ContactArrowScale: 0.2 + m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} + m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} + m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} + m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/PubNubUnity/ProjectSettings/PresetManager.asset b/PubNubUnity/ProjectSettings/PresetManager.asset index 636a595b..b43eac1d 100644 --- a/PubNubUnity/ProjectSettings/PresetManager.asset +++ b/PubNubUnity/ProjectSettings/PresetManager.asset @@ -1,6 +1,27 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1386491679 &1 -PresetManager: - m_ObjectHideFlags: 0 - m_DefaultList: [] +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1386491679 &1 +PresetManager: + m_ObjectHideFlags: 0 + m_DefaultList: + - type: + m_NativeTypeID: 108 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + defaultPresets: + - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea, + type: 2} + - type: + m_NativeTypeID: 1020 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + defaultPresets: + - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6, + type: 2} + - type: + m_NativeTypeID: 1006 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + defaultPresets: + - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9, + type: 2} diff --git a/PubNubUnity/ProjectSettings/ProjectSettings.asset b/PubNubUnity/ProjectSettings/ProjectSettings.asset index c3351d44..0cbba2f1 100644 --- a/PubNubUnity/ProjectSettings/ProjectSettings.asset +++ b/PubNubUnity/ProjectSettings/ProjectSettings.asset @@ -4,7 +4,7 @@ PlayerSettings: m_ObjectHideFlags: 0 serializedVersion: 15 - productGUID: b4bac2bb3a50b4de8af9ca8230d3bea9 + productGUID: 1d54926dd6ba6460ba5dfc6f39403fc3 AndroidProfiler: 0 AndroidFilterTouchesWhenObscured: 0 AndroidEnableSustainedPerformanceMode: 0 @@ -13,7 +13,7 @@ PlayerSettings: useOnDemandResources: 0 accelerometerFrequency: 60 companyName: DefaultCompany - productName: unity-4.0.2 + productName: New Unity Project (6) defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0} m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} @@ -80,7 +80,7 @@ PlayerSettings: resizableWindow: 0 useMacAppStoreValidation: 0 macAppStoreCategory: public.app-category.games - gpuSkinning: 0 + gpuSkinning: 1 graphicsJobs: 0 xboxPIXTextureCapture: 0 xboxEnableAvatar: 0 @@ -118,13 +118,13 @@ PlayerSettings: 16:10: 1 16:9: 1 Others: 1 - bundleVersion: 1.0 + bundleVersion: 0.1 preloadedAssets: [] metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1 xboxOneDisableKinectGpuReservation: 0 - xboxOneEnable7thCore: 1 + xboxOneEnable7thCore: 0 vrSettings: cardboard: depthFormat: 0 @@ -165,7 +165,7 @@ PlayerSettings: CreateWallpaper: 0 APKExpansionFiles: 0 keepLoadedShadersAlive: 0 - StripUnusedMeshComponents: 0 + StripUnusedMeshComponents: 1 VertexChannelCompressionMask: 4054 iPhoneSdkVersion: 988 iOSTargetOSVersionString: 8.0 @@ -235,10 +235,10 @@ PlayerSettings: iOSRequireARKit: 0 appleEnableProMotion: 0 vulkanEditorSupport: 0 - clonedFromGUID: 00000000000000000000000000000000 - templatePackageId: - templateDefaultScene: - AndroidTargetArchitectures: 1 + clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea + templatePackageId: com.unity.3d@1.0.2 + templateDefaultScene: Assets/Scenes/SampleScene.unity + AndroidTargetArchitectures: 5 AndroidSplashScreenScale: 0 androidSplashScreen: {fileID: 0} AndroidKeystoreName: @@ -257,9 +257,41 @@ PlayerSettings: resolutionDialogBanner: {fileID: 0} m_BuildTargetIcons: [] m_BuildTargetPlatformIcons: [] - m_BuildTargetBatching: [] - m_BuildTargetGraphicsAPIs: [] - m_BuildTargetVRSettings: [] + m_BuildTargetBatching: + - m_BuildTarget: Standalone + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: tvOS + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: Android + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: iPhone + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: WebGL + m_StaticBatching: 0 + m_DynamicBatching: 0 + m_BuildTargetGraphicsAPIs: + - m_BuildTarget: AndroidPlayer + m_APIs: 0b00000015000000 + m_Automatic: 1 + - m_BuildTarget: iOSSupport + m_APIs: 10000000 + m_Automatic: 1 + - m_BuildTarget: AppleTVSupport + m_APIs: 10000000 + m_Automatic: 0 + - m_BuildTarget: WebGLSupport + m_APIs: 0b000000 + m_Automatic: 1 + m_BuildTargetVRSettings: + - m_BuildTarget: Standalone + m_Enabled: 0 + m_Devices: + - Oculus + - OpenVR m_BuildTargetEnableVuforiaSettings: [] openGLRequireES31: 0 openGLRequireES31AEP: 0 @@ -436,7 +468,7 @@ PlayerSettings: ps4RemotePlayKeyAssignment: -1 ps4RemotePlayKeyMappingDir: ps4PlayTogetherPlayerCount: 0 - ps4EnterButtonAssignment: 2 + ps4EnterButtonAssignment: 1 ps4ApplicationParam1: 0 ps4ApplicationParam2: 0 ps4ApplicationParam3: 0 @@ -444,7 +476,7 @@ PlayerSettings: ps4DownloadDataSize: 0 ps4GarlicHeapSize: 2048 ps4ProGarlicHeapSize: 2560 - ps4Passcode: 5PN2qmWqBlQ9wQj99nsQzldVI5ZuGXbE + ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ ps4pnSessions: 1 ps4pnPresence: 1 ps4pnFriends: 1 @@ -456,7 +488,7 @@ PlayerSettings: ps4ReprojectionSupport: 0 ps4UseAudio3dBackend: 0 ps4SocialScreenEnabled: 0 - ps4ScriptOptimizationLevel: 2 + ps4ScriptOptimizationLevel: 0 ps4Audio3dVirtualSpeakerCount: 14 ps4attribCpuUsage: 0 ps4PatchPkgPath: @@ -491,7 +523,7 @@ PlayerSettings: psp2LiveAreaTrialPath: psp2PatchChangeInfoPath: psp2PatchOriginalPackage: - psp2PackagePassword: WRK5RhRXdCdG5nG5azdNMK66MuCV6GXi + psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui psp2KeystoneFile: psp2MemoryExpansionMode: 0 psp2DRMType: 0 @@ -520,7 +552,7 @@ PlayerSettings: psp2UseLibLocation: 0 psp2InfoBarOnStartup: 0 psp2InfoBarColor: 0 - psp2ScriptOptimizationLevel: 2 + psp2ScriptOptimizationLevel: 0 splashScreenBackgroundSourceLandscape: {fileID: 0} splashScreenBackgroundSourcePortrait: {fileID: 0} spritePackerPolicy: @@ -536,7 +568,8 @@ PlayerSettings: webGLUseEmbeddedResources: 0 webGLCompressionFormat: 1 webGLLinkerTarget: 1 - scriptingDefineSymbols: {} + scriptingDefineSymbols: + 1: platformArchitecture: {} scriptingBackend: {} il2cppCompilerConfiguration: {} @@ -547,14 +580,14 @@ PlayerSettings: apiCompatibilityLevelPerPlatform: {} m_RenderingPath: 1 m_MobileRenderingPath: 1 - metroPackageName: unity-4.0.2 + metroPackageName: Template_3D metroPackageVersion: metroCertificatePath: metroCertificatePassword: metroCertificateSubject: metroCertificateIssuer: metroCertificateNotAfter: 0000000000000000 - metroApplicationDescription: unity-4.0.2 + metroApplicationDescription: Template_3D wsaImages: {} metroTileShortName: metroTileShowName: 0 @@ -601,7 +634,7 @@ PlayerSettings: XboxOneCapability: [] XboxOneGameRating: {} XboxOneIsContentPackage: 0 - XboxOneEnableGPUVariability: 1 + XboxOneEnableGPUVariability: 0 XboxOneSockets: {} XboxOneSplashScreen: {fileID: 0} XboxOneAllowedProductIds: [] @@ -612,7 +645,8 @@ PlayerSettings: daydream: daydreamIconForeground: {fileID: 0} daydreamIconBackground: {fileID: 0} - cloudServicesEnabled: {} + cloudServicesEnabled: + UNet: 1 facebookSdkVersion: 7.9.4 apiCompatibilityLevel: 2 cloudProjectId: diff --git a/PubNubUnity/ProjectSettings/QualitySettings.asset b/PubNubUnity/ProjectSettings/QualitySettings.asset index e3cf3536..ddad6fe8 100644 --- a/PubNubUnity/ProjectSettings/QualitySettings.asset +++ b/PubNubUnity/ProjectSettings/QualitySettings.asset @@ -1,224 +1,190 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!47 &1 -QualitySettings: - m_ObjectHideFlags: 0 - serializedVersion: 5 - m_CurrentQuality: 5 - m_QualitySettings: - - serializedVersion: 2 - name: Very Low - pixelLightCount: 0 - shadows: 0 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 15 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - blendWeights: 1 - textureQuality: 1 - anisotropicTextures: 0 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 0 - lodBias: 0.3 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 4 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Low - pixelLightCount: 0 - shadows: 0 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 20 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - blendWeights: 2 - textureQuality: 0 - anisotropicTextures: 0 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 0 - lodBias: 0.4 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 16 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Medium - pixelLightCount: 1 - shadows: 1 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 20 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - blendWeights: 2 - textureQuality: 0 - anisotropicTextures: 1 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 1 - lodBias: 0.7 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 64 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: High - pixelLightCount: 2 - shadows: 2 - shadowResolution: 1 - shadowProjection: 1 - shadowCascades: 2 - shadowDistance: 40 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - blendWeights: 2 - textureQuality: 0 - anisotropicTextures: 1 - antiAliasing: 0 - softParticles: 0 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 1 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 256 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Very High - pixelLightCount: 3 - shadows: 2 - shadowResolution: 2 - shadowProjection: 1 - shadowCascades: 2 - shadowDistance: 70 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - blendWeights: 4 - textureQuality: 0 - anisotropicTextures: 2 - antiAliasing: 2 - softParticles: 1 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 1.5 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 1024 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Ultra - pixelLightCount: 4 - shadows: 2 - shadowResolution: 2 - shadowProjection: 1 - shadowCascades: 4 - shadowDistance: 150 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - blendWeights: 4 - textureQuality: 0 - anisotropicTextures: 2 - antiAliasing: 2 - softParticles: 1 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 2 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 4096 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - m_PerPlatformDefaultQuality: - Android: 2 - Nintendo 3DS: 5 - Nintendo Switch: 5 - PS4: 5 - PSP2: 2 - Standalone: 5 - WebGL: 3 - Windows Store Apps: 5 - XboxOne: 5 - iPhone: 2 - tvOS: 2 +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!47 &1 +QualitySettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_CurrentQuality: 4 + m_QualitySettings: + - serializedVersion: 2 + name: Very Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 15 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 1 + textureQuality: 1 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.3 + maximumLODLevel: 0 + particleRaycastBudget: 4 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 4 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.4 + maximumLODLevel: 0 + particleRaycastBudget: 16 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 4 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Medium + pixelLightCount: 1 + shadows: 1 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 1 + lodBias: 0.7 + maximumLODLevel: 0 + particleRaycastBudget: 64 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 4 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: High + pixelLightCount: 2 + shadows: 2 + shadowResolution: 1 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 40 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 2 + softParticles: 0 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1 + maximumLODLevel: 0 + particleRaycastBudget: 256 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 4 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Very High + pixelLightCount: 3 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 40 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 4 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1.5 + maximumLODLevel: 0 + particleRaycastBudget: 1024 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 4 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Ultra + pixelLightCount: 4 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 4 + shadowDistance: 150 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 4 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 2 + maximumLODLevel: 0 + particleRaycastBudget: 4096 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 4 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + m_PerPlatformDefaultQuality: + Android: 2 + Nintendo 3DS: 5 + Nintendo Switch: 5 + PS4: 5 + PSP2: 2 + Standalone: 5 + Tizen: 2 + WebGL: 3 + WiiU: 5 + Windows Store Apps: 5 + XboxOne: 5 + iPhone: 2 + tvOS: 2 diff --git a/PubNubUnity/ProjectSettings/TagManager.asset b/PubNubUnity/ProjectSettings/TagManager.asset index 1c92a784..5ce97fb0 100644 --- a/PubNubUnity/ProjectSettings/TagManager.asset +++ b/PubNubUnity/ProjectSettings/TagManager.asset @@ -1,43 +1,43 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!78 &1 -TagManager: - serializedVersion: 2 - tags: [] - layers: - - Default - - TransparentFX - - Ignore Raycast - - - - Water - - UI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - m_SortingLayers: - - name: Default - uniqueID: 0 - locked: 0 +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!78 &1 +TagManager: + serializedVersion: 2 + tags: [] + layers: + - Default + - TransparentFX + - Ignore Raycast + - + - Water + - UI + - + - + - PostProcessing + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + m_SortingLayers: + - name: Default + uniqueID: 0 + locked: 0 diff --git a/PubNubUnity/ProjectSettings/TimeManager.asset b/PubNubUnity/ProjectSettings/TimeManager.asset index 558a017e..06bcc6d2 100644 --- a/PubNubUnity/ProjectSettings/TimeManager.asset +++ b/PubNubUnity/ProjectSettings/TimeManager.asset @@ -4,6 +4,6 @@ TimeManager: m_ObjectHideFlags: 0 Fixed Timestep: 0.02 - Maximum Allowed Timestep: 0.33333334 + Maximum Allowed Timestep: 0.1 m_TimeScale: 1 Maximum Particle Timestep: 0.03 diff --git a/PubNubUnity/ProjectSettings/UnityConnectSettings.asset b/PubNubUnity/ProjectSettings/UnityConnectSettings.asset index 3da14d5b..1be46005 100644 --- a/PubNubUnity/ProjectSettings/UnityConnectSettings.asset +++ b/PubNubUnity/ProjectSettings/UnityConnectSettings.asset @@ -3,7 +3,7 @@ --- !u!310 &1 UnityConnectSettings: m_ObjectHideFlags: 0 - m_Enabled: 0 + m_Enabled: 1 m_TestMode: 0 m_TestEventUrl: m_TestConfigUrl: From 9370981cc0598525cf4e5b00c4753f0e68e074a0 Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Tue, 1 Jan 2019 14:52:23 +0530 Subject: [PATCH 02/18] Logging and heartbeat changes --- .../Assets/PubNub/Logger/PNLoggingMethod.cs | 2 +- .../PubNub/Workers/PresenceHeartbeatWorker.cs | 16 ++++++++++++++-- .../Assets/PubNub/Workers/SubscriptionWorker.cs | 2 ++ .../ProjectSettings/ProjectSettings.asset | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/PubNubUnity/Assets/PubNub/Logger/PNLoggingMethod.cs b/PubNubUnity/Assets/PubNub/Logger/PNLoggingMethod.cs index a48c1608..e1fae386 100644 --- a/PubNubUnity/Assets/PubNub/Logger/PNLoggingMethod.cs +++ b/PubNubUnity/Assets/PubNub/Logger/PNLoggingMethod.cs @@ -64,7 +64,7 @@ public PNLoggingMethod(PNLogVerbosity pnLogVerbosity){ public void WriteToLog (string logText, bool write) { if (PNLogVerb.Equals(PNLogVerbosity.BODY)) { - UnityEngine.Debug.Log (string.Format("\n{0} {1}: {2} \n", DateTime.UtcNow.ToShortDateString(), DateTime.UtcNow.ToShortTimeString(), logText)); + UnityEngine.Debug.Log (string.Format("\n{0} {1}, {2}: {3}\n", DateTime.Now.ToShortDateString(), DateTime.Now.ToLongTimeString(), TimeZone.CurrentTimeZone.StandardName, logText)); } } } diff --git a/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs b/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs index 2586e9e3..9190c89b 100644 --- a/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs +++ b/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs @@ -71,7 +71,7 @@ private void PresenceHeartbeatHandler (CustomEventArgs cea){ #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog (string.Format ("PresenceHeartbeatHandler keepPresenceHearbeatRunning={0} isPresenceHearbeatRunning={1}", keepPresenceHearbeatRunning, isPresenceHearbeatRunning), PNLoggingMethod.LevelError); #endif - + isPresenceHearbeatRunning = false; #if (ENABLE_PUBNUB_LOGGING) @@ -109,8 +109,20 @@ void StartPresenceHeartbeat (bool pause, int pauseTime) requestState.URL = request.OriginalString; requestState.Timeout = PubNubInstance.PNConfig.NonSubscribeTimeout; requestState.Pause = pauseTime; - requestState.Reconnect = pause; + if(PubNubInstance.SubWorker.RequestSentAt != null){ + int timediff = PubNubInstance.PNConfig.PresenceInterval - (DateTime.UtcNow.Second - PubNubInstance.SubWorker.RequestSentAt); + + if(timediff > 10){ + #if (ENABLE_PUBNUB_LOGGING) + this.PubNubInstance.PNLog.WriteToLog (string.Format ("presenceheartbeat timediff: {0} ", timediff), PNLoggingMethod.LevelInfo); + #endif + requestState.Pause = pauseTime+timediff; + } + } + + requestState.Reconnect = pause; + #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog (string.Format ("presenceheartbeat: request.OriginalString {0} ", request.OriginalString ), PNLoggingMethod.LevelError); #endif diff --git a/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs b/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs index 0270c0a7..d19687b9 100644 --- a/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs +++ b/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs @@ -26,6 +26,7 @@ public class SubscriptionWorker private bool internetStatus = true; readonly bool enableResumeOnReconnect; + public int RequestSentAt; //Allow one instance only @@ -329,6 +330,7 @@ private void RunSubscribeRequest (long timetoken, bool reconnect) #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog (string.Format ("RunRequests: Heartbeat started"), PNLoggingMethod.LevelInfo); #endif + RequestSentAt = DateTime.UtcNow.Second; if (PubNubInstance.PNConfig.PresenceInterval > 0){ phbWorker.RunPresenceHeartbeat(false, PubNubInstance.PNConfig.PresenceInterval); } diff --git a/PubNubUnity/ProjectSettings/ProjectSettings.asset b/PubNubUnity/ProjectSettings/ProjectSettings.asset index 0cbba2f1..197ed8aa 100644 --- a/PubNubUnity/ProjectSettings/ProjectSettings.asset +++ b/PubNubUnity/ProjectSettings/ProjectSettings.asset @@ -569,7 +569,7 @@ PlayerSettings: webGLCompressionFormat: 1 webGLLinkerTarget: 1 scriptingDefineSymbols: - 1: + 1: ENABLE_PUBNUB_LOGGING platformArchitecture: {} scriptingBackend: {} il2cppCompilerConfiguration: {} From d6107a6bb607697dbf2950953b89fe525135c228 Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Wed, 2 Jan 2019 12:21:57 +0530 Subject: [PATCH 03/18] Presence heartbeat improvements --- .pubnub.yml | 20 +++- PubNubUnity/Assets/PubNub/Examples/Example.cs | 9 +- .../PubNub/Workers/PresenceHeartbeatWorker.cs | 33 +++--- .../ProjectSettings/ProjectSettings.asset | 105 ++++++------------ .../ProjectSettings/ProjectVersion.txt | 2 +- .../UnityConnectSettings.asset | 14 +-- README.md | 2 +- VERSION | 2 +- 8 files changed, 88 insertions(+), 99 deletions(-) diff --git a/.pubnub.yml b/.pubnub.yml index 8e4e9ef2..4fbe0491 100644 --- a/.pubnub.yml +++ b/.pubnub.yml @@ -1,5 +1,18 @@ --- changelog: + - + changes: + - + text: "Presence Heartbeat call delays itself when a Subscribe call precedes it" + type: improvement + - + text: "Heartbeats per channel" + type: feature + - + text: "User Exceptions Fix" + type: improvement + date: "Jan 9, 19" + version: v4.0.5 - changes: - @@ -277,6 +290,8 @@ features: - PRESENCE-SET-STATE - PRESENCE-GET-STATE - PRESENCE-HEARTBEAT + - PRESENCE-HEARTBEAT-ON-DEMAND + - PRESENCE-HEARTBEAT-THROTTLED - PRESENCE-HERE-NOW-REFRESH publish: - PUBLISH-STORE-FLAG @@ -317,7 +332,8 @@ supported-platforms: - editors: - "Unity 5.5.1" - - "Unity 2017.3.0f3" + - "Unity 2017.3.*" + - "Unity 2018.*" platforms: - "iOS player, will require iOS 7.0 or higher." - "Android, OS 2.3.1 or later; ARMv7 (Cortex) CPU with NEON support or Atom CPU; OpenGL ES 2.0 or later." @@ -328,4 +344,4 @@ supported-platforms: - "Ubuntu 12.04+, with Graphics card DX9 (shader model 3.0) or DX11 with feature level 9.3 capabilities; and CPU SSE2 instruction set support." - "Mac OS X 10.8+, with Graphics card DX9 (shader model 3.0) or DX11 with feature level 9.3 capabilities; and CPU SSE2 instruction set support." version: "PubNub Unity SDK" -version: v4.0.4 +version: v4.0.5 diff --git a/PubNubUnity/Assets/PubNub/Examples/Example.cs b/PubNubUnity/Assets/PubNub/Examples/Example.cs index 74873077..ad0a9323 100644 --- a/PubNubUnity/Assets/PubNub/Examples/Example.cs +++ b/PubNubUnity/Assets/PubNub/Examples/Example.cs @@ -47,7 +47,7 @@ public class Example : MonoBehaviour { PNPushType pnPushType = PNPushType.GCM; void Awake(){ - + Application.runInBackground = true; } void ButtonClearHandler(){ @@ -366,9 +366,9 @@ void Start () { void Init(){ Debug.Log ("Starting"); PNConfiguration pnConfiguration = new PNConfiguration (); - pnConfiguration.SubscribeKey = "demo"; - pnConfiguration.PublishKey = "demo"; - pnConfiguration.SecretKey = "demo"; + pnConfiguration.SubscribeKey = "sub-c-b05d4a0c-708d-11e7-96c9-0619f8945a4f";//"demo"; + pnConfiguration.PublishKey = "pub-c-94691e07-c8aa-42f9-a838-bea61ac6655e";//"demo"; + pnConfiguration.SecretKey = "sec-c-ZmIyZjFjMjQtZTNmZC00MmIwLWFhNzUtNDUyNmIwYWU1YzRl";//"demo"; pnConfiguration.Secure = true; pnConfiguration.CipherKey = "enigma"; pnConfiguration.LogVerbosity = PNLogVerbosity.BODY; @@ -456,6 +456,7 @@ void SusbcribeCallbackHandler2(object sender, EventArgs e) { SusbcribeEventEventArgs mea = e as SusbcribeEventEventArgs; if (mea.Status != null) { + Debug.Log("mea.Status: " + mea.Status); switch (mea.Status.Category) { case PNStatusCategory.PNUnexpectedDisconnectCategory: case PNStatusCategory.PNTimeoutCategory: diff --git a/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs b/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs index 9190c89b..b1d726b2 100644 --- a/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs +++ b/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs @@ -56,6 +56,7 @@ private void WebRequestCompleteHandler (object sender, EventArgs ea) internal void StopPresenceHeartbeat () { keepPresenceHearbeatRunning = false; + PubNubInstance.SubWorker.RequestSentAt =0; if (isPresenceHearbeatRunning) { #if (ENABLE_PUBNUB_LOGGING) @@ -109,18 +110,6 @@ void StartPresenceHeartbeat (bool pause, int pauseTime) requestState.URL = request.OriginalString; requestState.Timeout = PubNubInstance.PNConfig.NonSubscribeTimeout; requestState.Pause = pauseTime; - if(PubNubInstance.SubWorker.RequestSentAt != null){ - int timediff = PubNubInstance.PNConfig.PresenceInterval - (DateTime.UtcNow.Second - PubNubInstance.SubWorker.RequestSentAt); - - if(timediff > 10){ - #if (ENABLE_PUBNUB_LOGGING) - this.PubNubInstance.PNLog.WriteToLog (string.Format ("presenceheartbeat timediff: {0} ", timediff), PNLoggingMethod.LevelInfo); - #endif - - requestState.Pause = pauseTime+timediff; - } - } - requestState.Reconnect = pause; #if (ENABLE_PUBNUB_LOGGING) @@ -130,9 +119,14 @@ void StartPresenceHeartbeat (bool pause, int pauseTime) webRequestId = webRequest.Run(requestState); #if (ENABLE_PUBNUB_LOGGING) - this.PubNubInstance.PNLog.WriteToLog (string.Format ("StartPresenceHeartbeat: PresenceHeartbeat running "), PNLoggingMethod.LevelInfo); + this.PubNubInstance.PNLog.WriteToLog (string.Format ("StartPresenceHeartbeat: PresenceHeartbeat running, {0} ", pauseTime), PNLoggingMethod.LevelInfo); #endif + } + #if (ENABLE_PUBNUB_LOGGING) + else { + this.PubNubInstance.PNLog.WriteToLog (string.Format ("StartPresenceHeartbeat: AllNonPresenceChannelsOrChannelGroups < 0 "), PNLoggingMethod.LevelInfo); } + #endif } catch (Exception ex) { #if (ENABLE_PUBNUB_LOGGING) @@ -146,6 +140,19 @@ internal void RunPresenceHeartbeat (bool pause, int pauseTime) #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog (string.Format ("RunPresenceHeartbeat keepPresenceHearbeatRunning={0} isPresenceHearbeatRunning={1}", keepPresenceHearbeatRunning, isPresenceHearbeatRunning), PNLoggingMethod.LevelError); #endif + + if(PubNubInstance.SubWorker.RequestSentAt > 0){ + int timediff = PubNubInstance.PNConfig.PresenceInterval - (DateTime.UtcNow.Second - PubNubInstance.SubWorker.RequestSentAt); + if(timediff > 10){ + #if (ENABLE_PUBNUB_LOGGING) + this.PubNubInstance.PNLog.WriteToLog (string.Format ("presenceheartbeat /presence/ timediff: {0} ", timediff), PNLoggingMethod.LevelInfo); + #endif + + StopPresenceHeartbeat(); + pause = true; + pauseTime = pauseTime; + } + } keepPresenceHearbeatRunning = true; if (!isPresenceHearbeatRunning) { diff --git a/PubNubUnity/ProjectSettings/ProjectSettings.asset b/PubNubUnity/ProjectSettings/ProjectSettings.asset index 197ed8aa..1d4f0ec5 100644 --- a/PubNubUnity/ProjectSettings/ProjectSettings.asset +++ b/PubNubUnity/ProjectSettings/ProjectSettings.asset @@ -53,7 +53,7 @@ PlayerSettings: iosShowActivityIndicatorOnLoading: -1 androidShowActivityIndicatorOnLoading: -1 iosAppInBackgroundBehavior: 0 - displayResolutionDialog: 1 + displayResolutionDialog: 2 iosAllowHTTPDownload: 1 allowedAutorotateToPortrait: 1 allowedAutorotateToPortraitUpsideDown: 1 @@ -63,6 +63,8 @@ PlayerSettings: use32BitDisplayBuffer: 1 preserveFramebufferAlpha: 0 disableDepthAndStencilBuffers: 0 + androidStartInFullscreen: 1 + androidRenderOutsideSafeArea: 0 androidBlitType: 0 defaultIsNativeResolution: 1 macRetinaSupport: 1 @@ -77,7 +79,7 @@ PlayerSettings: usePlayerLog: 1 bakeCollisionMeshes: 0 forceSingleInstance: 0 - resizableWindow: 0 + resizableWindow: 1 useMacAppStoreValidation: 0 macAppStoreCategory: public.app-category.games gpuSkinning: 1 @@ -90,15 +92,12 @@ PlayerSettings: visibleInBackground: 1 allowFullscreenSwitch: 1 graphicsJobMode: 0 - fullscreenMode: 1 + fullscreenMode: 3 xboxSpeechDB: 0 xboxEnableHeadOrientation: 0 xboxEnableGuest: 0 xboxEnablePIXSampling: 0 metalFramebufferOnly: 0 - n3dsDisableStereoscopicView: 0 - n3dsEnableSharedListOpt: 1 - n3dsEnableVSync: 0 xboxOneResolution: 0 xboxOneSResolution: 0 xboxOneXResolution: 3 @@ -107,11 +106,7 @@ PlayerSettings: xboxOneDisableEsram: 0 xboxOnePresentImmediateThreshold: 0 switchQueueCommandMemory: 0 - videoMemoryForVertexBuffers: 0 - psp2PowerMode: 0 - psp2AcquireBGM: 1 vulkanEnableSetSRGBWrite: 0 - vulkanUseSWCommandBuffers: 0 m_SupportedAspectRatios: 4:3: 1 5:4: 1 @@ -125,6 +120,7 @@ PlayerSettings: m_HolographicPauseOnTrackingLoss: 1 xboxOneDisableKinectGpuReservation: 0 xboxOneEnable7thCore: 0 + isWsaHolographicRemotingEnabled: 0 vrSettings: cardboard: depthFormat: 0 @@ -144,6 +140,7 @@ PlayerSettings: dashSupport: 0 enable360StereoCapture: 0 protectGraphicsMemory: 0 + enableFrameTimingStats: 0 useHDRDisplay: 0 m_ColorGamuts: 00000000 targetPixelDensity: 30 @@ -168,7 +165,7 @@ PlayerSettings: StripUnusedMeshComponents: 1 VertexChannelCompressionMask: 4054 iPhoneSdkVersion: 988 - iOSTargetOSVersionString: 8.0 + iOSTargetOSVersionString: 9.0 tvOSSdkVersion: 0 tvOSRequireExtendedGameController: 0 tvOSTargetOSVersionString: 9.0 @@ -234,7 +231,6 @@ PlayerSettings: appleEnableAutomaticSigning: 0 iOSRequireARKit: 0 appleEnableProMotion: 0 - vulkanEditorSupport: 0 clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea templatePackageId: com.unity.3d@1.0.2 templateDefaultScene: Assets/Scenes/SampleScene.unity @@ -423,6 +419,7 @@ PlayerSettings: switchAllowsVideoCapturing: 1 switchAllowsRuntimeAddOnContentInstall: 0 switchDataLossConfirmation: 0 + switchUserAccountLockEnabled: 0 switchSupportedNpadStyles: 3 switchNativeFsCacheSize: 32 switchIsHoldTypeHorizontal: 0 @@ -483,6 +480,7 @@ PlayerSettings: ps4pnGameCustomData: 1 playerPrefsSupport: 0 enableApplicationExit: 0 + resetTempFolder: 1 restrictedAudioUsageRights: 0 ps4UseResolutionFallback: 0 ps4ReprojectionSupport: 0 @@ -506,53 +504,6 @@ PlayerSettings: ps4attribEyeToEyeDistanceSettingVR: 0 ps4IncludedModules: [] monoEnv: - psp2Splashimage: {fileID: 0} - psp2NPTrophyPackPath: - psp2NPSupportGBMorGJP: 0 - psp2NPAgeRating: 12 - psp2NPTitleDatPath: - psp2NPCommsID: - psp2NPCommunicationsID: - psp2NPCommsPassphrase: - psp2NPCommsSig: - psp2ParamSfxPath: - psp2ManualPath: - psp2LiveAreaGatePath: - psp2LiveAreaBackroundPath: - psp2LiveAreaPath: - psp2LiveAreaTrialPath: - psp2PatchChangeInfoPath: - psp2PatchOriginalPackage: - psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui - psp2KeystoneFile: - psp2MemoryExpansionMode: 0 - psp2DRMType: 0 - psp2StorageType: 0 - psp2MediaCapacity: 0 - psp2DLCConfigPath: - psp2ThumbnailPath: - psp2BackgroundPath: - psp2SoundPath: - psp2TrophyCommId: - psp2TrophyPackagePath: - psp2PackagedResourcesPath: - psp2SaveDataQuota: 10240 - psp2ParentalLevel: 1 - psp2ShortTitle: Not Set - psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF - psp2Category: 0 - psp2MasterVersion: 01.00 - psp2AppVersion: 01.00 - psp2TVBootMode: 0 - psp2EnterButtonAssignment: 2 - psp2TVDisableEmu: 0 - psp2AllowTwitterDialog: 1 - psp2Upgradable: 0 - psp2HealthWarning: 0 - psp2UseLibLocation: 0 - psp2InfoBarOnStartup: 0 - psp2InfoBarColor: 0 - psp2ScriptOptimizationLevel: 0 splashScreenBackgroundSourceLandscape: {fileID: 0} splashScreenBackgroundSourcePortrait: {fileID: 0} spritePackerPolicy: @@ -568,11 +519,13 @@ PlayerSettings: webGLUseEmbeddedResources: 0 webGLCompressionFormat: 1 webGLLinkerTarget: 1 + webGLThreadsSupport: 0 scriptingDefineSymbols: 1: ENABLE_PUBNUB_LOGGING platformArchitecture: {} scriptingBackend: {} il2cppCompilerConfiguration: {} + managedStrippingLevel: {} incrementalIl2cppBuild: {} allowUnsafeCode: 0 additionalIl2CppArgs: @@ -594,6 +547,8 @@ PlayerSettings: metroMediumTileShowName: 0 metroLargeTileShowName: 0 metroWideTileShowName: 0 + metroSupportStreamingInstall: 0 + metroLastRequiredScene: 0 metroDefaultTileSize: 1 metroTileForegroundText: 2 metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} @@ -601,21 +556,11 @@ PlayerSettings: a: 1} metroSplashScreenUseBackgroundColor: 0 platformCapabilities: {} + metroTargetDeviceFamilies: {} metroFTAName: metroFTAFileTypes: [] metroProtocolName: metroCompilationOverrides: 1 - n3dsUseExtSaveData: 0 - n3dsCompressStaticMem: 1 - n3dsExtSaveDataNumber: 0x12345 - n3dsStackSize: 131072 - n3dsTargetPlatform: 2 - n3dsRegion: 7 - n3dsMediaSize: 0 - n3dsLogoStyle: 3 - n3dsTitle: GameName - n3dsProductCode: - n3dsApplicationId: 0xFF3FF XboxOneProductId: XboxOneUpdateKey: XboxOneSandboxId: @@ -641,17 +586,37 @@ PlayerSettings: XboxOnePersistentLocalStorageSize: 0 XboxOneXTitleMemory: 8 xboxOneScriptCompiler: 0 + XboxOneOverrideIdentityName: vrEditorSettings: daydream: daydreamIconForeground: {fileID: 0} daydreamIconBackground: {fileID: 0} cloudServicesEnabled: UNet: 1 + luminIcon: + m_Name: + m_ModelFolderPath: + m_PortalFolderPath: + luminCert: + m_CertPath: + m_PrivateKeyPath: + luminIsChannelApp: 0 + luminVersion: + m_VersionCode: 1 + m_VersionName: facebookSdkVersion: 7.9.4 + facebookAppId: + facebookCookies: 1 + facebookLogging: 1 + facebookStatus: 1 + facebookXfbml: 0 + facebookFrictionlessRequests: 1 apiCompatibilityLevel: 2 cloudProjectId: + framebufferDepthMemorylessMode: 0 projectName: organizationId: cloudEnabled: 0 enableNativePlatformBackendsForNewInputSystem: 0 disableOldInputManagerSupport: 0 + legacyClampBlendShapeWeights: 1 diff --git a/PubNubUnity/ProjectSettings/ProjectVersion.txt b/PubNubUnity/ProjectSettings/ProjectVersion.txt index 20147cb8..ca32b1e0 100644 --- a/PubNubUnity/ProjectSettings/ProjectVersion.txt +++ b/PubNubUnity/ProjectSettings/ProjectVersion.txt @@ -1 +1 @@ -m_EditorVersion: 2018.2.3f1 +m_EditorVersion: 2018.3.0f2 diff --git a/PubNubUnity/ProjectSettings/UnityConnectSettings.asset b/PubNubUnity/ProjectSettings/UnityConnectSettings.asset index 1be46005..c3ae9a02 100644 --- a/PubNubUnity/ProjectSettings/UnityConnectSettings.asset +++ b/PubNubUnity/ProjectSettings/UnityConnectSettings.asset @@ -3,25 +3,25 @@ --- !u!310 &1 UnityConnectSettings: m_ObjectHideFlags: 0 + serializedVersion: 1 m_Enabled: 1 m_TestMode: 0 - m_TestEventUrl: - m_TestConfigUrl: + m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events + m_EventUrl: https://cdp.cloud.unity3d.com/v1/events + m_ConfigUrl: https://config.uca.cloud.unity3d.com m_TestInitMode: 0 CrashReportingSettings: - m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes - m_NativeEventUrl: https://perf-events.cloud.unity3d.com/symbolicate + m_EventUrl: https://perf-events.cloud.unity3d.com m_Enabled: 0 + m_LogBufferSize: 10 m_CaptureEditorExceptions: 1 UnityPurchasingSettings: m_Enabled: 0 m_TestMode: 0 UnityAnalyticsSettings: m_Enabled: 0 - m_InitializeOnStartup: 1 m_TestMode: 0 - m_TestEventUrl: - m_TestConfigUrl: + m_InitializeOnStartup: 1 UnityAdsSettings: m_Enabled: 0 m_InitializeOnStartup: 1 diff --git a/README.md b/README.md index a92dbee1..236b02da 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Build Status](https://api.travis-ci.org/pubnub/unity.svg?branch=master)](https://travis-ci.org/pubnub/unity) [![Build status](https://ci.appveyor.com/api/projects/status/1p3494pnt6rgqdsm/branch/master?svg=true)](https://ci.appveyor.com/project/PubNub/unity) -## PubNub 4.0.4 Web Data Push Cloud-Hosted API for Unity 5+ +## PubNub 4.0.5 Web Data Push Cloud-Hosted API for Unity 5+ ### Supports PC, Mac, Linux, iOS, Android, Windows Store Universal 10 and WebGL ## All new PubNub Unity SDK diff --git a/VERSION b/VERSION index c5106e6d..7636e756 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.0.4 +4.0.5 From f39f8cfa4ad9506dfbdc71bd658e752e4b086a5b Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Thu, 3 Jan 2019 20:13:02 +0530 Subject: [PATCH 04/18] Heartbeat on demand --- .../Presence/PresenceRequestBuilder.cs | 123 ++++++++++++++++++ .../Presence/PresenceRequestBuilder.cs.meta | 11 ++ .../PubNub/EndPoints/Presence/Presence.cs | 39 ++++++ .../EndPoints/Presence/Presence.cs.meta | 11 ++ PubNubUnity/Assets/PubNub/Examples/Example.cs | 14 +- PubNubUnity/Assets/PubNub/PubNub.cs | 5 + .../Assets/PubNub/PubNubUnity/PubNubUnity.cs | 8 ++ .../PubNub/Workers/PresenceHeartbeatWorker.cs | 37 +++++- .../PubNub/Workers/SubscriptionWorker.cs | 14 +- PubNubUnity/ProjectSettings/VFXManager.asset | 11 ++ 10 files changed, 258 insertions(+), 15 deletions(-) create mode 100644 PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs create mode 100644 PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs.meta create mode 100644 PubNubUnity/Assets/PubNub/EndPoints/Presence/Presence.cs create mode 100644 PubNubUnity/Assets/PubNub/EndPoints/Presence/Presence.cs.meta create mode 100644 PubNubUnity/ProjectSettings/VFXManager.asset diff --git a/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs new file mode 100644 index 00000000..886b8d21 --- /dev/null +++ b/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs @@ -0,0 +1,123 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using UnityEngine; + +namespace PubNubAPI +{ + public class PresenceHeartbeatRequestBuilder: PubNubNonSubBuilder, IPubNubNonSubscribeBuilder + { + private bool connected { get; set;} + List ChannelEntities; + private Dictionary UserState { get; set;} + public PresenceHeartbeatRequestBuilder(PubNubUnity pn): base(pn, PNOperationType.PNPresenceHeartbeatOperation){ + } + + public void Connected(bool connected){ + this.connected = connected; + } + public void State(Dictionary state){ + this.UserState = state; + } + + public void Channels(List channelNames){ + ChannelsToUse = channelNames; + } + + public void ChannelGroups(List channelGroupNames){ + ChannelGroupsToUse = channelGroupNames; + } + + #region IPubNubBuilder implementation + public void Async(Action callback) + { + this.Callback = callback; + RequestState requestState = new RequestState (); + requestState.OperationType = OperationType; + ChannelEntities = new List(); + + string channels = ""; + if((ChannelsToUse != null) && (ChannelsToUse.Count>0)){ + string[] chArr = ChannelsToUse.ToArray(); + channels = String.Join(",", chArr); + ChannelEntities.AddRange(Helpers.CreateChannelEntity(chArr, false, false, null, PubNubInstance.PNLog)); + } + + string channelGroups = ""; + if((ChannelGroupsToUse != null) && (ChannelGroupsToUse.Count>0)){ + string[] cgArr = ChannelGroupsToUse.ToArray(); + channelGroups = String.Join(",", cgArr); + ChannelEntities.AddRange(Helpers.CreateChannelEntity(cgArr, false, true, null, PubNubInstance.PNLog)); + } + + if(connected){ + + PubNubInstance.SubWorker.PHBWorker.RunIndependentOfSubscribe = true; + PubNubInstance.SubWorker.PHBWorker.ChannelGroups = channelGroups; + PubNubInstance.SubWorker.PHBWorker.Channels = channels; + if(UserState!=null){ + PubNubInstance.SubWorker.PHBWorker.State = Helpers.BuildJsonUserState(ChannelEntities); + } else { + PubNubInstance.SubWorker.PHBWorker.State = ""; + } + + PubNubInstance.SubWorker.PHBWorker.RunPresenceHeartbeat(false, PubNubInstance.PNConfig.PresenceInterval); + } else { + PubNubInstance.SubWorker.PHBWorker.RunIndependentOfSubscribe = false; + PubNubInstance.SubWorker.PHBWorker.StopPresenceHeartbeat(); + } + } + #endregion + + protected override void RunWebRequest(QueueManager qm){ + + } + + protected override void CreatePubNubResponse(object deSerializedResult, RequestState requestState){ + //Returned JSON: `{"status": 200, "message": "OK", "payload": {"channels": {"channel1": {"k": "v"}, "channel2": {}}}, "uuid": "pn-c5a12d424054a3688066572fb955b7a0", "service": "Presence"}` + + // PNGetStateResult pnGetStateResult = new PNGetStateResult(); + + // Dictionary dictionary = deSerializedResult as Dictionary; + // PNStatus pnStatus = new PNStatus(); + // if(dictionary != null) { + // string message = Utility.ReadMessageFromResponseDictionary(dictionary, "message"); + // if(Utility.CheckDictionaryForError(dictionary, "error")){ + // pnGetStateResult = null; + // pnStatus = base.CreateErrorResponseFromMessage(message, requestState, PNStatusCategory.PNUnknownCategory); + // } else { + // object objPayload; + // dictionary.TryGetValue("payload", out objPayload); + + // if(objPayload!=null){ + // Dictionary payload = objPayload as Dictionary; + // object objChannelsDict; + // payload.TryGetValue("channels", out objChannelsDict); + + // if(objChannelsDict!=null){ + // Dictionary channelsDict = objPayload as Dictionary; + // #if (ENABLE_PUBNUB_LOGGING) + // foreach(KeyValuePair kvp in channelsDict){ + // this.PubNubInstance.PNLog.WriteToLog(string.Format ("KVP: {0} {1}", kvp.Key, kvp.Value), PNLoggingMethod.LevelInfo); + // } + // #endif + // pnGetStateResult.StateByChannels = channelsDict; + // } else { + // pnGetStateResult.StateByChannels = payload; + // } + + // } else { + // pnGetStateResult = null; + // pnStatus = base.CreateErrorResponseFromMessage("payload dictionary is null", requestState, PNStatusCategory.PNMalformedResponseCategory); + // } + // } + // } else { + // pnGetStateResult = null; + // pnStatus = base.CreateErrorResponseFromMessage("Response dictionary is null", requestState, PNStatusCategory.PNMalformedResponseCategory); + // } + // Callback(pnGetStateResult, pnStatus); + } + + } +} + diff --git a/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs.meta b/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs.meta new file mode 100644 index 00000000..152bab03 --- /dev/null +++ b/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 823f503c80cef46a1a965384692d914f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PubNubUnity/Assets/PubNub/EndPoints/Presence/Presence.cs b/PubNubUnity/Assets/PubNub/EndPoints/Presence/Presence.cs new file mode 100644 index 00000000..98aca57d --- /dev/null +++ b/PubNubUnity/Assets/PubNub/EndPoints/Presence/Presence.cs @@ -0,0 +1,39 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using UnityEngine; + +namespace PubNubAPI +{ + public class PresenceHeartbeatBuilder + { + private readonly PresenceHeartbeatRequestBuilder pubBuilder; + + public PresenceHeartbeatBuilder(PubNubUnity pn){ + pubBuilder = new PresenceHeartbeatRequestBuilder(pn); + } + + public PresenceHeartbeatBuilder Connected(bool connected){ + pubBuilder.Connected(connected); + return this; + } + public PresenceHeartbeatBuilder State(Dictionary state){ + pubBuilder.State(state); + return this; + } + + public PresenceHeartbeatBuilder Channels(List channelNames){ + pubBuilder.Channels(channelNames); + return this; + } + + public PresenceHeartbeatBuilder ChannelGroups(List channelGroupNames){ + pubBuilder.ChannelGroups(channelGroupNames); + return this; + } + public void Async(Action callback) + { + pubBuilder.Async(callback); + } + } +} \ No newline at end of file diff --git a/PubNubUnity/Assets/PubNub/EndPoints/Presence/Presence.cs.meta b/PubNubUnity/Assets/PubNub/EndPoints/Presence/Presence.cs.meta new file mode 100644 index 00000000..7d47cc2b --- /dev/null +++ b/PubNubUnity/Assets/PubNub/EndPoints/Presence/Presence.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fca0fd56bccba48cbb6e7cf6848711d5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PubNubUnity/Assets/PubNub/Examples/Example.cs b/PubNubUnity/Assets/PubNub/Examples/Example.cs index ad0a9323..8a42ba2b 100644 --- a/PubNubUnity/Assets/PubNub/Examples/Example.cs +++ b/PubNubUnity/Assets/PubNub/Examples/Example.cs @@ -161,7 +161,18 @@ void ButtonHistoryHandler(){ } }); } + + bool connected = false; void ButtonTimeHandler(){ + if(connected){ + connected = false; + } else { + connected = true; + } + pubnub.Presence().Connected(connected).Channels(listChannels).Async ((result, status) => { + Debug.Log("result" + result); + + }); pubnub.Time ().Async ((result, status) => { if(status.Error){ @@ -416,7 +427,8 @@ void Init(){ } };*/ - pubnub.Subscribe ().ChannelGroups(new List (){"my_channel_group"}).Channels(new List (){"channel1"}).WithPresence().Execute(); + //pubnub.Subscribe ().ChannelGroups(new List (){"my_channel_group"}).Channels(new List (){"channel1"}).WithPresence().Execute(); + //GetHistoryRecursive(0, "channel1"); /*pubnub.SusbcribeCallback += SusbcribeCallbackHandler2; diff --git a/PubNubUnity/Assets/PubNub/PubNub.cs b/PubNubUnity/Assets/PubNub/PubNub.cs index 2f0ea0d9..4c50869a 100644 --- a/PubNubUnity/Assets/PubNub/PubNub.cs +++ b/PubNubUnity/Assets/PubNub/PubNub.cs @@ -158,6 +158,11 @@ public UnsubscribeAllBuilder UnsubscribeAll(){ return pnUnity.UnsubscribeAll(); } + public PresenceHeartbeatBuilder Presence(){ + PubNubUnityInitializationAfterCleanup(); + return pnUnity.Presence(); + } + public GetStateBuilder GetPresenceState(){ PubNubUnityInitializationAfterCleanup(); return pnUnity.GetPresenceState(); diff --git a/PubNubUnity/Assets/PubNub/PubNubUnity/PubNubUnity.cs b/PubNubUnity/Assets/PubNub/PubNubUnity/PubNubUnity.cs index 18b5935a..56e11f7d 100644 --- a/PubNubUnity/Assets/PubNub/PubNubUnity/PubNubUnity.cs +++ b/PubNubUnity/Assets/PubNub/PubNubUnity/PubNubUnity.cs @@ -163,6 +163,14 @@ public UnsubscribeAllBuilder UnsubscribeAll(){ return new UnsubscribeAllBuilder (this); } + + public PresenceHeartbeatBuilder Presence(){ + #if (ENABLE_PUBNUB_LOGGING) + this.PNLog.WriteToLog("Presence", PNLoggingMethod.LevelInfo); + #endif + + return new PresenceHeartbeatBuilder(this); + } public GetStateBuilder GetPresenceState(){ #if (ENABLE_PUBNUB_LOGGING) diff --git a/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs b/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs index b1d726b2..b49507e1 100644 --- a/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs +++ b/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs @@ -8,6 +8,14 @@ internal class PresenceHeartbeatWorker private bool keepPresenceHearbeatRunning; private bool isPresenceHearbeatRunning; + public bool RunIndependentOfSubscribe{ + get;set; + } + + internal string Channels {get;set;} + internal string ChannelGroups {get;set;} + internal string State {get;set;} + private readonly PNUnityWebRequest webRequest; private string webRequestId = ""; private readonly PubNubUnity PubNubInstance; @@ -94,13 +102,28 @@ private void PresenceHeartbeatHandler (CustomEventArgs cea){ void StartPresenceHeartbeat (bool pause, int pauseTime) { try { - if(PubNubInstance.SubscriptionInstance.AllNonPresenceChannelsOrChannelGroups.Count > 0){ - isPresenceHearbeatRunning = true; - string channelsJsonState = PubNubInstance.SubscriptionInstance.CompiledUserState; + string channelsJsonState; + int allNonPresenceChannelsOrChannelGroupsCount; + string channels; + string channelGroups; + + if (RunIndependentOfSubscribe){ + channelsJsonState = State; + allNonPresenceChannelsOrChannelGroupsCount = ChannelGroups.Length + Channels.Length; + channels = Channels; + channelGroups = ChannelGroups; + } else { + channelsJsonState = PubNubInstance.SubscriptionInstance.CompiledUserState; + allNonPresenceChannelsOrChannelGroupsCount = PubNubInstance.SubscriptionInstance.AllNonPresenceChannelsOrChannelGroups.Count; + channels = Helpers.GetNamesFromChannelEntities(PubNubInstance.SubscriptionInstance.AllNonPresenceChannelsOrChannelGroups, false); + channelGroups = Helpers.GetNamesFromChannelEntities(PubNubInstance.SubscriptionInstance.AllNonPresenceChannelsOrChannelGroups, true); + } + if (allNonPresenceChannelsOrChannelGroupsCount > 0){ + isPresenceHearbeatRunning = true; Uri request = BuildRequests.BuildPresenceHeartbeatRequest( - Helpers.GetNamesFromChannelEntities(PubNubInstance.SubscriptionInstance.AllNonPresenceChannelsOrChannelGroups, false), - Helpers.GetNamesFromChannelEntities(PubNubInstance.SubscriptionInstance.AllNonPresenceChannelsOrChannelGroups, true), + channels, + channelGroups, channelsJsonState, this.PubNubInstance ); @@ -113,7 +136,7 @@ void StartPresenceHeartbeat (bool pause, int pauseTime) requestState.Reconnect = pause; #if (ENABLE_PUBNUB_LOGGING) - this.PubNubInstance.PNLog.WriteToLog (string.Format ("presenceheartbeat: request.OriginalString {0} ", request.OriginalString ), PNLoggingMethod.LevelError); + this.PubNubInstance.PNLog.WriteToLog (string.Format ("presenceheartbeat: /presence/ request.OriginalString {0} ", request.OriginalString ), PNLoggingMethod.LevelError); #endif webRequestId = webRequest.Run(requestState); @@ -141,7 +164,7 @@ internal void RunPresenceHeartbeat (bool pause, int pauseTime) this.PubNubInstance.PNLog.WriteToLog (string.Format ("RunPresenceHeartbeat keepPresenceHearbeatRunning={0} isPresenceHearbeatRunning={1}", keepPresenceHearbeatRunning, isPresenceHearbeatRunning), PNLoggingMethod.LevelError); #endif - if(PubNubInstance.SubWorker.RequestSentAt > 0){ + if ((PubNubInstance.SubWorker.RequestSentAt > 0) && !RunIndependentOfSubscribe){ int timediff = PubNubInstance.PNConfig.PresenceInterval - (DateTime.UtcNow.Second - PubNubInstance.SubWorker.RequestSentAt); if(timediff > 10){ #if (ENABLE_PUBNUB_LOGGING) diff --git a/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs b/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs index d19687b9..43dac4f4 100644 --- a/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs +++ b/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs @@ -19,7 +19,7 @@ public class SubscriptionWorker private readonly PubNubUnity PubNubInstance; private readonly HeartbeatWorker hbWorker; - private readonly PresenceHeartbeatWorker phbWorker; + internal readonly PresenceHeartbeatWorker PHBWorker; private string webRequestId = ""; private bool reconnect = false; @@ -40,7 +40,7 @@ public SubscriptionWorker (PubNubUnity pn) hbWorker.InternetAvailable += InternetAvailableHandler; hbWorker.InternetDisconnected += InternetDisconnectedHandler; hbWorker.RetriesExceeded += RetriesExceededHandler; - phbWorker = new PresenceHeartbeatWorker(pn, webRequest); + PHBWorker = new PresenceHeartbeatWorker(pn, webRequest); enableResumeOnReconnect = this.PubNubInstance.PNConfig.ReconnectionPolicy.Equals(PNReconnectionPolicy.LINEAR) | this.PubNubInstance.PNConfig.ReconnectionPolicy.Equals(PNReconnectionPolicy.EXPONENTIAL); } @@ -160,8 +160,8 @@ public void CleanUp(){ if(hbWorker != null){ hbWorker.CleanUp(); } - if(phbWorker != null){ - phbWorker.CleanUp(); + if(PHBWorker != null){ + PHBWorker.CleanUp(); } } private bool resetTimetoken = false; @@ -210,7 +210,7 @@ public void ContinueToSubscribeRestOfChannels() else { hbWorker.StopHeartbeat(); - phbWorker.StopPresenceHeartbeat(); + PHBWorker.StopPresenceHeartbeat(); #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog(string.Format("ContinueToSubscribeRestOfChannels: All channels are Unsubscribed. Further subscription was stopped"), PNLoggingMethod.LevelInfo); #endif @@ -248,7 +248,7 @@ private bool CheckAllChannelsAreUnsubscribed() if (PubNubInstance.SubscriptionInstance.AllSubscribedChannelsAndChannelGroups.Count <=0) { hbWorker.StopHeartbeat(); - phbWorker.StopPresenceHeartbeat(); + PHBWorker.StopPresenceHeartbeat(); #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog(string.Format("CheckAllChannelsAreUnsubscribed: All channels are Unsubscribed. Further subscription was stopped"), PNLoggingMethod.LevelInfo); @@ -332,7 +332,7 @@ private void RunSubscribeRequest (long timetoken, bool reconnect) #endif RequestSentAt = DateTime.UtcNow.Second; if (PubNubInstance.PNConfig.PresenceInterval > 0){ - phbWorker.RunPresenceHeartbeat(false, PubNubInstance.PNConfig.PresenceInterval); + PHBWorker.RunPresenceHeartbeat(false, PubNubInstance.PNConfig.PresenceInterval); } #if (ENABLE_PUBNUB_LOGGING) diff --git a/PubNubUnity/ProjectSettings/VFXManager.asset b/PubNubUnity/ProjectSettings/VFXManager.asset new file mode 100644 index 00000000..6e0eaca4 --- /dev/null +++ b/PubNubUnity/ProjectSettings/VFXManager.asset @@ -0,0 +1,11 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!937362698 &1 +VFXManager: + m_ObjectHideFlags: 0 + m_IndirectShader: {fileID: 0} + m_CopyBufferShader: {fileID: 0} + m_SortShader: {fileID: 0} + m_RenderPipeSettingsPath: + m_FixedTimeStep: 0.016666668 + m_MaxDeltaTime: 0.05 From 6465738cbf62816c86b430a4b0e9c5cf616b7a35 Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Thu, 3 Jan 2019 21:33:01 +0530 Subject: [PATCH 05/18] Heartbeat on demand validations --- .../PubNub/Builders/Presence/PresenceRequestBuilder.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs index 886b8d21..54c69046 100644 --- a/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs @@ -38,20 +38,21 @@ public void Async(Action callback) string channels = ""; if((ChannelsToUse != null) && (ChannelsToUse.Count>0)){ - string[] chArr = ChannelsToUse.ToArray(); + ChannelsToUse.RemoveAll(t => t.Contains(Utility.PresenceChannelSuffix)); + string[] chArr = ChannelsToUse.Where(x => !string.IsNullOrEmpty(x)).Distinct().ToArray(); channels = String.Join(",", chArr); ChannelEntities.AddRange(Helpers.CreateChannelEntity(chArr, false, false, null, PubNubInstance.PNLog)); } string channelGroups = ""; if((ChannelGroupsToUse != null) && (ChannelGroupsToUse.Count>0)){ - string[] cgArr = ChannelGroupsToUse.ToArray(); + ChannelGroupsToUse.RemoveAll(t => t.Contains(Utility.PresenceChannelSuffix)); + string[] cgArr = ChannelGroupsToUse.Where(x => !string.IsNullOrEmpty(x)).Distinct().ToArray(); channelGroups = String.Join(",", cgArr); ChannelEntities.AddRange(Helpers.CreateChannelEntity(cgArr, false, true, null, PubNubInstance.PNLog)); } if(connected){ - PubNubInstance.SubWorker.PHBWorker.RunIndependentOfSubscribe = true; PubNubInstance.SubWorker.PHBWorker.ChannelGroups = channelGroups; PubNubInstance.SubWorker.PHBWorker.Channels = channels; From c427cb86793fef0751e960769d0fe8e8e66287be Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Thu, 3 Jan 2019 22:36:20 +0530 Subject: [PATCH 06/18] Heartbeat on demand validations --- PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs b/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs index b49507e1..5d3b95f9 100644 --- a/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs +++ b/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs @@ -1,5 +1,6 @@ using System; using UnityEngine; +using System.Linq; namespace PubNubAPI { @@ -109,7 +110,8 @@ void StartPresenceHeartbeat (bool pause, int pauseTime) if (RunIndependentOfSubscribe){ channelsJsonState = State; - allNonPresenceChannelsOrChannelGroupsCount = ChannelGroups.Length + Channels.Length; + allNonPresenceChannelsOrChannelGroupsCount = ((ChannelGroups.Length>0)?ChannelGroups.Split(',').Count():0) + ((Channels.Length>0)?Channels.Split(',').Count():0); + Debug.Log("allNonPresenceChannelsOrChannelGroupsCount:"+ allNonPresenceChannelsOrChannelGroupsCount); channels = Channels; channelGroups = ChannelGroups; } else { From 1151d5c87fa6f550347388a1a8a91d96a3b4bda7 Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Fri, 4 Jan 2019 21:05:45 +0530 Subject: [PATCH 07/18] QueryParams --- ...AddChannelsToChannelGroupRequestBuilder.cs | 3 +- .../DeleteChannelGroupRequestBuilder.cs | 3 +- .../GetAllChannelsForGroupRequestBuilder.cs | 3 +- .../RemoveChannelsFromGroupRequestBuilder.cs | 3 +- .../History/DeleteMessagesRequestBuilder.cs | 3 +- .../History/FetchMessagesRequestBuilder.cs | 3 +- .../Builders/History/HistoryRequestBuilder.cs | 3 +- .../Presence/GetStateRequestBuilder.cs | 3 +- .../Presence/HereNowRequestBuilder.cs | 3 +- .../Presence/SetStateRequestBuilder.cs | 3 +- .../Presence/WhereNowRequestBuilder.cs | 9 +- .../PubNub/Builders/PubNubNonSubBuilder.cs | 6 ++ .../Builders/PubSub/LeaveRequestBuilder.cs | 3 +- .../Builders/PubSub/PublishRequestBuilder.cs | 3 +- .../Push/AddChannelsToPushRequestBuilder.cs | 3 +- .../Push/ListPushProvisionsRequestBuilder.cs | 3 +- ...eAllPushChannelsForDeviceRequestBuilder.cs | 3 +- .../RemoveChannelsFromPushRequestBuilder.cs | 3 +- .../PubNub/Builders/TimeRequestBuilder.cs | 3 +- .../Editor/ChannelGroupBuildRequestsTests.cs | 6 +- .../DeleteMessagesBuildRequestsTests.cs | 2 +- .../Editor/HereNowBuildRequestsTests.cs | 4 +- .../Editor/HistoryBuildRequestsTests.cs | 2 +- .../PubNub/Editor/LeaveBuildRequestsTests.cs | 2 +- .../PresenceHeartbeatBuildRequestsTests.cs | 2 +- .../Editor/PublishBuildRequestsTests.cs | 2 +- .../PubNub/Editor/PushBuildRequestsTests.cs | 8 +- .../PubNub/Editor/StateBuildRequestsTests.cs | 4 +- .../PubNub/Editor/TimeBuildRequestsTests.cs | 2 +- .../Editor/WhereNowBuildRequestsTests.cs | 2 +- .../AddChannelsToChannelGroupBuilder.cs | 6 ++ .../ChannelGroup/DeleteChannelGroupBuilder.cs | 6 ++ .../GetAllChannelsForGroupBuilder.cs | 6 ++ .../ChannelGroup/GetChannelGroupsBuilder.cs | 6 ++ .../RemoveChannelsFromGroupBuilder.cs | 6 ++ .../HIstory/DeleteMessagesBuilder.cs | 5 + .../PubNub/EndPoints/HIstory/FetchBuilder.cs | 7 ++ .../EndPoints/HIstory/HistoryBuilder.cs | 5 + .../EndPoints/Presence/GetStateBuilder.cs | 6 ++ .../EndPoints/Presence/HereNowBuilder.cs | 6 ++ .../PubNub/EndPoints/Presence/Presence.cs | 7 ++ .../EndPoints/Presence/SetStateBuilder.cs | 6 ++ .../EndPoints/Presence/WhereNowBuilder.cs | 5 + .../PubNub/EndPoints/PubSub/FireBuilder.cs | 5 + .../PubNub/EndPoints/PubSub/PublishBuilder.cs | 5 + .../EndPoints/PubSub/UnsubscribeAllBuilder.cs | 4 + .../EndPoints/PubSub/UnsubscribeBuilder.cs | 4 + .../Push/AddChannelsToPushBuilder.cs | 4 + .../Push/ListPushProvisionsBuilder.cs | 4 + .../RemoveAllPushChannelsForDeviceBuilder.cs | 4 + .../Push/RemoveChannelsFromPushBuilder.cs | 5 + .../Assets/PubNub/EndPoints/TimeBuilder.cs | 6 ++ .../PubNub/Models/Server/BuildRequests.cs | 97 +++++++++++-------- .../Assets/PubNub/Workers/HeartbeatWorker.cs | 3 +- .../PubNub/Workers/PresenceHeartbeatWorker.cs | 3 +- 55 files changed, 241 insertions(+), 82 deletions(-) diff --git a/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/AddChannelsToChannelGroupRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/AddChannelsToChannelGroupRequestBuilder.cs index 09f80066..9ae9775b 100644 --- a/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/AddChannelsToChannelGroupRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/AddChannelsToChannelGroupRequestBuilder.cs @@ -51,7 +51,8 @@ protected override void RunWebRequest(QueueManager qm){ ChannelsToUse.ToArray(), "", ChannelGroupToAdd, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog(string.Format("RunPNChannelGroupsAddChannel {0}", request.OriginalString), PNLoggingMethod.LevelInfo); diff --git a/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/DeleteChannelGroupRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/DeleteChannelGroupRequestBuilder.cs index f2f0297b..13481a86 100644 --- a/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/DeleteChannelGroupRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/DeleteChannelGroupRequestBuilder.cs @@ -40,7 +40,8 @@ protected override void RunWebRequest(QueueManager qm){ null, "", ChannelGroupToDelete, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); } diff --git a/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/GetAllChannelsForGroupRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/GetAllChannelsForGroupRequestBuilder.cs index ea1439ad..2705045f 100644 --- a/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/GetAllChannelsForGroupRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/GetAllChannelsForGroupRequestBuilder.cs @@ -38,7 +38,8 @@ protected override void RunWebRequest(QueueManager qm){ "", ChannelGroupToList, false, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); diff --git a/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/RemoveChannelsFromGroupRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/RemoveChannelsFromGroupRequestBuilder.cs index 09a51d56..7999f450 100644 --- a/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/RemoveChannelsFromGroupRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/ChannelGroup/RemoveChannelsFromGroupRequestBuilder.cs @@ -49,7 +49,8 @@ protected override void RunWebRequest(QueueManager qm){ ChannelsToUse.ToArray(), "", ChannelGroupToDelete, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); } diff --git a/PubNubUnity/Assets/PubNub/Builders/History/DeleteMessagesRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/History/DeleteMessagesRequestBuilder.cs index 51c1cf85..d678d8ba 100644 --- a/PubNubUnity/Assets/PubNub/Builders/History/DeleteMessagesRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/History/DeleteMessagesRequestBuilder.cs @@ -63,7 +63,8 @@ protected override void RunWebRequest(QueueManager qm){ this.HistoryChannel, this.StartTime, this.EndTime, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); diff --git a/PubNubUnity/Assets/PubNub/Builders/History/FetchMessagesRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/History/FetchMessagesRequestBuilder.cs index c5d033ab..65161717 100644 --- a/PubNubUnity/Assets/PubNub/Builders/History/FetchMessagesRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/History/FetchMessagesRequestBuilder.cs @@ -95,7 +95,8 @@ protected override void RunWebRequest(QueueManager qm){ this.HistoryCount, this.ReverseHistory, this.IncludeTimetokenInHistory, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); diff --git a/PubNubUnity/Assets/PubNub/Builders/History/HistoryRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/History/HistoryRequestBuilder.cs index 1c34fdb1..358860c9 100644 --- a/PubNubUnity/Assets/PubNub/Builders/History/HistoryRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/History/HistoryRequestBuilder.cs @@ -95,7 +95,8 @@ protected override void RunWebRequest(QueueManager qm){ this.HistoryCount, this.ReverseHistory, this.IncludeTimetokenInHistory, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); } diff --git a/PubNubUnity/Assets/PubNub/Builders/Presence/GetStateRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/Presence/GetStateRequestBuilder.cs index 2b9d4a71..ddccabec 100644 --- a/PubNubUnity/Assets/PubNub/Builders/Presence/GetStateRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/Presence/GetStateRequestBuilder.cs @@ -54,7 +54,8 @@ protected override void RunWebRequest(QueueManager qm){ channels, channelGroups, uuid, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); } diff --git a/PubNubUnity/Assets/PubNub/Builders/Presence/HereNowRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/Presence/HereNowRequestBuilder.cs index c12b9287..d8b2a4bd 100644 --- a/PubNubUnity/Assets/PubNub/Builders/Presence/HereNowRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/Presence/HereNowRequestBuilder.cs @@ -55,7 +55,8 @@ protected override void RunWebRequest(QueueManager qm){ channelGroups, IncludeUUIDsInHereNow, IncludeStateInHereNow, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); } diff --git a/PubNubUnity/Assets/PubNub/Builders/Presence/SetStateRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/Presence/SetStateRequestBuilder.cs index 42c42e43..14db33a2 100644 --- a/PubNubUnity/Assets/PubNub/Builders/Presence/SetStateRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/Presence/SetStateRequestBuilder.cs @@ -81,7 +81,8 @@ protected override void RunWebRequest(QueueManager qm){ channelGroups, Helpers.BuildJsonUserState(ChannelEntities), uuid, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); } diff --git a/PubNubUnity/Assets/PubNub/Builders/Presence/WhereNowRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/Presence/WhereNowRequestBuilder.cs index 386829cb..b27a8f53 100644 --- a/PubNubUnity/Assets/PubNub/Builders/Presence/WhereNowRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/Presence/WhereNowRequestBuilder.cs @@ -12,10 +12,9 @@ public class WhereNowRequestBuilder: PubNubNonSubBuilder callback) @@ -37,9 +36,11 @@ protected override void RunWebRequest(QueueManager qm){ if(!string.IsNullOrEmpty(this.UuidForWhereNow)){ uuidForWhereNow = this.UuidForWhereNow; } + Uri request = BuildRequests.BuildWhereNowRequest( uuidForWhereNow, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); } diff --git a/PubNubUnity/Assets/PubNub/Builders/PubNubNonSubBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/PubNubNonSubBuilder.cs index 01b167a4..2b1a94ce 100644 --- a/PubNubUnity/Assets/PubNub/Builders/PubNubNonSubBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/PubNubNonSubBuilder.cs @@ -8,6 +8,7 @@ public abstract class PubNubNonSubBuilder where V : class { protected List ChannelGroupsToUse { get; set;} protected List ChannelsToUse { get; set;} + protected Dictionary QueryParams { get; set;} protected Action Callback; protected delegate void RunRequestDelegate(QueueManager qm); @@ -19,6 +20,11 @@ public abstract class PubNubNonSubBuilder where V : class public PNOperationType OperationType {get; set;} protected PubNubUnity PubNubInstance; + + internal void QueryParam(Dictionary queryParam){ + QueryParams = queryParam; + } + protected PubNubNonSubBuilder(PubNubUnity pn, PNOperationType pnOperationType){ PubNubInstance = pn; this.OperationType = pnOperationType; diff --git a/PubNubUnity/Assets/PubNub/Builders/PubSub/LeaveRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/PubSub/LeaveRequestBuilder.cs index b0c96a09..48b98a11 100644 --- a/PubNubUnity/Assets/PubNub/Builders/PubSub/LeaveRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/PubSub/LeaveRequestBuilder.cs @@ -70,7 +70,8 @@ protected override void RunWebRequest(QueueManager qm){ Uri request = BuildRequests.BuildLeaveRequest( channels, channelGroups, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); } diff --git a/PubNubUnity/Assets/PubNub/Builders/PubSub/PublishRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/PubSub/PublishRequestBuilder.cs index 21438d51..8dbc6d6b 100644 --- a/PubNubUnity/Assets/PubNub/Builders/PubSub/PublishRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/PubSub/PublishRequestBuilder.cs @@ -109,7 +109,8 @@ protected override void RunWebRequest(QueueManager qm){ this.PublishTtl, UsePostMethod, this.ReplicateMessage, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); } diff --git a/PubNubUnity/Assets/PubNub/Builders/Push/AddChannelsToPushRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/Push/AddChannelsToPushRequestBuilder.cs index bbe3e091..978deef5 100644 --- a/PubNubUnity/Assets/PubNub/Builders/Push/AddChannelsToPushRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/Push/AddChannelsToPushRequestBuilder.cs @@ -57,7 +57,8 @@ protected override void RunWebRequest(QueueManager qm){ string.Join(",", ChannelsToUse.ToArray()), PushType, DeviceIDForPush, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); } diff --git a/PubNubUnity/Assets/PubNub/Builders/Push/ListPushProvisionsRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/Push/ListPushProvisionsRequestBuilder.cs index 5145087b..f0e003ee 100644 --- a/PubNubUnity/Assets/PubNub/Builders/Push/ListPushProvisionsRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/Push/ListPushProvisionsRequestBuilder.cs @@ -47,7 +47,8 @@ protected override void RunWebRequest(QueueManager qm){ Uri request = BuildRequests.BuildGetChannelsPushRequest( PushType, DeviceIDForPush, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); diff --git a/PubNubUnity/Assets/PubNub/Builders/Push/RemoveAllPushChannelsForDeviceRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/Push/RemoveAllPushChannelsForDeviceRequestBuilder.cs index 2995be31..c8c0bdbf 100644 --- a/PubNubUnity/Assets/PubNub/Builders/Push/RemoveAllPushChannelsForDeviceRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/Push/RemoveAllPushChannelsForDeviceRequestBuilder.cs @@ -47,7 +47,8 @@ protected override void RunWebRequest(QueueManager qm){ Uri request = BuildRequests.BuildRemoveAllDevicePushRequest( PushType, DeviceIDForPush, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); diff --git a/PubNubUnity/Assets/PubNub/Builders/Push/RemoveChannelsFromPushRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/Push/RemoveChannelsFromPushRequestBuilder.cs index eff09805..37d29163 100644 --- a/PubNubUnity/Assets/PubNub/Builders/Push/RemoveChannelsFromPushRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/Push/RemoveChannelsFromPushRequestBuilder.cs @@ -53,7 +53,8 @@ protected override void RunWebRequest(QueueManager qm){ string.Join(",", ChannelsToUse.ToArray()), PushType, DeviceIDForPush, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); diff --git a/PubNubUnity/Assets/PubNub/Builders/TimeRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/TimeRequestBuilder.cs index eb41206e..d23f35fe 100644 --- a/PubNubUnity/Assets/PubNub/Builders/TimeRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/TimeRequestBuilder.cs @@ -24,7 +24,8 @@ protected override void RunWebRequest(QueueManager qm){ requestState.OperationType = OperationType; Uri request = BuildRequests.BuildTimeRequest( - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); #if (ENABLE_PUBNUB_LOGGING) diff --git a/PubNubUnity/Assets/PubNub/Editor/ChannelGroupBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/ChannelGroupBuildRequestsTests.cs index bc1af43b..9b72e577 100644 --- a/PubNubUnity/Assets/PubNub/Editor/ChannelGroupBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/ChannelGroupBuildRequestsTests.cs @@ -92,7 +92,7 @@ public void TestBuildAddChannelsToChannelGroupRequestCommon(string[] channels, b } Uri uri = BuildRequests.BuildAddChannelsToChannelGroupRequest (channels, "", channelGroup, - pnUnity + pnUnity, null ); string ch = string.Join(",", channels); @@ -203,7 +203,7 @@ public void TestBuildRemoveChannelsFromChannelGroupRequestCommon(string[] channe } Uri uri = BuildRequests.BuildRemoveChannelsFromChannelGroupRequest (channels, "", channelGroup, - pnUnity + pnUnity, null ); string ch = ""; @@ -308,7 +308,7 @@ public void TestBuildGetChannelsForChannelGroupRequestCommon(bool allCg, } Uri uri = BuildRequests.BuildGetChannelsForChannelGroupRequest ("", channelGroup, allCg, - pnUnity + pnUnity, null ); //http://ps.pndsn.com/v1/channel-registration/sub-key/demo-36/channel-group/channelGroup?add=addChannel1,%20addChannel2&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityOSX%2F3.7 diff --git a/PubNubUnity/Assets/PubNub/Editor/DeleteMessagesBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/DeleteMessagesBuildRequestsTests.cs index 6148f15f..98602852 100644 --- a/PubNubUnity/Assets/PubNub/Editor/DeleteMessagesBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/DeleteMessagesBuildRequestsTests.cs @@ -126,7 +126,7 @@ public void DeleteMessagesBuildRequestsCommon(bool ssl, string channel, string a endTimeString = string.Format("&end={0}", endTime); } - Uri uri = BuildRequests.BuildDeleteMessagesRequest (channel, startTime, endTime, pnUnity); + Uri uri = BuildRequests.BuildDeleteMessagesRequest (channel, startTime, endTime, pnUnity, null); var segments = uri.Segments; foreach(string seg in segments){ diff --git a/PubNubUnity/Assets/PubNub/Editor/HereNowBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/HereNowBuildRequestsTests.cs index 8ba4bc7d..8758487c 100644 --- a/PubNubUnity/Assets/PubNub/Editor/HereNowBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/HereNowBuildRequestsTests.cs @@ -345,7 +345,7 @@ public void TestBuildHereNowRequestCommon(bool testCh, bool testCg, bool ssl, bo int userState = (includeUserState) ? 1 : 0; string parameters = string.Format ("disable_uuids={0}&state={1}", disableUUID, userState); - Uri uri = BuildRequests.BuildHereNowRequest (channel, channelGroup, showUUIDList, includeUserState, pnUnity); + Uri uri = BuildRequests.BuildHereNowRequest (channel, channelGroup, showUUIDList, includeUserState, pnUnity, null); //http://ps.pndsn.com/v2/presence/sub_key/demo/channel/here_now_channel?disable_uuids=1&state=0&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityOSX/3.6.9.0 string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}/channel/{3}?{4}{8}&uuid={5}{6}&pnsdk={7}", @@ -480,7 +480,7 @@ public void TestBuildGlobalHereNowRequestCommon(bool ssl, bool showUUIDList, boo int userState = (includeUserState) ? 1 : 0; string parameters = string.Format ("disable_uuids={0}&state={1}", disableUUID, userState); - Uri uri = BuildRequests.BuildHereNowRequest ("", "", showUUIDList, includeUserState, pnUnity); + Uri uri = BuildRequests.BuildHereNowRequest ("", "", showUUIDList, includeUserState, pnUnity, null); //http://ps.pndsn.com/v2/presence/sub_key/demo?disable_uuids=1&state=0&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityOSX/3.6.9.0 string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}?{3}&uuid={4}{5}&pnsdk={6}", diff --git a/PubNubUnity/Assets/PubNub/Editor/HistoryBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/HistoryBuildRequestsTests.cs index a908bfa9..0c937577 100644 --- a/PubNubUnity/Assets/PubNub/Editor/HistoryBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/HistoryBuildRequestsTests.cs @@ -1055,7 +1055,7 @@ public void TestBuildDetailedHistoryRequestCommon(bool ssl, bool reverse, bool i } Uri uri = BuildRequests.BuildHistoryRequest (channel, startTime, endTime, (uint)count, reverse, - includeTimetoken, pnUnity + includeTimetoken, pnUnity, null ); if (count == -1) { diff --git a/PubNubUnity/Assets/PubNub/Editor/LeaveBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/LeaveBuildRequestsTests.cs index 998d53e8..8fd6c5e8 100644 --- a/PubNubUnity/Assets/PubNub/Editor/LeaveBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/LeaveBuildRequestsTests.cs @@ -229,7 +229,7 @@ public void TestBuildLeaveRequestCommon(string[] channels, string[] channelGroup chStr = ch; } - Uri uri = BuildRequests.BuildLeaveRequest (ch, cg, pnUnity); + Uri uri = BuildRequests.BuildLeaveRequest (ch, cg, pnUnity, null); //https://ps.pndsn.com/v2/presence/sub_key/demo-36/channel/test/leave?uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}/channel/{3}/leave?uuid={4}{7}{5}&pnsdk={6}", diff --git a/PubNubUnity/Assets/PubNub/Editor/PresenceHeartbeatBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/PresenceHeartbeatBuildRequestsTests.cs index f58380bf..8fb01544 100644 --- a/PubNubUnity/Assets/PubNub/Editor/PresenceHeartbeatBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/PresenceHeartbeatBuildRequestsTests.cs @@ -471,7 +471,7 @@ public void TestBuildPresenceHeartbeatRequestCommon(string[] channelGroups, stri chStr = ch; } - Uri uri = BuildRequests.BuildPresenceHeartbeatRequest (ch, cg, userState, pnUnity); + Uri uri = BuildRequests.BuildPresenceHeartbeatRequest (ch, cg, userState, pnUnity, null); //https://ps.pndsn.com/v2/presence/sub_key/demo-36/channel/user_state_channel/heartbeat?uuid=customuuid&state={"k":"v"}&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 diff --git a/PubNubUnity/Assets/PubNub/Editor/PublishBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/PublishBuildRequestsTests.cs index 91fb2461..096573c8 100644 --- a/PubNubUnity/Assets/PubNub/Editor/PublishBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/PublishBuildRequestsTests.cs @@ -505,7 +505,7 @@ public void TestBuildPublishRequestCommonWithTTL(bool sendMeta, bool ssl, bool s } - Uri uri = BuildRequests.BuildPublishRequest (channel, originalMessage, storeInHistory, metadata, 0, ttl, false, replicate, pnUnity); + Uri uri = BuildRequests.BuildPublishRequest (channel, originalMessage, storeInHistory, metadata, 0, ttl, false, replicate, pnUnity, null); string ttlStr = (ttl == -1) ? "" : string.Format("&ttl={0}", ttl.ToString()); diff --git a/PubNubUnity/Assets/PubNub/Editor/PushBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/PushBuildRequestsTests.cs index 1e5024ea..b58f458d 100644 --- a/PubNubUnity/Assets/PubNub/Editor/PushBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/PushBuildRequestsTests.cs @@ -104,7 +104,7 @@ public void TestBuildRegisterDevicePushRequestCommon(bool ssl, string authKey, s authKeyString = string.Format ("&auth={0}", pnConfiguration.AuthKey); } - Uri uri = BuildRequests.BuildRegisterDevicePushRequest (channel, pushType, pushToken, pnUnity); + Uri uri = BuildRequests.BuildRegisterDevicePushRequest (channel, pushType, pushToken, pnUnity, null); //[1, "Modified Channels"] //https://ps.pndsn.com/v1/push/sub-key/demo-36/devices/pushToken?add=push_channel&type=apns&uuid=customuuid&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 @@ -215,7 +215,7 @@ public void TestBuildRemoveChannelPushRequestCommon(bool ssl, string authKey, st authKeyString = string.Format ("&auth={0}", pnConfiguration.AuthKey); } - Uri uri = BuildRequests.BuildRemoveChannelPushRequest (channel, pushType, pushToken, pnUnity); + Uri uri = BuildRequests.BuildRemoveChannelPushRequest (channel, pushType, pushToken, pnUnity, null); //[1, "Modified Channels"] //http://ps.pndsn.com/v1/push/sub-key/demo-36/devices/pushToken?remove=push_channel&type=mpns&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 string expected = string.Format ("http{0}://{1}/v1/push/sub-key/{2}/devices/{3}?remove={4}&type={5}&uuid={6}{7}&pnsdk={8}", @@ -324,7 +324,7 @@ public void TestBuildGetChannelsPushRequestCommon(bool ssl, string authKey, stri authKeyString = string.Format ("&auth={0}", pnConfiguration.AuthKey); } - Uri uri = BuildRequests.BuildGetChannelsPushRequest (pushType, pushToken, pnUnity); + Uri uri = BuildRequests.BuildGetChannelsPushRequest (pushType, pushToken, pnUnity, null); //[1, "Modified Channels"] //["push_channel"] @@ -436,7 +436,7 @@ public void BuildUnregisterDevicePushRequestCommon(bool ssl, string authKey, str authKeyString = string.Format ("&auth={0}", pnConfiguration.AuthKey); } - Uri uri = BuildRequests.BuildUnregisterDevicePushRequest (pushType, pushToken, pnUnity); + Uri uri = BuildRequests.BuildUnregisterDevicePushRequest (pushType, pushToken, pnUnity, null); //[1, "Removed Device"] //https://ps.pndsn.com/v1/push/sub-key/demo-36/devices/pushToken/remove?type=wns&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 string expected = string.Format ("http{0}://{1}/v1/push/sub-key/{2}/devices/{3}/remove?type={4}&uuid={5}{6}&pnsdk={7}", diff --git a/PubNubUnity/Assets/PubNub/Editor/StateBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/StateBuildRequestsTests.cs index 340f0dc5..5f7e2c21 100644 --- a/PubNubUnity/Assets/PubNub/Editor/StateBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/StateBuildRequestsTests.cs @@ -119,7 +119,7 @@ public void TestBuildSetUserStateRequestCommon(bool testCg, bool testCh, bool ss authKeyString = string.Format ("&auth={0}", pnConfiguration.AuthKey); } - Uri uri = BuildRequests.BuildSetStateRequest (channel, channelGroup, userState, uuid, pnUnity); + Uri uri = BuildRequests.BuildSetStateRequest (channel, channelGroup, userState, uuid, pnUnity, null); //https://ps.pndsn.com/v2/presence/sub_key/demo-36/channel/user_state_channel/uuid/customuuid/data?state={"k":"v"}&uuid=customuuid&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 //https://ps.pndsn.com/v2/presence/sub_key/demo-36/channel/user_state_channel/uuid/customuuid/data?state={"k":"v"}&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 @@ -244,7 +244,7 @@ public void TestBuildGetUserStateRequestCommon(bool testCg, bool testCh, bool ss authKeyString = string.Format ("&auth={0}", pnConfiguration.AuthKey); } - Uri uri = BuildRequests.BuildGetStateRequest (channel, channelGroup, uuid, pnUnity); + Uri uri = BuildRequests.BuildGetStateRequest (channel, channelGroup, uuid, pnUnity, null); //https://ps.pndsn.com/v2/presence/sub_key/demo-36/channel/user_state_channel/uuid/customuuid?uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}/channel/{3}/uuid/{4}?uuid={6}{9}{7}&pnsdk={8}", diff --git a/PubNubUnity/Assets/PubNub/Editor/TimeBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/TimeBuildRequestsTests.cs index 4abca6ff..4e7e2837 100644 --- a/PubNubUnity/Assets/PubNub/Editor/TimeBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/TimeBuildRequestsTests.cs @@ -36,7 +36,7 @@ public void TestBuildTimeRequestCommon(bool ssl){ PubNubUnity pnUnity = new PubNubUnity(pnConfiguration, null, null); - Uri uri = BuildRequests.BuildTimeRequest (pnUnity); + Uri uri = BuildRequests.BuildTimeRequest (pnUnity, null); //https://ps.pndsn.com/time/0?uuid=customuuid&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 string expected = string.Format ("http{0}://{1}/time/0?uuid={2}&pnsdk={3}", diff --git a/PubNubUnity/Assets/PubNub/Editor/WhereNowBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/WhereNowBuildRequestsTests.cs index 3beb6911..176bfa5d 100644 --- a/PubNubUnity/Assets/PubNub/Editor/WhereNowBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/WhereNowBuildRequestsTests.cs @@ -79,7 +79,7 @@ public void TestBuildWhereNowRequestCommon(bool ssl, string authKey, string uuid authKeyString = string.Format ("&auth={0}", pnConfiguration.AuthKey); } - Uri uri = BuildRequests.BuildWhereNowRequest (uuid, pnUnity); + Uri uri = BuildRequests.BuildWhereNowRequest (uuid, pnUnity, null); //http://ps.pndsn.com/v2/presence/sub_key/demo-36/uuid/customuuid?uuid=&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}/uuid/{3}?uuid={4}{5}&pnsdk={6}", diff --git a/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/AddChannelsToChannelGroupBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/AddChannelsToChannelGroupBuilder.cs index b0f0f18f..f96bfd5e 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/AddChannelsToChannelGroupBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/AddChannelsToChannelGroupBuilder.cs @@ -14,6 +14,11 @@ public AddChannelsToChannelGroupBuilder Channels(List channelNames){ return this; } + public AddChannelsToChannelGroupBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } + public AddChannelsToChannelGroupBuilder ChannelGroup(string channelGroupName){ pubBuilder.ChannelGroup(channelGroupName); return this; @@ -22,6 +27,7 @@ public AddChannelsToChannelGroupBuilder ChannelGroup(string channelGroupName){ public AddChannelsToChannelGroupBuilder(PubNubUnity pn){ pubBuilder = new AddChannelsToChannelGroupRequestBuilder(pn); } + public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/DeleteChannelGroupBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/DeleteChannelGroupBuilder.cs index 0c21e3bc..97f68241 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/DeleteChannelGroupBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/DeleteChannelGroupBuilder.cs @@ -12,10 +12,16 @@ public DeleteChannelGroupBuilder ChannelGroup(string channelGroupName){ pubBuilder.ChannelGroup(channelGroupName); return this; } + + public DeleteChannelGroupBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } public DeleteChannelGroupBuilder(PubNubUnity pn){ pubBuilder = new DeleteChannelGroupRequestBuilder(pn); } + public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/GetAllChannelsForGroupBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/GetAllChannelsForGroupBuilder.cs index 96c0bb64..6f6fe9b8 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/GetAllChannelsForGroupBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/GetAllChannelsForGroupBuilder.cs @@ -13,10 +13,16 @@ public GetAllChannelsForGroupBuilder ChannelGroup(string channelGroupName){ pubBuilder.ChannelGroup(channelGroupName); return this; } + + public GetAllChannelsForGroupBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } public GetAllChannelsForGroupBuilder(PubNubUnity pn){ pubBuilder = new GetAllChannelsForGroupRequestBuilder(pn); } + public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/GetChannelGroupsBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/GetChannelGroupsBuilder.cs index c1cbee1a..d3c45448 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/GetChannelGroupsBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/GetChannelGroupsBuilder.cs @@ -12,6 +12,12 @@ public class GetChannelGroupsBuilder public GetChannelGroupsBuilder(PubNubUnity pn){ pubBuilder = new GetChannelGroupsRequestBuilder(pn); } + + public GetChannelGroupsBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } + public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/RemoveChannelsFromGroupBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/RemoveChannelsFromGroupBuilder.cs index 2da88a48..4f556af8 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/RemoveChannelsFromGroupBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/ChannelGroup/RemoveChannelsFromGroupBuilder.cs @@ -18,9 +18,15 @@ public RemoveChannelsFromGroupBuilder ChannelGroup(string channelGroupNames){ return this; } + public RemoveChannelsFromGroupBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } + public RemoveChannelsFromGroupBuilder(PubNubUnity pn){ pubBuilder = new RemoveChannelsFromGroupRequestBuilder(pn); } + public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/HIstory/DeleteMessagesBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/HIstory/DeleteMessagesBuilder.cs index afc8c946..6e1c02b6 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/HIstory/DeleteMessagesBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/HIstory/DeleteMessagesBuilder.cs @@ -27,6 +27,11 @@ public DeleteMessagesBuilder Channel(string channelName){ pubBuilder.Channel(channelName); return this; } + + public DeleteMessagesBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } public void Async(Action callback) { diff --git a/PubNubUnity/Assets/PubNub/EndPoints/HIstory/FetchBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/HIstory/FetchBuilder.cs index a1dfc0ee..3549e5ee 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/HIstory/FetchBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/HIstory/FetchBuilder.cs @@ -38,10 +38,17 @@ public FetchBuilder Count(ushort historyCount){ pubBuilder.Count(historyCount); return this; } + + public FetchBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } + public FetchBuilder(PubNubUnity pn){ pubBuilder = new FetchMessagesRequestBuilder(pn); } + public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/HIstory/HistoryBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/HIstory/HistoryBuilder.cs index 9a9389ee..90757439 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/HIstory/HistoryBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/HIstory/HistoryBuilder.cs @@ -43,6 +43,11 @@ public HistoryBuilder Count(ushort historyCount){ return this; } + public HistoryBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } + public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/Presence/GetStateBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/Presence/GetStateBuilder.cs index e0773bb0..8b3bab63 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/Presence/GetStateBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/Presence/GetStateBuilder.cs @@ -28,6 +28,12 @@ public GetStateBuilder ChannelGroups(List channelGroupNames){ pubBuilder.ChannelGroups(channelGroupNames); return this; } + + public GetStateBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } + public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/Presence/HereNowBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/Presence/HereNowBuilder.cs index 08b55aee..05565a02 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/Presence/HereNowBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/Presence/HereNowBuilder.cs @@ -32,6 +32,12 @@ public HereNowBuilder ChannelGroups(List channelGroupNames){ pubBuilder.ChannelGroups(channelGroupNames); return this; } + + public HereNowBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } + public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/Presence/Presence.cs b/PubNubUnity/Assets/PubNub/EndPoints/Presence/Presence.cs index 98aca57d..513973ba 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/Presence/Presence.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/Presence/Presence.cs @@ -17,6 +17,7 @@ public PresenceHeartbeatBuilder Connected(bool connected){ pubBuilder.Connected(connected); return this; } + public PresenceHeartbeatBuilder State(Dictionary state){ pubBuilder.State(state); return this; @@ -31,6 +32,12 @@ public PresenceHeartbeatBuilder ChannelGroups(List channelGroupNames){ pubBuilder.ChannelGroups(channelGroupNames); return this; } + + public PresenceHeartbeatBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } + public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/Presence/SetStateBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/Presence/SetStateBuilder.cs index 7638ea2c..6592c1f5 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/Presence/SetStateBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/Presence/SetStateBuilder.cs @@ -32,6 +32,12 @@ public SetStateBuilder ChannelGroups(List channelGroupNames){ pubBuilder.ChannelGroups(channelGroupNames); return this; } + + public SetStateBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } + public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/Presence/WhereNowBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/Presence/WhereNowBuilder.cs index 842fca0f..9e47b3af 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/Presence/WhereNowBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/Presence/WhereNowBuilder.cs @@ -17,6 +17,11 @@ public WhereNowBuilder Uuid(string uuidForWhereNow){ return this; } + public WhereNowBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } + public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/PubSub/FireBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/PubSub/FireBuilder.cs index 1698149d..c8f3351e 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/PubSub/FireBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/PubSub/FireBuilder.cs @@ -37,6 +37,11 @@ public FireBuilder PublishAsIs(bool publishMessageAsIs){ return this; } + public FireBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } + public void Async(Action callback) { pubBuilder.Replicate(false); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/PubSub/PublishBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/PubSub/PublishBuilder.cs index e6a21bd3..f71e7b00 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/PubSub/PublishBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/PubSub/PublishBuilder.cs @@ -53,6 +53,11 @@ public PublishBuilder Ttl(int publishTTL){ return this; } + public PublishBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } + public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/PubSub/UnsubscribeAllBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/PubSub/UnsubscribeAllBuilder.cs index 635ee03e..afb89356 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/PubSub/UnsubscribeAllBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/PubSub/UnsubscribeAllBuilder.cs @@ -12,6 +12,10 @@ public class UnsubscribeAllBuilder public UnsubscribeAllBuilder(PubNubUnity pn){ pubBuilder = new LeaveRequestBuilder(pn); } + public UnsubscribeAllBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/PubSub/UnsubscribeBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/PubSub/UnsubscribeBuilder.cs index cdec889a..7829015c 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/PubSub/UnsubscribeBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/PubSub/UnsubscribeBuilder.cs @@ -18,6 +18,10 @@ public UnsubscribeBuilder ChannelGroups(List channelGroupNames){ pubBuilder.ChannelGroups(channelGroupNames); return this; } + public UnsubscribeBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } public UnsubscribeBuilder(PubNubUnity pn){ pubBuilder = new LeaveRequestBuilder(pn); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/Push/AddChannelsToPushBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/Push/AddChannelsToPushBuilder.cs index 40714ea2..bd90e8c9 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/Push/AddChannelsToPushBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/Push/AddChannelsToPushBuilder.cs @@ -18,6 +18,10 @@ public AddChannelsToPushBuilder DeviceID (string deviceIdForPush){ pubBuilder.DeviceId(deviceIdForPush); return this; } + public AddChannelsToPushBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } public AddChannelsToPushBuilder PushType(PNPushType pnPushType) { pubBuilder.PushType = pnPushType; diff --git a/PubNubUnity/Assets/PubNub/EndPoints/Push/ListPushProvisionsBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/Push/ListPushProvisionsBuilder.cs index 07e7baa2..791ef9a9 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/Push/ListPushProvisionsBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/Push/ListPushProvisionsBuilder.cs @@ -18,6 +18,10 @@ public ListPushProvisionsBuilder PushType(PNPushType pnPushType) { pubBuilder.PushType = pnPushType; return this; } + public ListPushProvisionsBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } public ListPushProvisionsBuilder(PubNubUnity pn){ pubBuilder = new ListPushProvisionsRequestBuilder(pn); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/Push/RemoveAllPushChannelsForDeviceBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/Push/RemoveAllPushChannelsForDeviceBuilder.cs index 9f73abd1..97f7216e 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/Push/RemoveAllPushChannelsForDeviceBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/Push/RemoveAllPushChannelsForDeviceBuilder.cs @@ -18,6 +18,10 @@ public RemoveAllPushChannelsForDeviceBuilder PushType(PNPushType pnPushType) { pubBuilder.PushType = pnPushType; return this; } + public RemoveAllPushChannelsForDeviceBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } public RemoveAllPushChannelsForDeviceBuilder(PubNubUnity pn){ pubBuilder = new RemoveAllPushChannelsForDeviceRequestBuilder(pn); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/Push/RemoveChannelsFromPushBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/Push/RemoveChannelsFromPushBuilder.cs index af93ae49..161e9a1d 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/Push/RemoveChannelsFromPushBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/Push/RemoveChannelsFromPushBuilder.cs @@ -23,9 +23,14 @@ public RemoveChannelsFromPushBuilder PushType(PNPushType pnPushType) { pubBuilder.PushType = pnPushType; return this; } + public RemoveChannelsFromPushBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } public RemoveChannelsFromPushBuilder(PubNubUnity pn){ pubBuilder = new RemoveChannelsFromPushRequestBuilder(pn); } + public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/TimeBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/TimeBuilder.cs index ef3820fa..75c80a89 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/TimeBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/TimeBuilder.cs @@ -12,6 +12,12 @@ public class TimeBuilder public TimeBuilder(PubNubUnity pn){ pubBuilder = new TimeRequestBuilder(pn); } + + public TimeBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } + public void Async(Action callback) { pubBuilder.Async(callback); diff --git a/PubNubUnity/Assets/PubNub/Models/Server/BuildRequests.cs b/PubNubUnity/Assets/PubNub/Models/Server/BuildRequests.cs index 8ac507fd..12f9cff7 100644 --- a/PubNubUnity/Assets/PubNub/Models/Server/BuildRequests.cs +++ b/PubNubUnity/Assets/PubNub/Models/Server/BuildRequests.cs @@ -11,7 +11,7 @@ public static class BuildRequests { #region "Build Requests" - public static Uri BuildRegisterDevicePushRequest(string channel, PNPushType pushType, string pushToken, PubNubUnity pnInstance) + public static Uri BuildRegisterDevicePushRequest(string channel, PNPushType pushType, string pushToken, PubNubUnity pnInstance, Dictionary queryParams) { StringBuilder parameterBuilder = new StringBuilder(); @@ -27,10 +27,10 @@ public static Uri BuildRegisterDevicePushRequest(string channel, PNPushType push url.Add("devices"); url.Add(pushToken); - return BuildRestApiRequest(url, PNOperationType.PNAddPushNotificationsOnChannelsOperation, parameterBuilder.ToString(), pnInstance); + return BuildRestApiRequest(url, PNOperationType.PNAddPushNotificationsOnChannelsOperation, parameterBuilder.ToString(), pnInstance, queryParams); } - public static Uri BuildRemoveChannelPushRequest(string channel, PNPushType pushType, string pushToken, PubNubUnity pnInstance) + public static Uri BuildRemoveChannelPushRequest(string channel, PNPushType pushType, string pushToken, PubNubUnity pnInstance, Dictionary queryParams) { StringBuilder parameterBuilder = new StringBuilder(); @@ -46,10 +46,10 @@ public static Uri BuildRemoveChannelPushRequest(string channel, PNPushType pushT url.Add("devices"); url.Add(pushToken); - return BuildRestApiRequest(url, PNOperationType.PNRemoveChannelsFromGroupOperation, parameterBuilder.ToString(), pnInstance); + return BuildRestApiRequest(url, PNOperationType.PNRemoveChannelsFromGroupOperation, parameterBuilder.ToString(), pnInstance, queryParams); } - internal static Uri BuildRemoveAllDevicePushRequest(PNPushType pushType, string pushToken, PubNubUnity pnInstance) + internal static Uri BuildRemoveAllDevicePushRequest(PNPushType pushType, string pushToken, PubNubUnity pnInstance, Dictionary queryParams) { StringBuilder parameterBuilder = new StringBuilder(); @@ -65,10 +65,10 @@ internal static Uri BuildRemoveAllDevicePushRequest(PNPushType pushType, string url.Add(pushToken); url.Add("remove"); - return BuildRestApiRequest(url, PNOperationType.PNRemoveChannelsFromGroupOperation, parameterBuilder.ToString(), pnInstance); + return BuildRestApiRequest(url, PNOperationType.PNRemoveChannelsFromGroupOperation, parameterBuilder.ToString(), pnInstance, queryParams); } - public static Uri BuildGetChannelsPushRequest(PNPushType pushType, string pushToken, PubNubUnity pnInstance) + public static Uri BuildGetChannelsPushRequest(PNPushType pushType, string pushToken, PubNubUnity pnInstance, Dictionary queryParams) { StringBuilder parameterBuilder = new StringBuilder(); @@ -83,10 +83,10 @@ public static Uri BuildGetChannelsPushRequest(PNPushType pushType, string pushTo url.Add("devices"); url.Add(pushToken); - return BuildRestApiRequest(url, PNOperationType.PNPushNotificationEnabledChannelsOperation, parameterBuilder.ToString(), pnInstance); + return BuildRestApiRequest(url, PNOperationType.PNPushNotificationEnabledChannelsOperation, parameterBuilder.ToString(), pnInstance, queryParams); } - public static Uri BuildUnregisterDevicePushRequest(PNPushType pushType, string pushToken, PubNubUnity pnInstance) + public static Uri BuildUnregisterDevicePushRequest(PNPushType pushType, string pushToken, PubNubUnity pnInstance, Dictionary queryParams) { StringBuilder parameterBuilder = new StringBuilder(); @@ -102,10 +102,10 @@ public static Uri BuildUnregisterDevicePushRequest(PNPushType pushType, string p url.Add (pushToken); url.Add("remove"); - return BuildRestApiRequest(url, PNOperationType.PNRemoveAllPushNotificationsOperation, parameterBuilder.ToString (), pnInstance); + return BuildRestApiRequest(url, PNOperationType.PNRemoveAllPushNotificationsOperation, parameterBuilder.ToString (), pnInstance, queryParams); } - public static Uri BuildPublishRequest (string channel, string message, bool storeInHistory, string metadata, uint messageCounter, int ttl, bool usePost, bool repilicate, PubNubUnity pnInstance) + public static Uri BuildPublishRequest (string channel, string message, bool storeInHistory, string metadata, uint messageCounter, int ttl, bool usePost, bool repilicate, PubNubUnity pnInstance, Dictionary queryParams) { StringBuilder parameterBuilder = new StringBuilder (); parameterBuilder.AppendFormat ("&seqn={0}", messageCounter.ToString ()); @@ -155,10 +155,10 @@ public static Uri BuildPublishRequest (string channel, string message, bool stor url.Add (message); } - return BuildRestApiRequest (url, PNOperationType.PNPublishOperation, parameterBuilder.ToString (), pnInstance); + return BuildRestApiRequest (url, PNOperationType.PNPublishOperation, parameterBuilder.ToString (), pnInstance, queryParams); } - public static Uri BuildDeleteMessagesRequest (string channel, long start, long end, PubNubUnity pnInstance){ + public static Uri BuildDeleteMessagesRequest (string channel, long start, long end, PubNubUnity pnInstance, Dictionary queryParams){ StringBuilder parameterBuilder = new StringBuilder (); if (start != -1) { parameterBuilder.AppendFormat ("&start={0}", start.ToString ().ToLowerInvariant ()); @@ -178,10 +178,10 @@ public static Uri BuildDeleteMessagesRequest (string channel, long start, long e url.Add ("channel"); url.Add (channel); - return BuildRestApiRequest (url, PNOperationType.PNDeleteMessagesOperation, parameterBuilder.ToString(), pnInstance); + return BuildRestApiRequest (url, PNOperationType.PNDeleteMessagesOperation, parameterBuilder.ToString(), pnInstance, queryParams); } - public static Uri BuildFetchRequest (string[] channels, long start, long end, uint count, bool reverse, bool includeToken, PubNubUnity pnInstance) + public static Uri BuildFetchRequest (string[] channels, long start, long end, uint count, bool reverse, bool includeToken, PubNubUnity pnInstance, Dictionary queryParams) { StringBuilder parameterBuilder = new StringBuilder (); @@ -208,10 +208,10 @@ public static Uri BuildFetchRequest (string[] channels, long start, long end, ui url.Add ("channel"); url.Add (Utility.EncodeUricomponent(string.Join(",", channels), PNOperationType.PNFetchMessagesOperation, true, false)); - return BuildRestApiRequest (url, PNOperationType.PNFetchMessagesOperation, parameterBuilder.ToString(), pnInstance); + return BuildRestApiRequest (url, PNOperationType.PNFetchMessagesOperation, parameterBuilder.ToString(), pnInstance, queryParams); } - public static Uri BuildHistoryRequest (string channel, long start, long end, uint count, bool reverse, bool includeToken, PubNubUnity pnInstance) + public static Uri BuildHistoryRequest (string channel, long start, long end, uint count, bool reverse, bool includeToken, PubNubUnity pnInstance, Dictionary queryParams) { StringBuilder parameterBuilder = new StringBuilder (); @@ -237,10 +237,10 @@ public static Uri BuildHistoryRequest (string channel, long start, long end, uin url.Add ("channel"); url.Add (channel); - return BuildRestApiRequest (url, PNOperationType.PNHistoryOperation, parameterBuilder.ToString(), pnInstance); + return BuildRestApiRequest (url, PNOperationType.PNHistoryOperation, parameterBuilder.ToString(), pnInstance, queryParams); } - public static Uri BuildHereNowRequest (string channel, string channelGroups, bool showUUIDList, bool includeUserState, PubNubUnity pnInstance) + public static Uri BuildHereNowRequest (string channel, string channelGroups, bool showUUIDList, bool includeUserState, PubNubUnity pnInstance, Dictionary queryParams) { int disableUUID = (showUUIDList) ? 0 : 1; int userState = (includeUserState) ? 1 : 0; @@ -266,11 +266,11 @@ public static Uri BuildHereNowRequest (string channel, string channelGroups, boo url.Add (","); } - return BuildRestApiRequest (url, PNOperationType.PNHereNowOperation, parameterBuilder.ToString(), pnInstance); + return BuildRestApiRequest (url, PNOperationType.PNHereNowOperation, parameterBuilder.ToString(), pnInstance, queryParams); } - public static Uri BuildWhereNowRequest (string uuid, PubNubUnity pnInstance) + public static Uri BuildWhereNowRequest (string uuid, PubNubUnity pnInstance, Dictionary queryParams) { List url = new List (); @@ -281,20 +281,20 @@ public static Uri BuildWhereNowRequest (string uuid, PubNubUnity pnInstance) url.Add ("uuid"); url.Add (uuid); - return BuildRestApiRequest (url, PNOperationType.PNWhereNowOperation, "", pnInstance); + return BuildRestApiRequest (url, PNOperationType.PNWhereNowOperation, "", pnInstance, queryParams); } - public static Uri BuildTimeRequest (PubNubUnity pnInstance) + public static Uri BuildTimeRequest (PubNubUnity pnInstance, Dictionary queryParams) { List url = new List (); url.Add ("time"); url.Add ("0"); - return BuildRestApiRequest (url, PNOperationType.PNTimeOperation, "", pnInstance); + return BuildRestApiRequest (url, PNOperationType.PNTimeOperation, "", pnInstance, queryParams); } - public static Uri BuildSetStateRequest (string channel, string channelGroup, string jsonUserState, string uuid, PubNubUnity pnInstance) + public static Uri BuildSetStateRequest (string channel, string channelGroup, string jsonUserState, string uuid, PubNubUnity pnInstance, Dictionary queryParams) { StringBuilder paramBuilder = new StringBuilder (); paramBuilder.AppendFormat ("?state={0}", Utility.EncodeUricomponent (jsonUserState, PNOperationType.PNSetStateOperation, false, false)); @@ -315,10 +315,10 @@ public static Uri BuildSetStateRequest (string channel, string channelGroup, str url.Add (uuid); url.Add ("data"); - return BuildRestApiRequest (url, PNOperationType.PNSetStateOperation, paramBuilder.ToString (), pnInstance); + return BuildRestApiRequest (url, PNOperationType.PNSetStateOperation, paramBuilder.ToString (), pnInstance, queryParams); } - public static Uri BuildGetStateRequest (string channel, string channelGroup, string uuid, PubNubUnity pnInstance) + public static Uri BuildGetStateRequest (string channel, string channelGroup, string uuid, PubNubUnity pnInstance, Dictionary queryParams) { string parameters = ""; if (!string.IsNullOrEmpty(channelGroup) && channelGroup.Trim().Length > 0) @@ -337,10 +337,10 @@ public static Uri BuildGetStateRequest (string channel, string channelGroup, str url.Add ("uuid"); url.Add (uuid); - return BuildRestApiRequest (url, PNOperationType.PNGetStateOperation, parameters, pnInstance); + return BuildRestApiRequest (url, PNOperationType.PNGetStateOperation, parameters, pnInstance, queryParams); } - public static Uri BuildPresenceHeartbeatRequest (string channels, string channelGroups, string channelsJsonState, PubNubUnity pnInstance) + public static Uri BuildPresenceHeartbeatRequest (string channels, string channelGroups, string channelsJsonState, PubNubUnity pnInstance, Dictionary queryParams) { StringBuilder presenceParamBuilder = new StringBuilder (); if (channelsJsonState != "{}" && channelsJsonState != "") { @@ -361,10 +361,10 @@ public static Uri BuildPresenceHeartbeatRequest (string channels, string channel url.Add (string.IsNullOrEmpty(channels) ? "," : channels); url.Add ("heartbeat"); - return BuildRestApiRequest (url, PNOperationType.PNPresenceHeartbeatOperation, presenceParamBuilder.ToString(), pnInstance); + return BuildRestApiRequest (url, PNOperationType.PNPresenceHeartbeatOperation, presenceParamBuilder.ToString(), pnInstance, queryParams); } - public static Uri BuildLeaveRequest (string channels, string channelGroups, PubNubUnity pnInstance) + public static Uri BuildLeaveRequest (string channels, string channelGroups, PubNubUnity pnInstance, Dictionary queryParams) { string compiledUserState = pnInstance.SubscriptionInstance.CompiledUserState; @@ -387,7 +387,7 @@ public static Uri BuildLeaveRequest (string channels, string channelGroups, PubN url.Add (string.IsNullOrEmpty(channels) ? "," : channels); url.Add ("leave"); - return BuildRestApiRequest (url, PNOperationType.PNLeaveOperation, unsubscribeParamBuilder.ToString(), pnInstance); + return BuildRestApiRequest (url, PNOperationType.PNLeaveOperation, unsubscribeParamBuilder.ToString(), pnInstance, queryParams); } public static Uri BuildSubscribeRequest (string channels, string channelGroups, string timetoken, string channelsJsonState, string region, string filterExpr, PubNubUnity pnInstance){ @@ -422,11 +422,12 @@ public static Uri BuildSubscribeRequest (string channels, string channelGroups, url, PNOperationType.PNSubscribeOperation, subscribeParamBuilder.ToString (), - pnInstance + pnInstance, + null ); } - public static Uri BuildAddChannelsToChannelGroupRequest(string[] channels, string nameSpace, string groupName, PubNubUnity pnInstance) + public static Uri BuildAddChannelsToChannelGroupRequest(string[] channels, string nameSpace, string groupName, PubNubUnity pnInstance, Dictionary queryParams) { string parameters = string.Format("?add={0}", Utility.EncodeUricomponent(string.Join(",", channels), PNOperationType.PNAddChannelsToGroupOperation, true, false)); @@ -444,10 +445,10 @@ public static Uri BuildAddChannelsToChannelGroupRequest(string[] channels, strin url.Add("channel-group"); url.Add(groupName); - return BuildRestApiRequest(url, PNOperationType.PNAddChannelsToGroupOperation, parameters, pnInstance); + return BuildRestApiRequest(url, PNOperationType.PNAddChannelsToGroupOperation, parameters, pnInstance, queryParams); } - public static Uri BuildRemoveChannelsFromChannelGroupRequest(string[] channels, string nameSpace, string groupName, PubNubUnity pnInstance) + public static Uri BuildRemoveChannelsFromChannelGroupRequest(string[] channels, string nameSpace, string groupName, PubNubUnity pnInstance, Dictionary queryParams) { bool channelsAvailable = false; string parameters = ""; @@ -475,10 +476,10 @@ public static Uri BuildRemoveChannelsFromChannelGroupRequest(string[] channels, respType = PNOperationType.PNRemoveGroupOperation; } - return BuildRestApiRequest (url, respType, parameters, pnInstance); + return BuildRestApiRequest (url, respType, parameters, pnInstance, queryParams); } - public static Uri BuildGetChannelsForChannelGroupRequest(string nameSpace, string groupName, bool limitToChannelGroupScopeOnly, PubNubUnity pnInstance) + public static Uri BuildGetChannelsForChannelGroupRequest(string nameSpace, string groupName, bool limitToChannelGroupScopeOnly, PubNubUnity pnInstance, Dictionary queryParams) { bool groupNameAvailable = false; bool nameSpaceAvailable = false; @@ -518,7 +519,7 @@ public static Uri BuildGetChannelsForChannelGroupRequest(string nameSpace, strin } } - return BuildRestApiRequest(url, PNOperationType.PNChannelsForGroupOperation, "", pnInstance); + return BuildRestApiRequest(url, PNOperationType.PNChannelsForGroupOperation, "", pnInstance, queryParams); } private static StringBuilder AppendAuthKeyToURL(StringBuilder url, string authenticationKey, PNOperationType type){ @@ -686,8 +687,20 @@ public static string GenerateSignatureAndAddToURL(PubNubUnity pnInstance, Uri ur } return ""; } + + private static StringBuilder AddQueryParams (StringBuilder url, Dictionary queryParams){ + if(queryParams!=null){ + foreach (KeyValuePair kvp in queryParams){ + url.Append("&"); + url.Append(kvp.Key); + url.Append("="); + url.Append(kvp.Value); + } + } + return url; + } - private static Uri BuildRestApiRequest (List urlComponents, PNOperationType type, string parameters, PubNubUnity pnInstance) + private static Uri BuildRestApiRequest (List urlComponents, PNOperationType type, string parameters, PubNubUnity pnInstance, Dictionary queryParams) { string uuid = pnInstance.PNConfig.UUID; bool ssl = pnInstance.PNConfig.Secure; @@ -703,7 +716,7 @@ private static Uri BuildRestApiRequest (List urlComponents, PNOperati string urlComponentsEncoded = EncodeURL(urlComponents, type).ToString(); - url.Append(urlComponentsEncoded); + url.Append(urlComponentsEncoded); switch (type) { case PNOperationType.PNLeaveOperation: @@ -786,6 +799,8 @@ private static Uri BuildRestApiRequest (List urlComponents, PNOperati } url = AppendLatencyToURL(url, type, pnInstance.Latency); + url = AddQueryParams(url, queryParams); + Uri requestUri = new Uri (url.ToString ()); return requestUri; diff --git a/PubNubUnity/Assets/PubNub/Workers/HeartbeatWorker.cs b/PubNubUnity/Assets/PubNub/Workers/HeartbeatWorker.cs index 3979409b..9c3aa8b2 100644 --- a/PubNubUnity/Assets/PubNub/Workers/HeartbeatWorker.cs +++ b/PubNubUnity/Assets/PubNub/Workers/HeartbeatWorker.cs @@ -108,7 +108,8 @@ void StartHeartbeat (bool pause, int pauseTime) isHearbeatRunning = true; Uri request = BuildRequests.BuildTimeRequest( - this.PubNubInstance + this.PubNubInstance, + null ); RequestState requestState = new RequestState (); diff --git a/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs b/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs index 5d3b95f9..db99ff27 100644 --- a/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs +++ b/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs @@ -127,7 +127,8 @@ void StartPresenceHeartbeat (bool pause, int pauseTime) channels, channelGroups, channelsJsonState, - this.PubNubInstance + this.PubNubInstance, + null ); RequestState requestState = new RequestState (); From 1ce387cbe36cf5aeece2b5a3e0eac04d8a12a3bb Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Fri, 4 Jan 2019 21:07:49 +0530 Subject: [PATCH 08/18] QueryParams --- .pubnub.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.pubnub.yml b/.pubnub.yml index 4fbe0491..1d601371 100644 --- a/.pubnub.yml +++ b/.pubnub.yml @@ -8,6 +8,9 @@ changelog: - text: "Heartbeats per channel" type: feature + - + text: "QueryParams in all API calls" + type: feature - text: "User Exceptions Fix" type: improvement @@ -284,6 +287,7 @@ features: - CHANNEL-GROUPS-LIST-CHANNELS-IN-GROUP others: - TELEMETRY + - QUERY-PARAM presence: - PRESENCE-HERE-NOW - PRESENCE-WHERE-NOW From 6a332695d9530954d3f681d5f131b4e03ce09bf4 Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Fri, 4 Jan 2019 21:23:31 +0530 Subject: [PATCH 09/18] QueryParams --- FEATURES | 17 ----------------- PLATFORM_VERSIONS | 2 -- .../Builders/Presence/PresenceRequestBuilder.cs | 2 +- 3 files changed, 1 insertion(+), 20 deletions(-) delete mode 100644 FEATURES delete mode 100644 PLATFORM_VERSIONS diff --git a/FEATURES b/FEATURES deleted file mode 100644 index 030502c7..00000000 --- a/FEATURES +++ /dev/null @@ -1,17 +0,0 @@ -PUB -PUB-NO_ARCHIVE -PR-SUB_UNSUB -HISTORY -HISTORY-WITH_TOKEN -AES -HEARTBEAT -STATE -UUID -PAM-403_HANDLING -PAM-AUTHTOKEN -PAM-ADMIN -TIME -HERE_NOW -GLOBAL_HERE_NOW -WHERE_NOW -PRESENCE-SUB_UNSUB \ No newline at end of file diff --git a/PLATFORM_VERSIONS b/PLATFORM_VERSIONS deleted file mode 100644 index 796319a3..00000000 --- a/PLATFORM_VERSIONS +++ /dev/null @@ -1,2 +0,0 @@ -Unity 2017.x -Unity 5.x diff --git a/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs index 54c69046..6fb14c02 100644 --- a/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs @@ -71,7 +71,7 @@ public void Async(Action callback) #endregion protected override void RunWebRequest(QueueManager qm){ - + //No processing here, processing done in async method } protected override void CreatePubNubResponse(object deSerializedResult, RequestState requestState){ From aa50fb24d5a118e6749e8c115769ef85ad1e7fbd Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Tue, 8 Jan 2019 12:29:25 +0530 Subject: [PATCH 10/18] Leave callback message exception fix --- .../Presence/PresenceRequestBuilder.cs | 48 +--------- .../Builders/PubSub/LeaveRequestBuilder.cs | 7 +- .../Editor/ChannelGroupBuildRequestsTests.cs | 30 +++++- PubNubUnity/Assets/PubNub/Examples/Example.cs | 93 +++---------------- .../PubNub/PubNubUnity/PubNubUnityBase.cs | 2 +- 5 files changed, 50 insertions(+), 130 deletions(-) diff --git a/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs index 6fb14c02..4037eed9 100644 --- a/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs @@ -61,11 +61,14 @@ public void Async(Action callback) } else { PubNubInstance.SubWorker.PHBWorker.State = ""; } - + PubNubInstance.SubWorker.PHBWorker.StopPresenceHeartbeat(); PubNubInstance.SubWorker.PHBWorker.RunPresenceHeartbeat(false, PubNubInstance.PNConfig.PresenceInterval); } else { PubNubInstance.SubWorker.PHBWorker.RunIndependentOfSubscribe = false; + PubNubInstance.SubWorker.PHBWorker.ChannelGroups = channelGroups; + PubNubInstance.SubWorker.PHBWorker.Channels = channels; PubNubInstance.SubWorker.PHBWorker.StopPresenceHeartbeat(); + PubNubInstance.SubWorker.PHBWorker.RunPresenceHeartbeat(false, PubNubInstance.PNConfig.PresenceInterval); } } #endregion @@ -75,48 +78,7 @@ protected override void RunWebRequest(QueueManager qm){ } protected override void CreatePubNubResponse(object deSerializedResult, RequestState requestState){ - //Returned JSON: `{"status": 200, "message": "OK", "payload": {"channels": {"channel1": {"k": "v"}, "channel2": {}}}, "uuid": "pn-c5a12d424054a3688066572fb955b7a0", "service": "Presence"}` - - // PNGetStateResult pnGetStateResult = new PNGetStateResult(); - - // Dictionary dictionary = deSerializedResult as Dictionary; - // PNStatus pnStatus = new PNStatus(); - // if(dictionary != null) { - // string message = Utility.ReadMessageFromResponseDictionary(dictionary, "message"); - // if(Utility.CheckDictionaryForError(dictionary, "error")){ - // pnGetStateResult = null; - // pnStatus = base.CreateErrorResponseFromMessage(message, requestState, PNStatusCategory.PNUnknownCategory); - // } else { - // object objPayload; - // dictionary.TryGetValue("payload", out objPayload); - - // if(objPayload!=null){ - // Dictionary payload = objPayload as Dictionary; - // object objChannelsDict; - // payload.TryGetValue("channels", out objChannelsDict); - - // if(objChannelsDict!=null){ - // Dictionary channelsDict = objPayload as Dictionary; - // #if (ENABLE_PUBNUB_LOGGING) - // foreach(KeyValuePair kvp in channelsDict){ - // this.PubNubInstance.PNLog.WriteToLog(string.Format ("KVP: {0} {1}", kvp.Key, kvp.Value), PNLoggingMethod.LevelInfo); - // } - // #endif - // pnGetStateResult.StateByChannels = channelsDict; - // } else { - // pnGetStateResult.StateByChannels = payload; - // } - - // } else { - // pnGetStateResult = null; - // pnStatus = base.CreateErrorResponseFromMessage("payload dictionary is null", requestState, PNStatusCategory.PNMalformedResponseCategory); - // } - // } - // } else { - // pnGetStateResult = null; - // pnStatus = base.CreateErrorResponseFromMessage("Response dictionary is null", requestState, PNStatusCategory.PNMalformedResponseCategory); - // } - // Callback(pnGetStateResult, pnStatus); + //No processing here } } diff --git a/PubNubUnity/Assets/PubNub/Builders/PubSub/LeaveRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/PubSub/LeaveRequestBuilder.cs index 48b98a11..339e4708 100644 --- a/PubNubUnity/Assets/PubNub/Builders/PubSub/LeaveRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/PubSub/LeaveRequestBuilder.cs @@ -110,20 +110,23 @@ void RemoveUnsubscribedChannelsAndDeleteUserState(List channelEnt foreach(ChannelEntity ce in channelEntities) { string channelToBeRemoved = ce.ChannelID.ChannelOrChannelGroupName; + PNLeaveRequestResult pnLeaveRequestResult = new PNLeaveRequestResult(); if (this.PubNubInstance.SubscriptionInstance.Delete (ce)) { string message = string.Format ("{0} Unsubscribed from {1}", (ce.ChannelID.IsPresenceChannel) ? "Presence" : "", channelToBeRemoved.Replace (Utility.PresenceChannelSuffix, "")); #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog (string.Format ("RemoveUnsubscribedChannelsAndDeleteUserState: JSON response={0}", message), PNLoggingMethod.LevelInfo); #endif PNStatus pnStatus = base.CreateStatusResponseFromMessage(false, message, null, PNStatusCategory.PNConnectedCategory); - Callback(null, pnStatus); + pnLeaveRequestResult.Message = message; + Callback(pnLeaveRequestResult, pnStatus); } else { string message = string.Format("Unsubscribe Error. Please retry the unsubscribe operation. channel{0}", channelToBeRemoved); #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog(string.Format("RemoveUnsubscribedChannelsAndDeleteUserState: channel={0} unsubscribe error", channelToBeRemoved), PNLoggingMethod.LevelInfo); #endif PNStatus pnStatus = base.CreateErrorResponseFromMessage(message, null, PNStatusCategory.PNUnknownCategory); - Callback(null, pnStatus); + pnLeaveRequestResult.Message = message; + Callback(pnLeaveRequestResult, pnStatus); } } } diff --git a/PubNubUnity/Assets/PubNub/Editor/ChannelGroupBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/ChannelGroupBuildRequestsTests.cs index 9b72e577..b773feef 100644 --- a/PubNubUnity/Assets/PubNub/Editor/ChannelGroupBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/ChannelGroupBuildRequestsTests.cs @@ -2,6 +2,7 @@ using PubNubAPI; using NUnit.Framework; using System.Text; +using System.Collections.Generic; namespace PubNubAPI.Tests { @@ -66,7 +67,27 @@ public void BuildAddChannelsToChannelGroupRequestSSLNoAuthCh () TestBuildAddChannelsToChannelGroupRequestCommon (channels, true, ""); } + [Test] + public void BuildAddChannelsToChannelGroupRequestSSLNoAuthChQP () + { + string [] channels = {"addChannel1"}; + TestBuildAddChannelsToChannelGroupRequestCommon (channels, true, "", true); + } + public void TestBuildAddChannelsToChannelGroupRequestCommon(string[] channels, bool ssl, string authKey){ + TestBuildAddChannelsToChannelGroupRequestCommon(channels, ssl, authKey, false); + } + + public void TestBuildAddChannelsToChannelGroupRequestCommon(string[] channels, bool ssl, string authKey, bool sendQueryParams) + { + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } string channelGroup = "channelGroup"; string uuid = "customuuid"; @@ -92,18 +113,18 @@ public void TestBuildAddChannelsToChannelGroupRequestCommon(string[] channels, b } Uri uri = BuildRequests.BuildAddChannelsToChannelGroupRequest (channels, "", channelGroup, - pnUnity, null + pnUnity, queryParams ); string ch = string.Join(",", channels); //http://ps.pndsn.com/v1/channel-registration/sub-key/demo-36/channel-group/channelGroup?add=addChannel1,%20addChannel2&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityOSX%2F3.7 - string expected = string.Format ("http{0}://{1}/v1/channel-registration/sub-key/{2}/channel-group/{3}?add={4}&uuid={5}{6}&pnsdk={7}", + string expected = string.Format ("http{0}://{1}/v1/channel-registration/sub-key/{2}/channel-group/{3}?add={4}&uuid={5}{6}&pnsdk={7}{8}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, channelGroup, Utility.EncodeUricomponent(ch, PNOperationType.PNAddChannelsToGroupOperation, true, true), uuid, authKeyString, - Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNAddChannelsToGroupOperation, false, true) - + Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNAddChannelsToGroupOperation, false, true), + queryParamString ); string received = uri.OriginalString; EditorCommon.LogAndCompare (expected, received); @@ -318,7 +339,6 @@ public void TestBuildGetChannelsForChannelGroupRequestCommon(bool allCg, uuid, authKeyString, Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNChannelsForGroupOperation, false, true), channelGroupStr - ); string received = uri.OriginalString; EditorCommon.LogAndCompare (expected, received); diff --git a/PubNubUnity/Assets/PubNub/Examples/Example.cs b/PubNubUnity/Assets/PubNub/Examples/Example.cs index 8a42ba2b..23496af8 100644 --- a/PubNubUnity/Assets/PubNub/Examples/Example.cs +++ b/PubNubUnity/Assets/PubNub/Examples/Example.cs @@ -75,6 +75,7 @@ void ButtonUnsubscribeAllHandler(){ pubnub.UnsubscribeAll().Async((result, status) => { Debug.Log ("in UnsubscribeAll"); if(status.Error){ + Debug.Log ("in UnsubscribeAll Error"); Debug.Log (string.Format("In Example, UnsubscribeAll Error: {0} {1} {2}", status.StatusCode, status.ErrorData, status.Category)); } else { Debug.Log (string.Format("DateTime {0}, In UnsubscribeAll, result: {1}", DateTime.UtcNow, result.Message)); @@ -169,12 +170,13 @@ void ButtonTimeHandler(){ } else { connected = true; } - pubnub.Presence().Connected(connected).Channels(listChannels).Async ((result, status) => { - Debug.Log("result" + result); - + Debug.Log("connected:" + connected); + + pubnub.Presence().Connected(connected).Channels(new List{"hb1"}).Async ((result, status) => { + Debug.Log("result:" + result); }); - pubnub.Time ().Async ((result, status) => { - + + pubnub.Time().Async ((result, status) => { if(status.Error){ PrintStatus(status); Debug.Log (string.Format("In Example, Time Error: {0} {1} {2}", status.StatusCode, status.ErrorData, status.Category)); @@ -185,7 +187,9 @@ void ButtonTimeHandler(){ }); } void ButtonHereNowHandler(){ - pubnub.HereNow().Channels(listChannels).ChannelGroups(listChannelGroups).IncludeState(true).IncludeUUIDs(true).Async((result, status) => { + Dictionary dict = new Dictionary(); + dict.Add("d","f"); + pubnub.HereNow().Channels(listChannels).ChannelGroups(listChannelGroups).IncludeState(true).IncludeUUIDs(true).QueryParam(dict).Async((result, status) => { Debug.Log ("in HereNow1"); if(status.Error){ PrintStatus(status); @@ -225,7 +229,10 @@ void ButtonFireHandler(){ void ButtonPublishHandler(){ //for(int i =0; i<1000; i++){ //pubnub.Publish().Channel("channel1").Message("test message" +i+ " " + DateTime.Now.Ticks.ToString()).Async((result, status) => { - pubnub.Publish().Channel("channel1").Message("test message" + DateTime.Now.Ticks.ToString()).Async((result, status) => { + Dictionary dict = new Dictionary(); + dict.Add ("k1", "v1"); + + pubnub.Publish().Channel("channel1").Message("test message" + DateTime.Now.Ticks.ToString()).QueryParam(dict).Async((result, status) => { Debug.Log ("in Publish"); if(!status.Error){ Debug.Log (string.Format("DateTime {0}, In Publish Example, Timetoken: {1}", DateTime.UtcNow , result.Timetoken)); @@ -396,70 +403,6 @@ void Init(){ listChannelGroups = new List (){cg1, cg2}; listChannels = new List (){ch1, ch2}; - - pubnub.SusbcribeCallback += SusbcribeCallbackHandler2; - - - /*pubnub.SusbcribeCallback += (sender, e) => { - SusbcribeEventEventArgs mea = e as SusbcribeEventEventArgs; - - if(mea.Status != null){ - - if(mea.Status.Category.Equals(PNStatusCategory.PNConnectedCategory)){ - PrintStatus(mea.Status); - pubnub.Publish().Channel("my_channel").Message("Hello from the PubNub Unity SDK").UsePost(true).Async((result, status) => { - if(!status.Error){ - Debug.Log (string.Format("DateTime {0}, In Publish Example, Timetoken: {1}", DateTime.UtcNow , result.Timetoken)); - } else { - Debug.Log (status.Error); - Debug.Log (status.ErrorData.Info); - } - - }); - } - } - if(mea.MessageResult != null){ - Debug.Log ("In Example, SusbcribeCallback in message" + mea.MessageResult.Channel + mea.MessageResult.Payload); - Display(string.Format("SusbcribeCallback Result: {0}", pubnub.JsonLibrary.SerializeToJsonString(mea.MessageResult.Payload))); - } - if(mea.PresenceEventResult != null){ - Debug.Log ("In Example, SusbcribeCallback in presence" + mea.PresenceEventResult.Channel + mea.PresenceEventResult.Occupancy + mea.PresenceEventResult.Event); - } - };*/ - - //pubnub.Subscribe ().ChannelGroups(new List (){"my_channel_group"}).Channels(new List (){"channel1"}).WithPresence().Execute(); - - //GetHistoryRecursive(0, "channel1"); - - /*pubnub.SusbcribeCallback += SusbcribeCallbackHandler2; - string myChannel = "jasdeep-status"; - pubnub.Subscribe() - .Channels(new List() { - string.Format("{0},{1}-UPDATES", myChannel, myChannel), - }) - .Execute(); - - Dictionary message = new Dictionary(); - message.Add("message_id", "10001"); - message.Add("channel", "jasdeep-status-UPDATES"); - message.Add("original_timetoken", DateTime.Now.ToString()); - message.Add("user", "jasdeep"); - message.Add("status", "Writing up design patterns..."); - message.Add("usecase", "update"); - message.Add("deleted", false); - message.Add("is_update", true); - - pubnub.Publish() - .Channel("my_channel") - .Message(message) - .Async((result, status) => { - if (!status.Error) { - Debug.Log(string.Format("DateTime {0}, In Publish Example, Timetoken: {1}", DateTime.UtcNow , result.Timetoken)); - } else { - Debug.Log(status.Error); - Debug.Log(status.ErrorData.Info); - } - });*/ } Dictionary> messageList = new Dictionary>(); @@ -478,12 +421,6 @@ void SusbcribeCallbackHandler2(object sender, EventArgs e) { } if (mea.MessageResult != null) { Debug.Log("SusbcribeCallback in message" + mea.MessageResult.Channel + mea.MessageResult.Payload); - // Dictionary messageIds = mea.MessageResult.Payload as Dictionary; - - // UnityEngine.Debug.Log("message_id:" + messageIds["message_id"]); - // DisplayMessages (messageIds, mea.MessageResult.Channel); - - } if (mea.PresenceEventResult != null) { Debug.Log("SusbcribeCallback in presence" + mea.PresenceEventResult.Channel + mea.PresenceEventResult.Occupancy + mea.PresenceEventResult.Event); @@ -619,8 +556,6 @@ void AuditPushChannelProvisions(PubNub pubnub, string deviceId, PNPushType pnPus } }); - - //RemoveAllPushNotificationsFromChannels(pubnub, deviceId, pnPushType); } void RemoveAllPushNotificationsFromChannels(PubNub pubnub, string deviceId, PNPushType pnPushType){ diff --git a/PubNubUnity/Assets/PubNub/PubNubUnity/PubNubUnityBase.cs b/PubNubUnity/Assets/PubNub/PubNubUnity/PubNubUnityBase.cs index 36a859be..85137e53 100644 --- a/PubNubUnity/Assets/PubNub/PubNubUnity/PubNubUnityBase.cs +++ b/PubNubUnity/Assets/PubNub/PubNubUnity/PubNubUnityBase.cs @@ -7,7 +7,7 @@ namespace PubNubAPI public class PubNubUnityBase { protected Counter publishMessageCounter; - private const string build = "4.0.4"; + private const string build = "4.0.5"; private string pnsdkVersion = string.Format ("PubNub-CSharp-Unity/{0}", build); public string Version { From fc6c9d3543bb358a1dbaf9f7721908263b338403 Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Tue, 8 Jan 2019 19:41:35 +0530 Subject: [PATCH 11/18] QueryParam unit tests --- .../Editor/ChannelGroupBuildRequestsTests.cs | 59 ++++++++-- .../DeleteMessagesBuildRequestsTests.cs | 33 +++++- .../Editor/HereNowBuildRequestsTests.cs | 52 +++++++-- .../Editor/HistoryBuildRequestsTests.cs | 30 ++++- .../PubNub/Editor/LeaveBuildRequestsTests.cs | 29 ++++- .../Editor/PublishBuildRequestsTests.cs | 41 ++++++- .../PubNub/Editor/PushBuildRequestsTests.cs | 104 +++++++++++++++--- .../PubNub/Editor/StateBuildRequestsTests.cs | 51 ++++++++- .../PubNub/Editor/TimeBuildRequestsTests.cs | 26 ++++- .../Editor/WhereNowBuildRequestsTests.cs | 27 ++++- 10 files changed, 393 insertions(+), 59 deletions(-) diff --git a/PubNubUnity/Assets/PubNub/Editor/ChannelGroupBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/ChannelGroupBuildRequestsTests.cs index b773feef..a501dc6a 100644 --- a/PubNubUnity/Assets/PubNub/Editor/ChannelGroupBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/ChannelGroupBuildRequestsTests.cs @@ -188,7 +188,6 @@ public void BuildBuildRemoveAllChannelsFromChannelGroupRequestAuth () TestBuildRemoveChannelsFromChannelGroupRequestCommon (channels, false, "authKey"); } - [Test] public void BuildBuildRemoveChannelsFromChannelGroupRequestAuth () { @@ -196,9 +195,29 @@ public void BuildBuildRemoveChannelsFromChannelGroupRequestAuth () TestBuildRemoveChannelsFromChannelGroupRequestCommon (channels, false, "authKey"); } + [Test] + public void BuildBuildRemoveChannelsFromChannelGroupRequestAuthQP () + { + string [] channels = {"addChannel1"}; + TestBuildRemoveChannelsFromChannelGroupRequestCommon (channels, false, "authKey", true); + } + + public void TestBuildRemoveChannelsFromChannelGroupRequestCommon(string[] channels, bool ssl, string authKey){ + TestBuildRemoveChannelsFromChannelGroupRequestCommon(channels, ssl, authKey, false); + } + //remove channels //remove cg - public void TestBuildRemoveChannelsFromChannelGroupRequestCommon(string[] channels, bool ssl, string authKey){ + public void TestBuildRemoveChannelsFromChannelGroupRequestCommon(string[] channels, bool ssl, string authKey, bool sendQueryParams){ + + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } string channelGroup = "channelGroup"; string uuid = "customuuid"; @@ -224,7 +243,7 @@ public void TestBuildRemoveChannelsFromChannelGroupRequestCommon(string[] channe } Uri uri = BuildRequests.BuildRemoveChannelsFromChannelGroupRequest (channels, "", channelGroup, - pnUnity, null + pnUnity, queryParams ); string ch = ""; @@ -237,11 +256,12 @@ public void TestBuildRemoveChannelsFromChannelGroupRequestCommon(string[] channe } //http://ps.pndsn.com/v1/channel-registration/sub-key/demo-36/channel-group/channelGroup?add=addChannel1,%20addChannel2&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityOSX%2F3.7 - string expected = string.Format ("http{0}://{1}/v1/channel-registration/sub-key/{2}/channel-group/{3}{8}?{4}uuid={5}{6}&pnsdk={7}", + string expected = string.Format ("http{0}://{1}/v1/channel-registration/sub-key/{2}/channel-group/{3}{8}?{4}uuid={5}{6}&pnsdk={7}{9}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, channelGroup, chStr, uuid, authKeyString, Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNRemoveChannelsFromGroupOperation, false, true), - chStr2 + chStr2, + queryParamString ); string received = uri.OriginalString; @@ -296,10 +316,28 @@ public void TestBuildGetChannelsForChannelGroupRequestSSLAuthAll () TestBuildGetChannelsForChannelGroupRequestCommon (true, true, "authKey"); } + [Test] + public void TestBuildGetChannelsForChannelGroupRequestSSLAuthAllQP () + { + TestBuildGetChannelsForChannelGroupRequestCommon (true, true, "authKey", true); + } + + public void TestBuildGetChannelsForChannelGroupRequestCommon(bool allCg, bool ssl, string authKey){ + TestBuildGetChannelsForChannelGroupRequestCommon(allCg, ssl, authKey, false); + } //GetChannels //Get All CG - public void TestBuildGetChannelsForChannelGroupRequestCommon(bool allCg, - bool ssl, string authKey){ + public void TestBuildGetChannelsForChannelGroupRequestCommon(bool allCg, bool ssl, string authKey, bool sendQueryParams){ + + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } + string channelGroup = "channelGroup"; string channelGroupStr ="channel-group/"; @@ -329,16 +367,17 @@ public void TestBuildGetChannelsForChannelGroupRequestCommon(bool allCg, } Uri uri = BuildRequests.BuildGetChannelsForChannelGroupRequest ("", channelGroup, allCg, - pnUnity, null + pnUnity, queryParams ); //http://ps.pndsn.com/v1/channel-registration/sub-key/demo-36/channel-group/channelGroup?add=addChannel1,%20addChannel2&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityOSX%2F3.7 - string expected = string.Format ("http{0}://{1}/v1/channel-registration/sub-key/{2}/{8}{3}?uuid={5}{6}&pnsdk={7}", + string expected = string.Format ("http{0}://{1}/v1/channel-registration/sub-key/{2}/{8}{3}?uuid={5}{6}&pnsdk={7}{9}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, channelGroup, "", uuid, authKeyString, Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNChannelsForGroupOperation, false, true), - channelGroupStr + channelGroupStr, + queryParamString ); string received = uri.OriginalString; EditorCommon.LogAndCompare (expected, received); diff --git a/PubNubUnity/Assets/PubNub/Editor/DeleteMessagesBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/DeleteMessagesBuildRequestsTests.cs index 98602852..374c9543 100644 --- a/PubNubUnity/Assets/PubNub/Editor/DeleteMessagesBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/DeleteMessagesBuildRequestsTests.cs @@ -3,6 +3,7 @@ using NUnit.Framework; using System.Text; using System.Linq; +using System.Collections.Generic; namespace PubNubAPI.Tests { @@ -94,8 +95,29 @@ public void TestDeleteMessagesBuildRequestsStart(){ DeleteMessagesBuildRequestsCommon (true, channel, "", startTime, endTime, paramsInOrder, uriParamString); } + [Test] + public void TestDeleteMessagesBuildRequestsStartQP(){ + long startTime = -1; + long endTime = 15078933628583256; + string channel = "DeleteMessagesChannel2"; + string paramsInOrder = "{0}&pnsdk={1}×tamp={2}&uuid=DeleteMessagesTestUUID"; + //uuid=PubNubUnityExample&start=15078932998876451&end=15078933628583256×tamp=1534756366&auth=authKey&pnsdk=PubNub-CSharp-UnityWin%2F4.0.1 + string uriParamString = "uuid={0}{1}{2}×tamp={3}{4}&pnsdk={5}"; + + DeleteMessagesBuildRequestsCommon (true, channel, "", startTime, endTime, paramsInOrder, uriParamString, true); + } public void DeleteMessagesBuildRequestsCommon(bool ssl, string channel, string authKey, long startTime, long endTime, string paramsInOrderVal, string uriParamString){ + DeleteMessagesBuildRequestsCommon(ssl, channel, authKey, startTime, endTime, paramsInOrderVal, uriParamString, false); + } + + public void DeleteMessagesBuildRequestsCommon(bool ssl, string channel, string authKey, long startTime, long endTime, string paramsInOrderVal, string uriParamString, bool sendQueryParams){ + Dictionary queryParams = new Dictionary(); + if(sendQueryParams){ + queryParams.Add("a","f"); + } else { + queryParams = null; + } PNConfiguration pnConfiguration = new PNConfiguration (); pnConfiguration.Origin = EditorCommon.Origin; pnConfiguration.SubscribeKey = EditorCommon.SubscribeKey; @@ -126,7 +148,7 @@ public void DeleteMessagesBuildRequestsCommon(bool ssl, string channel, string a endTimeString = string.Format("&end={0}", endTime); } - Uri uri = BuildRequests.BuildDeleteMessagesRequest (channel, startTime, endTime, pnUnity, null); + Uri uri = BuildRequests.BuildDeleteMessagesRequest (channel, startTime, endTime, pnUnity, queryParams); var segments = uri.Segments; foreach(string seg in segments){ @@ -162,6 +184,9 @@ public void DeleteMessagesBuildRequestsCommon(bool ssl, string channel, string a case "pnsdk": Assert.AreEqual(version,kv[1]); break; + case "a": + Assert.AreEqual("f",kv[1]); + break; case "signature": sig = kv[1]; break; @@ -177,10 +202,10 @@ public void DeleteMessagesBuildRequestsCommon(bool ssl, string channel, string a version ); - Uri uriFormatted = new Uri(string.Format("http{0}://{1}/v3/history/sub-key/{2}/channel/{3}?{4}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, channel, uriParamStringFormatted)); + Uri uriFormatted = new Uri(string.Format("http{0}://{1}/v3/history/sub-key/{2}/channel/{3}?{4}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, channel, uriParamStringFormatted + )); UnityEngine.Debug.Log("uriFormatted: " + uriFormatted); - - + string paramsInOrder = BuildRequests.SetParametersInOrder(uriFormatted); if((startTime==-1) && (endTime==-1)){ paramsInOrderVal = string.Format(paramsInOrderVal, version, timestamp); diff --git a/PubNubUnity/Assets/PubNub/Editor/HereNowBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/HereNowBuildRequestsTests.cs index 8758487c..17592f18 100644 --- a/PubNubUnity/Assets/PubNub/Editor/HereNowBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/HereNowBuildRequestsTests.cs @@ -2,6 +2,7 @@ using PubNubAPI; using NUnit.Framework; using System.Text; +using System.Collections.Generic; namespace PubNubAPI.Tests { @@ -299,6 +300,12 @@ public void TestBuildHereNowRequestShowUUIDInclStateSSLNoAuthCGnCH () TestBuildHereNowRequestCommon (true, true, true, true, true, ""); } + [Test] + public void TestBuildHereNowRequestShowUUIDInclStateSSLNoAuthCGnCHQP () + { + TestBuildHereNowRequestCommon (true, true, true, true, true, "", true); + } + public void TestBuildHereNowRequestCommon(bool ssl, bool showUUIDList, bool includeUserState, string authKey){ TestBuildHereNowRequestCommon(true, false, ssl, showUUIDList, includeUserState, authKey); } @@ -308,7 +315,18 @@ public void TestBuildHereNowRequestCommon(bool testCg, bool ssl, bool showUUIDLi } public void TestBuildHereNowRequestCommon(bool testCh, bool testCg, bool ssl, bool showUUIDList, bool includeUserState, string authKey){ - + TestBuildHereNowRequestCommon(testCh, testCg, ssl, showUUIDList, includeUserState, authKey, false); + } + + public void TestBuildHereNowRequestCommon(bool testCh, bool testCg, bool ssl, bool showUUIDList, bool includeUserState, string authKey, bool sendQueryParams){ + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } string channel = "here_now_channel"; string channelGroup = "here_now_channelGroup"; string channelGroupStr = string.Format("&channel-group={0}", Utility.EncodeUricomponent(channelGroup, PNOperationType.PNHereNowOperation, true, false)); @@ -345,14 +363,15 @@ public void TestBuildHereNowRequestCommon(bool testCh, bool testCg, bool ssl, bo int userState = (includeUserState) ? 1 : 0; string parameters = string.Format ("disable_uuids={0}&state={1}", disableUUID, userState); - Uri uri = BuildRequests.BuildHereNowRequest (channel, channelGroup, showUUIDList, includeUserState, pnUnity, null); + Uri uri = BuildRequests.BuildHereNowRequest (channel, channelGroup, showUUIDList, includeUserState, pnUnity, queryParams); //http://ps.pndsn.com/v2/presence/sub_key/demo/channel/here_now_channel?disable_uuids=1&state=0&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityOSX/3.6.9.0 - string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}/channel/{3}?{4}{8}&uuid={5}{6}&pnsdk={7}", + string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}/channel/{3}?{4}{8}&uuid={5}{6}&pnsdk={7}{9}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, channel, parameters, uuid, authKeyString, Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNHereNowOperation, false, true), - channelGroupStr + channelGroupStr, + queryParamString ); string received = uri.OriginalString; EditorCommon.LogAndCompare (expected, received); @@ -454,7 +473,25 @@ public void TestBuildGlobalHereNowRequestShowUUIDInclStateSSLNoAuth () TestBuildGlobalHereNowRequestCommon (true, true, true, ""); } + [Test] + public void TestBuildGlobalHereNowRequestShowUUIDInclStateSSLNoAuthQP () + { + TestBuildGlobalHereNowRequestCommon (true, true, true, "", true); + } + public void TestBuildGlobalHereNowRequestCommon(bool ssl, bool showUUIDList, bool includeUserState, string authKey){ + TestBuildGlobalHereNowRequestCommon(ssl, showUUIDList, includeUserState, authKey, false); + } + + public void TestBuildGlobalHereNowRequestCommon(bool ssl, bool showUUIDList, bool includeUserState, string authKey, bool sendQueryParams){ + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } string uuid = "customuuid"; PNConfiguration pnConfiguration = new PNConfiguration (); @@ -480,13 +517,14 @@ public void TestBuildGlobalHereNowRequestCommon(bool ssl, bool showUUIDList, boo int userState = (includeUserState) ? 1 : 0; string parameters = string.Format ("disable_uuids={0}&state={1}", disableUUID, userState); - Uri uri = BuildRequests.BuildHereNowRequest ("", "", showUUIDList, includeUserState, pnUnity, null); + Uri uri = BuildRequests.BuildHereNowRequest ("", "", showUUIDList, includeUserState, pnUnity, queryParams); //http://ps.pndsn.com/v2/presence/sub_key/demo?disable_uuids=1&state=0&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityOSX/3.6.9.0 - string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}?{3}&uuid={4}{5}&pnsdk={6}", + string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}?{3}&uuid={4}{5}&pnsdk={6}{7}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, parameters, uuid, authKeyString, - Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNHereNowOperation, false, true) + Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNHereNowOperation, false, true), + queryParamString ); string received = uri.OriginalString; EditorCommon.LogAndCompare (expected, received); diff --git a/PubNubUnity/Assets/PubNub/Editor/HistoryBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/HistoryBuildRequestsTests.cs index 0c937577..093a9b8f 100644 --- a/PubNubUnity/Assets/PubNub/Editor/HistoryBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/HistoryBuildRequestsTests.cs @@ -2,6 +2,7 @@ using PubNubAPI; using NUnit.Framework; using System.Text; +using System.Collections.Generic; namespace PubNubAPI.Tests { @@ -1017,10 +1018,32 @@ public void TestBuildDetailedHistoryRequestIncludeTTReverseSSLStartEndNoAuthNoCo TestBuildDetailedHistoryRequestCommon (true, true, true, "", startTime, endTime, -1); } + [Test] + public void TestBuildDetailedHistoryRequestIncludeTTReverseSSLStartEndNoAuthNoCountQP () + { + long startTime = -1; + long endTime = -1; + + TestBuildDetailedHistoryRequestCommon (true, true, true, "", startTime, endTime, -1, true); + } + public void TestBuildDetailedHistoryRequestCommon(bool ssl, bool reverse, bool includeTimetoken, string authKey, long startTime, long endTime, int count){ + TestBuildDetailedHistoryRequestCommon(ssl, reverse, includeTimetoken, authKey, startTime, endTime, count, false); + } + + public void TestBuildDetailedHistoryRequestCommon(bool ssl, bool reverse, bool includeTimetoken, + string authKey, long startTime, long endTime, int count, bool sendQueryParams){ string channel = "history_channel"; string uuid = "customuuid"; + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } PNConfiguration pnConfiguration = new PNConfiguration (); pnConfiguration.Origin = EditorCommon.Origin; @@ -1055,7 +1078,7 @@ public void TestBuildDetailedHistoryRequestCommon(bool ssl, bool reverse, bool i } Uri uri = BuildRequests.BuildHistoryRequest (channel, startTime, endTime, (uint)count, reverse, - includeTimetoken, pnUnity, null + includeTimetoken, pnUnity, queryParams ); if (count == -1) { @@ -1064,11 +1087,12 @@ public void TestBuildDetailedHistoryRequestCommon(bool ssl, bool reverse, bool i //Received:http://ps.pndsn.com/v2/history/sub-key/demo/channel/history_channel?count=90&reverse=true&start=14498416434364941&end=14498416799269095&auth=authKey&uuid=customuuid&pnsdk=PubNub-CSharp-UnityOSX/3.6.9.0 //Received:https://ps.pndsn.com/v2/history/sub-key/demo/channel/history_channel?count=90&include_token=true&start=14498416434364941&end=14498416799269095&auth=authKey&uuid=customuuid&pnsdk=PubNub-CSharp-UnityOSX/3.6.9.0 //http://ps.pndsn.com/v2/history/sub-key/demo/channel/publish_channel?count=90&start=14498416434364941&end=14498416799269095&auth=authKey&uuid=customuuid&pnsdk=PubNub-CSharp-UnityOSX/3.6.9.0 - string expected = string.Format ("http{0}://{1}/v2/history/sub-key/{2}/channel/{3}?count={4}{5}{6}{7}{8}{9}&uuid={10}&pnsdk={11}", + string expected = string.Format ("http{0}://{1}/v2/history/sub-key/{2}/channel/{3}?count={4}{5}{6}{7}{8}{9}&uuid={10}&pnsdk={11}{12}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, channel, count, includeTimetoken?"&include_token=true":"", reverse?"&reverse=true":"", startTimeString, endTimeString, authKeyString, uuid, - Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNHistoryOperation, false, true) + Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNHistoryOperation, false, true), + queryParamString ); string received = uri.OriginalString; EditorCommon.LogAndCompare (expected, received); diff --git a/PubNubUnity/Assets/PubNub/Editor/LeaveBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/LeaveBuildRequestsTests.cs index 8fd6c5e8..4aadeded 100644 --- a/PubNubUnity/Assets/PubNub/Editor/LeaveBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/LeaveBuildRequestsTests.cs @@ -2,6 +2,7 @@ using PubNubAPI; using NUnit.Framework; using System.Text; +using System.Collections.Generic; namespace PubNubAPI.Tests { @@ -187,13 +188,30 @@ public void TestBuildLeaveRequestCGOnly () TestBuildLeaveRequestCommon (null, channelGroups, false, ""); } + [Test] + public void TestBuildLeaveRequestCGOnlyQP () + { + string[] channelGroups = { "test" }; + TestBuildLeaveRequestCommon (null, channelGroups, false, "", true); + } + public void TestBuildLeaveRequestCommon(string[] channels, bool ssl, string authKey){ TestBuildLeaveRequestCommon(channels, null, ssl, authKey); } - public void TestBuildLeaveRequestCommon(string[] channels, string[] channelGroups, bool ssl, string authKey) { - + TestBuildLeaveRequestCommon(channels, channelGroups, ssl, authKey, false); + } + public void TestBuildLeaveRequestCommon(string[] channels, string[] channelGroups, bool ssl, string authKey, bool sendQueryParams) + { + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } string uuid = "customuuid"; PNConfiguration pnConfiguration = new PNConfiguration (); pnConfiguration.Origin = EditorCommon.Origin; @@ -229,13 +247,14 @@ public void TestBuildLeaveRequestCommon(string[] channels, string[] channelGroup chStr = ch; } - Uri uri = BuildRequests.BuildLeaveRequest (ch, cg, pnUnity, null); + Uri uri = BuildRequests.BuildLeaveRequest (ch, cg, pnUnity, queryParams); //https://ps.pndsn.com/v2/presence/sub_key/demo-36/channel/test/leave?uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 - string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}/channel/{3}/leave?uuid={4}{7}{5}&pnsdk={6}", + string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}/channel/{3}/leave?uuid={4}{7}{5}&pnsdk={6}{8}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, chStr, uuid, authKeyString, Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNLeaveOperation, false, true), - cgStr + cgStr, + queryParamString ); string received = uri.OriginalString; EditorCommon.LogAndCompare (expected, received); diff --git a/PubNubUnity/Assets/PubNub/Editor/PublishBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/PublishBuildRequestsTests.cs index 096573c8..66954e27 100644 --- a/PubNubUnity/Assets/PubNub/Editor/PublishBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/PublishBuildRequestsTests.cs @@ -2,6 +2,7 @@ using PubNubAPI; using NUnit.Framework; using System.Text; +using System.Collections.Generic; namespace PubNubAPI.Tests { @@ -446,16 +447,43 @@ public void TestFire () TestBuildPublishRequestCommonWithTTL (true, false, false, "Secret", "enigma", "", 10, false); } + [Test] + public void TestBuildPublishRequestCipherSecretMetaStoreFalseTTLQP () + { + TestBuildPublishRequestCommonWithTTL (true, false, false, "Secret", "enigma", "", 10, true, true); + } + [Test] + public void TestFireQP () + { + TestBuildPublishRequestCommonWithTTL (true, false, false, "Secret", "enigma", "", 10, false, true); + } + + [Test] + public void TestBuildPublishRequestSSLAuthMetaQP () + { + TestBuildPublishRequestCommonWithTTL (true, true, true, "", "", "authKey", 10, false, true); + } + + public void TestBuildPublishRequestCommon(bool ssl, bool storeInHistory, string secretKey, string cipherKey, string authKey){ TestBuildPublishRequestCommon(false, ssl, storeInHistory, secretKey, cipherKey, authKey); } - public void TestBuildPublishRequestCommonWithTTL(bool sendMeta, bool ssl, bool storeInHistory, string secretKey, string cipherKey, string authKey, int ttl, bool replicate){ + public void TestBuildPublishRequestCommonWithTTL(bool sendMeta, bool ssl, bool storeInHistory, string secretKey, string cipherKey, string authKey, int ttl, bool replicate, bool sendQueryParams){ string channel = "publish_channel"; string message = "Test message"; string uuid = "customuuid"; string signature = "0"; + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } + PNConfiguration pnConfiguration = new PNConfiguration (); pnConfiguration.Origin = EditorCommon.Origin; pnConfiguration.SubscribeKey = EditorCommon.SubscribeKey; @@ -505,19 +533,20 @@ public void TestBuildPublishRequestCommonWithTTL(bool sendMeta, bool ssl, bool s } - Uri uri = BuildRequests.BuildPublishRequest (channel, originalMessage, storeInHistory, metadata, 0, ttl, false, replicate, pnUnity, null); + Uri uri = BuildRequests.BuildPublishRequest (channel, originalMessage, storeInHistory, metadata, 0, ttl, false, replicate, pnUnity, queryParams); string ttlStr = (ttl == -1) ? "" : string.Format("&ttl={0}", ttl.ToString()); //http://ps.pndsn.com/publish/demo-36/demo-36/0/publish_channel/0?uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityOSX/3.6.9.0 - string expected = string.Format ("http{0}://{1}/publish/{2}/{3}/{4}/{5}/0/{6}?uuid={7}&seqn=0{8}{12}{13}{11}{9}&pnsdk={10}", + string expected = string.Format ("http{0}://{1}/publish/{2}/{3}/{4}/{5}/0/{6}?uuid={7}&seqn=0{8}{12}{13}{11}{9}&pnsdk={10}{14}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.PublishKey, EditorCommon.SubscribeKey, signature, channel, Utility.EncodeUricomponent(originalMessage, PNOperationType.PNPublishOperation, false, false), uuid, storeInHistory?"":"&store=0", authKeyString, Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNPublishOperation, false, false), meta, ttlStr, - replicate?"":"&norep=true" + replicate?"":"&norep=true", + queryParamString ); string received = uri.OriginalString; @@ -528,6 +557,10 @@ public void TestBuildPublishRequestCommon(bool sendMeta, bool ssl, bool storeInH TestBuildPublishRequestCommonWithTTL(false, ssl, storeInHistory, secretKey, cipherKey, authKey, -1, true); } + public void TestBuildPublishRequestCommonWithTTL(bool sendMeta, bool ssl, bool storeInHistory, string secretKey, string cipherKey, string authKey, int ttl, bool replicate){ + TestBuildPublishRequestCommonWithTTL(sendMeta, ssl, storeInHistory, secretKey, cipherKey, authKey, ttl, replicate, false); + } + #endif } } diff --git a/PubNubUnity/Assets/PubNub/Editor/PushBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/PushBuildRequestsTests.cs index b58f458d..8eb6142a 100644 --- a/PubNubUnity/Assets/PubNub/Editor/PushBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/PushBuildRequestsTests.cs @@ -2,6 +2,7 @@ using PubNubAPI; using NUnit.Framework; using System.Text; +using System.Collections.Generic; namespace PubNubAPI.Tests { @@ -81,9 +82,28 @@ public void TestBuildRegisterDevicePushRequestSSLGCMAuth () TestBuildRegisterDevicePushRequestCommon (false, "authKey", "pushToken", PNPushType.GCM); } + [Test] + public void TestBuildRegisterDevicePushRequestSSLGCMAuthQP () + { + TestBuildRegisterDevicePushRequestCommon (false, "authKey", "pushToken", PNPushType.GCM, true); + } + public void TestBuildRegisterDevicePushRequestCommon(bool ssl, string authKey, string pushToken, PNPushType pushType){ + TestBuildRegisterDevicePushRequestCommon(ssl, authKey, pushToken, pushType, false); + } + + public void TestBuildRegisterDevicePushRequestCommon(bool ssl, string authKey, string pushToken, PNPushType pushType, bool sendQueryParams){ string channel = "push_channel"; string uuid = "customuuid"; + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } + PNConfiguration pnConfiguration = new PNConfiguration (); pnConfiguration.Origin = EditorCommon.Origin; @@ -104,15 +124,16 @@ public void TestBuildRegisterDevicePushRequestCommon(bool ssl, string authKey, s authKeyString = string.Format ("&auth={0}", pnConfiguration.AuthKey); } - Uri uri = BuildRequests.BuildRegisterDevicePushRequest (channel, pushType, pushToken, pnUnity, null); + Uri uri = BuildRequests.BuildRegisterDevicePushRequest (channel, pushType, pushToken, pnUnity, queryParams); //[1, "Modified Channels"] //https://ps.pndsn.com/v1/push/sub-key/demo-36/devices/pushToken?add=push_channel&type=apns&uuid=customuuid&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 - string expected = string.Format ("http{0}://{1}/v1/push/sub-key/{2}/devices/{3}?add={4}&type={5}&uuid={6}{7}&pnsdk={8}", + string expected = string.Format ("http{0}://{1}/v1/push/sub-key/{2}/devices/{3}?add={4}&type={5}&uuid={6}{7}&pnsdk={8}{9}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, pushToken, Utility.EncodeUricomponent(channel, PNOperationType.PNAddPushNotificationsOnChannelsOperation, true, false), pushType.ToString().ToLower(), uuid, authKeyString, - Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNAddPushNotificationsOnChannelsOperation, false, true) + Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNAddPushNotificationsOnChannelsOperation, false, true), + queryParamString ); string received = uri.OriginalString; UnityEngine.Debug.Log("exp:"+expected); @@ -192,9 +213,28 @@ public void TestBuildRemoveChannelPushRequestSSLGCMAuth () TestBuildRemoveChannelPushRequestCommon (false, "authKey", "pushToken", PNPushType.GCM); } + [Test] + public void TestBuildRemoveChannelPushRequestSSLGCMAuthQP () + { + TestBuildRemoveChannelPushRequestCommon (false, "authKey", "pushToken", PNPushType.GCM, true); + } + public void TestBuildRemoveChannelPushRequestCommon(bool ssl, string authKey, string pushToken, PNPushType pushType){ + TestBuildRemoveChannelPushRequestCommon(ssl, authKey, pushToken, pushType, false); + } + + public void TestBuildRemoveChannelPushRequestCommon(bool ssl, string authKey, string pushToken, PNPushType pushType, bool sendQueryParams){ string channel = "push_channel"; string uuid = "customuuid"; + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } + PNConfiguration pnConfiguration = new PNConfiguration (); pnConfiguration.Origin = EditorCommon.Origin; @@ -215,14 +255,15 @@ public void TestBuildRemoveChannelPushRequestCommon(bool ssl, string authKey, st authKeyString = string.Format ("&auth={0}", pnConfiguration.AuthKey); } - Uri uri = BuildRequests.BuildRemoveChannelPushRequest (channel, pushType, pushToken, pnUnity, null); + Uri uri = BuildRequests.BuildRemoveChannelPushRequest (channel, pushType, pushToken, pnUnity, queryParams); //[1, "Modified Channels"] //http://ps.pndsn.com/v1/push/sub-key/demo-36/devices/pushToken?remove=push_channel&type=mpns&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 - string expected = string.Format ("http{0}://{1}/v1/push/sub-key/{2}/devices/{3}?remove={4}&type={5}&uuid={6}{7}&pnsdk={8}", + string expected = string.Format ("http{0}://{1}/v1/push/sub-key/{2}/devices/{3}?remove={4}&type={5}&uuid={6}{7}&pnsdk={8}{9}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, pushToken, Utility.EncodeUricomponent(channel, PNOperationType.PNRemovePushNotificationsFromChannelsOperation, true, false), pushType.ToString().ToLower(), uuid, authKeyString, - Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNRemovePushNotificationsFromChannelsOperation, false, true) + Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNRemovePushNotificationsFromChannelsOperation, false, true), + queryParamString ); string received = uri.OriginalString; UnityEngine.Debug.Log("exp:"+expected); @@ -302,9 +343,26 @@ public void TestBuildGetChannelsPushRequestSSLGCMAuth () TestBuildGetChannelsPushRequestCommon (false, "authKey", "pushToken", PNPushType.GCM); } + [Test] + public void TestBuildGetChannelsPushRequestSSLGCMAuthQP () + { + TestBuildGetChannelsPushRequestCommon (false, "authKey", "pushToken", PNPushType.GCM, true); + } + public void TestBuildGetChannelsPushRequestCommon(bool ssl, string authKey, string pushToken, PNPushType pushType){ - string uuid = "customuuid"; + TestBuildGetChannelsPushRequestCommon(ssl, authKey, pushToken, pushType, false); + } + public void TestBuildGetChannelsPushRequestCommon(bool ssl, string authKey, string pushToken, PNPushType pushType, bool sendQueryParams){ + string uuid = "customuuid"; + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } PNConfiguration pnConfiguration = new PNConfiguration (); pnConfiguration.Origin = EditorCommon.Origin; pnConfiguration.SubscribeKey = EditorCommon.SubscribeKey; @@ -324,17 +382,18 @@ public void TestBuildGetChannelsPushRequestCommon(bool ssl, string authKey, stri authKeyString = string.Format ("&auth={0}", pnConfiguration.AuthKey); } - Uri uri = BuildRequests.BuildGetChannelsPushRequest (pushType, pushToken, pnUnity, null); + Uri uri = BuildRequests.BuildGetChannelsPushRequest (pushType, pushToken, pnUnity, queryParams); //[1, "Modified Channels"] //["push_channel"] //https://ps.pndsn.com/v1/push/sub-key/demo-36/devices/pushToken?type=wns&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 //https://ps.pndsn.com/v1/push/sub-key/demo-36/devices/pushToken?type=mpns&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 - string expected = string.Format ("http{0}://{1}/v1/push/sub-key/{2}/devices/{3}?type={4}&uuid={5}{6}&pnsdk={7}", + string expected = string.Format ("http{0}://{1}/v1/push/sub-key/{2}/devices/{3}?type={4}&uuid={5}{6}&pnsdk={7}{8}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, pushToken, pushType.ToString().ToLower(), uuid, authKeyString, - Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNPushNotificationEnabledChannelsOperation, false, true) + Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNPushNotificationEnabledChannelsOperation, false, true), + queryParamString ); string received = uri.OriginalString; UnityEngine.Debug.Log("exp:"+expected); @@ -414,8 +473,26 @@ public void BuildUnregisterDevicePushRequestSSLGCMAuth () BuildUnregisterDevicePushRequestCommon (false, "authKey", "pushToken", PNPushType.GCM); } + [Test] + public void BuildUnregisterDevicePushRequestSSLGCMAuthQP () + { + BuildUnregisterDevicePushRequestCommon (false, "authKey", "pushToken", PNPushType.GCM, true); + } + public void BuildUnregisterDevicePushRequestCommon(bool ssl, string authKey, string pushToken, PNPushType pushType){ + BuildUnregisterDevicePushRequestCommon(ssl, authKey, pushToken, pushType, false); + } + + public void BuildUnregisterDevicePushRequestCommon(bool ssl, string authKey, string pushToken, PNPushType pushType, bool sendQueryParams){ string uuid = "customuuid"; + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } PNConfiguration pnConfiguration = new PNConfiguration (); pnConfiguration.Origin = EditorCommon.Origin; @@ -436,14 +513,15 @@ public void BuildUnregisterDevicePushRequestCommon(bool ssl, string authKey, str authKeyString = string.Format ("&auth={0}", pnConfiguration.AuthKey); } - Uri uri = BuildRequests.BuildUnregisterDevicePushRequest (pushType, pushToken, pnUnity, null); + Uri uri = BuildRequests.BuildUnregisterDevicePushRequest (pushType, pushToken, pnUnity, queryParams); //[1, "Removed Device"] //https://ps.pndsn.com/v1/push/sub-key/demo-36/devices/pushToken/remove?type=wns&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 - string expected = string.Format ("http{0}://{1}/v1/push/sub-key/{2}/devices/{3}/remove?type={4}&uuid={5}{6}&pnsdk={7}", + string expected = string.Format ("http{0}://{1}/v1/push/sub-key/{2}/devices/{3}/remove?type={4}&uuid={5}{6}&pnsdk={7}{8}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, pushToken, pushType.ToString().ToLower(), uuid, authKeyString, - Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNRemoveAllPushNotificationsOperation, false, true) + Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNRemoveAllPushNotificationsOperation, false, true), + queryParamString ); string received = uri.OriginalString; UnityEngine.Debug.Log("exp:"+expected); diff --git a/PubNubUnity/Assets/PubNub/Editor/StateBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/StateBuildRequestsTests.cs index 5f7e2c21..c9884b6a 100644 --- a/PubNubUnity/Assets/PubNub/Editor/StateBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/StateBuildRequestsTests.cs @@ -2,6 +2,7 @@ using PubNubAPI; using NUnit.Framework; using System.Text; +using System.Collections.Generic; namespace PubNubAPI.Tests { @@ -81,11 +82,29 @@ public void TestBuildSetUserStateRequestAuthSSLCG () TestBuildSetUserStateRequestCommon ( true, false, true, "authKey"); } + [Test] + public void TestBuildSetUserStateRequestAuthSSLCGQP () + { + TestBuildSetUserStateRequestCommon ( true, false, true, "authKey", true); + } + public void TestBuildSetUserStateRequestCommon(bool ssl, string authKey){ TestBuildSetUserStateRequestCommon(false, false, ssl, authKey); } public void TestBuildSetUserStateRequestCommon(bool testCg, bool testCh, bool ssl, string authKey){ + TestBuildSetUserStateRequestCommon(testCg, testCh, ssl, authKey, false); + } + + public void TestBuildSetUserStateRequestCommon(bool testCg, bool testCh, bool ssl, string authKey, bool sendQueryParams){ + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } string channel = "user_state_channel"; string userState = "{\"k\":\"v\"}"; string uuid = "customuuid"; @@ -119,16 +138,17 @@ public void TestBuildSetUserStateRequestCommon(bool testCg, bool testCh, bool ss authKeyString = string.Format ("&auth={0}", pnConfiguration.AuthKey); } - Uri uri = BuildRequests.BuildSetStateRequest (channel, channelGroup, userState, uuid, pnUnity, null); + Uri uri = BuildRequests.BuildSetStateRequest (channel, channelGroup, userState, uuid, pnUnity, queryParams); //https://ps.pndsn.com/v2/presence/sub_key/demo-36/channel/user_state_channel/uuid/customuuid/data?state={"k":"v"}&uuid=customuuid&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 //https://ps.pndsn.com/v2/presence/sub_key/demo-36/channel/user_state_channel/uuid/customuuid/data?state={"k":"v"}&uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 - string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}/channel/{3}/uuid/{4}/data?state={5}{9}&uuid={6}{7}&pnsdk={8}", + string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}/channel/{3}/uuid/{4}/data?state={5}{9}&uuid={6}{7}&pnsdk={8}{10}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, channel, uuid, Utility.EncodeUricomponent(userState, PNOperationType.PNSetStateOperation, false, false), uuid, authKeyString, Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNSetStateOperation, false, false), - channelGroupStr + channelGroupStr, + queryParamString ); string received = uri.OriginalString; EditorCommon.LogAndCompare (expected, received); @@ -206,11 +226,29 @@ public void TestBuildGetUserStateRequestSSLCG() TestBuildGetUserStateRequestCommon (true, false, true, ""); } + [Test] + public void TestBuildGetUserStateRequestSSLCGQP() + { + TestBuildGetUserStateRequestCommon (true, false, true, "", true); + } + public void TestBuildGetUserStateRequestCommon(bool ssl, string authKey){ TestBuildGetUserStateRequestCommon(false, false, ssl, authKey); } public void TestBuildGetUserStateRequestCommon(bool testCg, bool testCh, bool ssl, string authKey){ + TestBuildGetUserStateRequestCommon(testCg, testCh, ssl, authKey, false); + } + + public void TestBuildGetUserStateRequestCommon(bool testCg, bool testCh, bool ssl, string authKey, bool sendQueryParams){ + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } string channel = "user_state_channel"; string userState = "{\"k\":\"v\"}"; string uuid = "customuuid"; @@ -244,15 +282,16 @@ public void TestBuildGetUserStateRequestCommon(bool testCg, bool testCh, bool ss authKeyString = string.Format ("&auth={0}", pnConfiguration.AuthKey); } - Uri uri = BuildRequests.BuildGetStateRequest (channel, channelGroup, uuid, pnUnity, null); + Uri uri = BuildRequests.BuildGetStateRequest (channel, channelGroup, uuid, pnUnity, queryParams); //https://ps.pndsn.com/v2/presence/sub_key/demo-36/channel/user_state_channel/uuid/customuuid?uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 - string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}/channel/{3}/uuid/{4}?uuid={6}{9}{7}&pnsdk={8}", + string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}/channel/{3}/uuid/{4}?uuid={6}{9}{7}&pnsdk={8}{10}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, channel, uuid, Utility.EncodeUricomponent(userState, PNOperationType.PNGetStateOperation, false, false), uuid, authKeyString, Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNGetStateOperation, false, false), - channelGroupStr + channelGroupStr, + queryParamString ); string received = uri.OriginalString; EditorCommon.LogAndCompare (expected, received); diff --git a/PubNubUnity/Assets/PubNub/Editor/TimeBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/TimeBuildRequestsTests.cs index 4e7e2837..16c8d238 100644 --- a/PubNubUnity/Assets/PubNub/Editor/TimeBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/TimeBuildRequestsTests.cs @@ -2,6 +2,7 @@ using PubNubAPI; using NUnit.Framework; using System.Text; +using System.Collections.Generic; namespace PubNubAPI.Tests { @@ -21,8 +22,26 @@ public void TestBuildTimeRequestSSL () TestBuildTimeRequestCommon (true); } + [Test] + public void TestBuildTimeRequestSSLQP () + { + TestBuildTimeRequestCommon (true, true); + } + public void TestBuildTimeRequestCommon(bool ssl){ + TestBuildTimeRequestCommon(ssl, false); + } + + public void TestBuildTimeRequestCommon(bool ssl, bool sendQueryParams){ string uuid = "customuuid"; + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } PNConfiguration pnConfiguration = new PNConfiguration (); pnConfiguration.Origin = EditorCommon.Origin; pnConfiguration.SubscribeKey = EditorCommon.SubscribeKey; @@ -36,12 +55,13 @@ public void TestBuildTimeRequestCommon(bool ssl){ PubNubUnity pnUnity = new PubNubUnity(pnConfiguration, null, null); - Uri uri = BuildRequests.BuildTimeRequest (pnUnity, null); + Uri uri = BuildRequests.BuildTimeRequest (pnUnity, queryParams); //https://ps.pndsn.com/time/0?uuid=customuuid&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 - string expected = string.Format ("http{0}://{1}/time/0?uuid={2}&pnsdk={3}", + string expected = string.Format ("http{0}://{1}/time/0?uuid={2}&pnsdk={3}{4}", ssl?"s":"", pnConfiguration.Origin, uuid, - Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNTimeOperation, false, false) + Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNTimeOperation, false, false), + queryParamString ); string received = uri.OriginalString; EditorCommon.LogAndCompare (expected, received); diff --git a/PubNubUnity/Assets/PubNub/Editor/WhereNowBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/WhereNowBuildRequestsTests.cs index 176bfa5d..03935d87 100644 --- a/PubNubUnity/Assets/PubNub/Editor/WhereNowBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/WhereNowBuildRequestsTests.cs @@ -2,6 +2,7 @@ using PubNubAPI; using NUnit.Framework; using System.Text; +using System.Collections.Generic; namespace PubNubAPI.Tests { @@ -57,9 +58,26 @@ public void TestBuildWhereNowRequestSSLNoAuthSessionUUID () TestBuildWhereNowRequestCommon (true, "", "sessionUUID"); } + [Test] + public void TestBuildWhereNowRequestSSLNoAuthSessionUUIDQP () + { + TestBuildWhereNowRequestCommon (true, "", "sessionUUID", true); + } + public void TestBuildWhereNowRequestCommon(bool ssl, string authKey, string uuid){ - string sessionUUID = "customuuid"; + TestBuildWhereNowRequestCommon(ssl, authKey, uuid, false); + } + public void TestBuildWhereNowRequestCommon(bool ssl, string authKey, string uuid, bool sendQueryParams){ + string sessionUUID = "customuuid"; + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } PNConfiguration pnConfiguration = new PNConfiguration (); pnConfiguration.Origin = EditorCommon.Origin; pnConfiguration.SubscribeKey = EditorCommon.SubscribeKey; @@ -79,13 +97,14 @@ public void TestBuildWhereNowRequestCommon(bool ssl, string authKey, string uuid authKeyString = string.Format ("&auth={0}", pnConfiguration.AuthKey); } - Uri uri = BuildRequests.BuildWhereNowRequest (uuid, pnUnity, null); + Uri uri = BuildRequests.BuildWhereNowRequest (uuid, pnUnity, queryParams); //http://ps.pndsn.com/v2/presence/sub_key/demo-36/uuid/customuuid?uuid=&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 - string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}/uuid/{3}?uuid={4}{5}&pnsdk={6}", + string expected = string.Format ("http{0}://{1}/v2/presence/sub_key/{2}/uuid/{3}?uuid={4}{5}&pnsdk={6}{7}", ssl?"s":"", pnConfiguration.Origin, EditorCommon.SubscribeKey, uuid, sessionUUID, authKeyString, - Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNWhereNowOperation, false, false) + Utility.EncodeUricomponent(pnUnity.Version, PNOperationType.PNWhereNowOperation, false, false), + queryParamString ); string received = uri.OriginalString; EditorCommon.LogAndCompare (expected, received); From edbcebe6dbe1b4d98aed2d3c92c1de6ea2f1bf90 Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Tue, 8 Jan 2019 19:46:22 +0530 Subject: [PATCH 12/18] Codacy suggestions --- .../PubNub/Builders/Presence/PresenceRequestBuilder.cs | 10 +++++----- .../Assets/PubNub/Workers/PresenceHeartbeatWorker.cs | 1 - .../Assets/PubNub/Workers/SubscriptionWorker.cs | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs index 4037eed9..ac564edc 100644 --- a/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs @@ -8,7 +8,7 @@ namespace PubNubAPI public class PresenceHeartbeatRequestBuilder: PubNubNonSubBuilder, IPubNubNonSubscribeBuilder { private bool connected { get; set;} - List ChannelEntities; + List channelEntities; private Dictionary UserState { get; set;} public PresenceHeartbeatRequestBuilder(PubNubUnity pn): base(pn, PNOperationType.PNPresenceHeartbeatOperation){ } @@ -34,14 +34,14 @@ public void Async(Action callback) this.Callback = callback; RequestState requestState = new RequestState (); requestState.OperationType = OperationType; - ChannelEntities = new List(); + channelEntities = new List(); string channels = ""; if((ChannelsToUse != null) && (ChannelsToUse.Count>0)){ ChannelsToUse.RemoveAll(t => t.Contains(Utility.PresenceChannelSuffix)); string[] chArr = ChannelsToUse.Where(x => !string.IsNullOrEmpty(x)).Distinct().ToArray(); channels = String.Join(",", chArr); - ChannelEntities.AddRange(Helpers.CreateChannelEntity(chArr, false, false, null, PubNubInstance.PNLog)); + channelEntities.AddRange(Helpers.CreateChannelEntity(chArr, false, false, null, PubNubInstance.PNLog)); } string channelGroups = ""; @@ -49,7 +49,7 @@ public void Async(Action callback) ChannelGroupsToUse.RemoveAll(t => t.Contains(Utility.PresenceChannelSuffix)); string[] cgArr = ChannelGroupsToUse.Where(x => !string.IsNullOrEmpty(x)).Distinct().ToArray(); channelGroups = String.Join(",", cgArr); - ChannelEntities.AddRange(Helpers.CreateChannelEntity(cgArr, false, true, null, PubNubInstance.PNLog)); + channelEntities.AddRange(Helpers.CreateChannelEntity(cgArr, false, true, null, PubNubInstance.PNLog)); } if(connected){ @@ -57,7 +57,7 @@ public void Async(Action callback) PubNubInstance.SubWorker.PHBWorker.ChannelGroups = channelGroups; PubNubInstance.SubWorker.PHBWorker.Channels = channels; if(UserState!=null){ - PubNubInstance.SubWorker.PHBWorker.State = Helpers.BuildJsonUserState(ChannelEntities); + PubNubInstance.SubWorker.PHBWorker.State = Helpers.BuildJsonUserState(channelEntities); } else { PubNubInstance.SubWorker.PHBWorker.State = ""; } diff --git a/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs b/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs index db99ff27..79fbcd33 100644 --- a/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs +++ b/PubNubUnity/Assets/PubNub/Workers/PresenceHeartbeatWorker.cs @@ -176,7 +176,6 @@ internal void RunPresenceHeartbeat (bool pause, int pauseTime) StopPresenceHeartbeat(); pause = true; - pauseTime = pauseTime; } } diff --git a/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs b/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs index 43dac4f4..a08e3801 100644 --- a/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs +++ b/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs @@ -26,7 +26,7 @@ public class SubscriptionWorker private bool internetStatus = true; readonly bool enableResumeOnReconnect; - public int RequestSentAt; + public int RequestSentAt {get;set;} //Allow one instance only From 0b000225fad48540d61cb3e21c71d0453a165106 Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Tue, 8 Jan 2019 20:00:27 +0530 Subject: [PATCH 13/18] Codacy suggestions --- .../PubNub/Builders/Presence/PresenceRequestBuilder.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs index ac564edc..6edfbe87 100644 --- a/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/Presence/PresenceRequestBuilder.cs @@ -7,8 +7,7 @@ namespace PubNubAPI { public class PresenceHeartbeatRequestBuilder: PubNubNonSubBuilder, IPubNubNonSubscribeBuilder { - private bool connected { get; set;} - List channelEntities; + private bool connected { get; set;} private Dictionary UserState { get; set;} public PresenceHeartbeatRequestBuilder(PubNubUnity pn): base(pn, PNOperationType.PNPresenceHeartbeatOperation){ } @@ -34,7 +33,7 @@ public void Async(Action callback) this.Callback = callback; RequestState requestState = new RequestState (); requestState.OperationType = OperationType; - channelEntities = new List(); + List channelEntities = new List(); string channels = ""; if((ChannelsToUse != null) && (ChannelsToUse.Count>0)){ From dbc9041c7985a51b0e28fc32321a42ede63f7615 Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Wed, 9 Jan 2019 15:58:18 +0530 Subject: [PATCH 14/18] QueryParam in subscribe request --- .../PubSub/SubscribeRequestBuilder.cs | 7 ++++ .../Editor/SubscribeBuildRequestsTests.cs | 34 +++++++++++++++++-- .../EndPoints/PubSub/SubscribeBuilder.cs | 6 ++++ PubNubUnity/Assets/PubNub/Examples/Example.cs | 5 ++- .../PubNub/Models/Server/BuildRequests.cs | 4 +-- .../PubNub/Workers/SubscriptionWorker.cs | 5 +-- 6 files changed, 53 insertions(+), 8 deletions(-) diff --git a/PubNubUnity/Assets/PubNub/Builders/PubSub/SubscribeRequestBuilder.cs b/PubNubUnity/Assets/PubNub/Builders/PubSub/SubscribeRequestBuilder.cs index 54993ea2..2be0b091 100644 --- a/PubNubUnity/Assets/PubNub/Builders/PubSub/SubscribeRequestBuilder.cs +++ b/PubNubUnity/Assets/PubNub/Builders/PubSub/SubscribeRequestBuilder.cs @@ -10,6 +10,8 @@ public class SubscribeRequestBuilder public List ChannelsToUse { get; private set;} public List ChannelGroupsToUse { get; private set;} + internal Dictionary QueryParams { get; private set;} + protected PubNubUnity PubNubInstance { get; set;} public bool IncludePresenceChannel {get; set;} @@ -84,6 +86,7 @@ public void Execute(){ if (channelsOrChannelGroupsAdded){ this.PubNubInstance.SubscriptionInstance.Add (newChannelEntities); this.PubNubInstance.SubWorker.Add (timetokenToUse, subscribedChannels); + this.PubNubInstance.SubWorker.QueryParams = QueryParams; } else { #if (ENABLE_PUBNUB_LOGGING) @@ -121,6 +124,10 @@ public void SetTimeToken(long timetoken){ public void ChannelGroups(List channelGroupNames){ ChannelGroupsToUse = channelGroupNames; } + + public void QueryParam(Dictionary queryParam){ + QueryParams = queryParam; + } #endregion } } diff --git a/PubNubUnity/Assets/PubNub/Editor/SubscribeBuildRequestsTests.cs b/PubNubUnity/Assets/PubNub/Editor/SubscribeBuildRequestsTests.cs index 5762fad4..265be3b0 100644 --- a/PubNubUnity/Assets/PubNub/Editor/SubscribeBuildRequestsTests.cs +++ b/PubNubUnity/Assets/PubNub/Editor/SubscribeBuildRequestsTests.cs @@ -2,6 +2,7 @@ using PubNubAPI; using NUnit.Framework; using System.Text; +using System.Collections.Generic; namespace PubNubAPI.Tests { @@ -1085,6 +1086,18 @@ public void TestBuildSubscribeRequestSSLMultiChannelTTStateAuthCGOnlyPHB () userState, true, "authKey", "", "", 30); } + [Test] + public void TestBuildSubscribeRequestSSLMultiChannelTTStateAuthCGOnlyQP () + { + long timetoken = 14498416434364941; + string userState = "{\"k\":\"v\"}"; + string[] channels = { "test", "test2" }; + string[] channelGroups = { "CGOnly", "CGOnly2" }; + + TestBuildSubscribeRequestCommon (null, channelGroups, timetoken, + userState, true, "authKey", "", "", 0, true); + } + public void TestBuildSubscribeRequestCommon(string[] channels, object timetoken, string userState, bool ssl, string authKey){ TestBuildSubscribeRequestCommon(channels, null, timetoken, userState, ssl, authKey, "", "", 0); @@ -1093,7 +1106,21 @@ public void TestBuildSubscribeRequestCommon(string[] channels, object timetoken, public void TestBuildSubscribeRequestCommon(string[] channels, string[] channelGroups, object timetoken, string userState, bool ssl, string authKey, string filterExpr, string region, int presenceHeartbeat){ + TestBuildSubscribeRequestCommon(channels, channelGroups, timetoken, userState, ssl, authKey, filterExpr, region, presenceHeartbeat, false); + } + + public void TestBuildSubscribeRequestCommon(string[] channels, string[] channelGroups, + object timetoken, string userState, + bool ssl, string authKey, string filterExpr, string region, int presenceHeartbeat, bool sendQueryParams){ string uuid = "customuuid"; + Dictionary queryParams = new Dictionary(); + string queryParamString = ""; + if(sendQueryParams){ + queryParams.Add("d","f"); + queryParamString="&d=f"; + } else { + queryParams = null; + } PNConfiguration pnConfiguration = new PNConfiguration (); pnConfiguration.Origin = EditorCommon.Origin; @@ -1146,7 +1173,7 @@ public void TestBuildSubscribeRequestCommon(string[] channels, string[] channelG chStr = ch; } - Uri uri = BuildRequests.BuildSubscribeRequest (ch, cg, tt, userState, region, filterExpr, pnUnity); + Uri uri = BuildRequests.BuildSubscribeRequest (ch, cg, tt, userState, region, filterExpr, pnUnity, queryParams); string filterExpression = ""; if(!string.IsNullOrEmpty (filterExpr)){ @@ -1160,7 +1187,7 @@ public void TestBuildSubscribeRequestCommon(string[] channels, string[] channelG //http://ps.pndsn.com/v2/subscribe/demo-36/test/0?uuid=customuuid&tt=21221&state={"k":"v"}&auth=authKey&pnsdk=PubNub-CSharp-UnityIOS/3.6.9.0 //http://ps.pndsn.com/v2/subscribe/demo-36/test/0?uuid=customuuid&tt=0&filter-expr=(region%20%3D%3D%20%22east%22)&channel-group=cg&auth=authKey&pnsdk=PubNub-CSharp-UnityOSX/3.7 - string expected = string.Format ("http{0}://{1}/v2/subscribe/{2}/{3}/0?uuid={5}{4}{10}{11}{6}{7}{12}{8}{13}&pnsdk={9}", + string expected = string.Format ("http{0}://{1}/v2/subscribe/{2}/{3}/0?uuid={5}{4}{10}{11}{6}{7}{12}{8}{13}&pnsdk={9}{14}", ssl?"s":"", pnConfiguration.Origin, pnConfiguration.SubscribeKey, chStr, ttStr, @@ -1172,7 +1199,8 @@ public void TestBuildSubscribeRequestCommon(string[] channels, string[] channelG filterExpression, reg, cgStr, - phb + phb, + queryParamString ); string received = uri.OriginalString; EditorCommon.LogAndCompare (expected, received); diff --git a/PubNubUnity/Assets/PubNub/EndPoints/PubSub/SubscribeBuilder.cs b/PubNubUnity/Assets/PubNub/EndPoints/PubSub/SubscribeBuilder.cs index 3c1a0e0d..7ad734f5 100644 --- a/PubNubUnity/Assets/PubNub/EndPoints/PubSub/SubscribeBuilder.cs +++ b/PubNubUnity/Assets/PubNub/EndPoints/PubSub/SubscribeBuilder.cs @@ -37,6 +37,12 @@ public SubscribeBuilder ChannelGroups(List channelGroupNames){ pubBuilder.ChannelGroups(channelGroupNames); return this; } + + public SubscribeBuilder QueryParam(Dictionary queryParam){ + pubBuilder.QueryParam(queryParam); + return this; + } + #endregion } } diff --git a/PubNubUnity/Assets/PubNub/Examples/Example.cs b/PubNubUnity/Assets/PubNub/Examples/Example.cs index 23496af8..dd72a4fb 100644 --- a/PubNubUnity/Assets/PubNub/Examples/Example.cs +++ b/PubNubUnity/Assets/PubNub/Examples/Example.cs @@ -314,7 +314,10 @@ void ButtonRemovePushNotificationsFromChannelsHandler(){ } void SubscribeHandler(){ - pubnub.Subscribe ().Channels(new List (){ch1}).WithPresence().Execute(); + Dictionary dict = new Dictionary(); + dict.Add ("k1", "v1"); + + pubnub.Subscribe ().Channels(new List (){ch1}).WithPresence().QueryParam(dict).Execute(); } void AddComponents(){ diff --git a/PubNubUnity/Assets/PubNub/Models/Server/BuildRequests.cs b/PubNubUnity/Assets/PubNub/Models/Server/BuildRequests.cs index 12f9cff7..dd6ea92f 100644 --- a/PubNubUnity/Assets/PubNub/Models/Server/BuildRequests.cs +++ b/PubNubUnity/Assets/PubNub/Models/Server/BuildRequests.cs @@ -390,7 +390,7 @@ public static Uri BuildLeaveRequest (string channels, string channelGroups, PubN return BuildRestApiRequest (url, PNOperationType.PNLeaveOperation, unsubscribeParamBuilder.ToString(), pnInstance, queryParams); } - public static Uri BuildSubscribeRequest (string channels, string channelGroups, string timetoken, string channelsJsonState, string region, string filterExpr, PubNubUnity pnInstance){ + public static Uri BuildSubscribeRequest (string channels, string channelGroups, string timetoken, string channelsJsonState, string region, string filterExpr, PubNubUnity pnInstance, Dictionary queryParams){ StringBuilder subscribeParamBuilder = new StringBuilder (); subscribeParamBuilder.AppendFormat ("&tt={0}", timetoken); @@ -423,7 +423,7 @@ public static Uri BuildSubscribeRequest (string channels, string channelGroups, PNOperationType.PNSubscribeOperation, subscribeParamBuilder.ToString (), pnInstance, - null + queryParams ); } diff --git a/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs b/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs index a08e3801..ae897f0e 100644 --- a/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs +++ b/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs @@ -27,7 +27,7 @@ public class SubscriptionWorker readonly bool enableResumeOnReconnect; public int RequestSentAt {get;set;} - + public Dictionary QueryParams { get; set;} //Allow one instance only public SubscriptionWorker (PubNubUnity pn) @@ -353,7 +353,8 @@ private void RunSubscribeRequest (long timetoken, bool reconnect) channelsJsonState, region, filterExpr, - this.PubNubInstance + this.PubNubInstance, + this.QueryParams ); #if (ENABLE_PUBNUB_LOGGING) From fd9c424d2955f646a68a17410b3e53c55201c4d8 Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Wed, 9 Jan 2019 16:23:15 +0530 Subject: [PATCH 15/18] Codacy fixes --- PubNubUnity/Assets/PubNub/Examples/Example.cs | 3 +++ PubNubUnity/Assets/PubNub/WebRequest/PNUnityWebRequest.cs | 2 +- PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/PubNubUnity/Assets/PubNub/Examples/Example.cs b/PubNubUnity/Assets/PubNub/Examples/Example.cs index dd72a4fb..6253a715 100644 --- a/PubNubUnity/Assets/PubNub/Examples/Example.cs +++ b/PubNubUnity/Assets/PubNub/Examples/Example.cs @@ -316,6 +316,7 @@ void ButtonRemovePushNotificationsFromChannelsHandler(){ void SubscribeHandler(){ Dictionary dict = new Dictionary(); dict.Add ("k1", "v1"); + pubnub.SusbcribeCallback += SusbcribeCallbackHandler; pubnub.Subscribe ().Channels(new List (){ch1}).WithPresence().QueryParam(dict).Execute(); } @@ -529,6 +530,8 @@ void SusbcribeCallbackHandler(object sender, EventArgs e){ } if(mea.MessageResult != null){ Debug.Log ("In Example, SusbcribeCallback in message" + mea.MessageResult.Channel + mea.MessageResult.Payload); + //var a = mea.MessageResult.Payload as Dictionary; + //var b = a["a"]; Display(string.Format("SusbcribeCallback Result: {0}", pubnub.JsonLibrary.SerializeToJsonString(mea.MessageResult.Payload))); } if(mea.PresenceEventResult != null){ diff --git a/PubNubUnity/Assets/PubNub/WebRequest/PNUnityWebRequest.cs b/PubNubUnity/Assets/PubNub/WebRequest/PNUnityWebRequest.cs index 98afdd85..25c603fe 100644 --- a/PubNubUnity/Assets/PubNub/WebRequest/PNUnityWebRequest.cs +++ b/PubNubUnity/Assets/PubNub/WebRequest/PNUnityWebRequest.cs @@ -381,7 +381,7 @@ public void ProcessResponse (UnityWebRequestWrapper unityWebRequestWrapper, stri #if (ENABLE_PUBNUB_LOGGING) this.PNLog.WriteToLog (string.Format ("ProcessResponse: PubNubUserException: Exception={0}", ex.ToString ()), PNLoggingMethod.LevelError); #endif - throw ex; + throw; } catch (Exception ex) { #if (ENABLE_PUBNUB_LOGGING) this.PNLog.WriteToLog (string.Format ("ProcessResponse: RunWebRequestSub {0}, Exception: {1}", unityWebRequestWrapper.CurrentRequestType.ToString (), ex.ToString ()), PNLoggingMethod.LevelError); diff --git a/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs b/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs index ae897f0e..2514036b 100644 --- a/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs +++ b/PubNubUnity/Assets/PubNub/Workers/SubscriptionWorker.cs @@ -712,7 +712,7 @@ private void WebRequestCompleteHandler (object sender, EventArgs ea) #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog (string.Format ("WebRequestCompleteHandler: PubNubUserException: Exception={0}", ex.ToString ()), PNLoggingMethod.LevelError); #endif - throw ex; + throw; } catch (Exception ex) { #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog (string.Format ("WebRequestCompleteHandler: Exception={0}", ex.ToString ()), PNLoggingMethod.LevelError); From da0887a41c799bc247f897c28b84034ad05740b5 Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Wed, 9 Jan 2019 18:24:52 +0530 Subject: [PATCH 16/18] Remove logs --- PubNubUnity/Assets/PubNub/PlayModeTests/PlayModeCommon.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PubNubUnity/Assets/PubNub/PlayModeTests/PlayModeCommon.cs b/PubNubUnity/Assets/PubNub/PlayModeTests/PlayModeCommon.cs index 451fea22..9135f160 100644 --- a/PubNubUnity/Assets/PubNub/PlayModeTests/PlayModeCommon.cs +++ b/PubNubUnity/Assets/PubNub/PlayModeTests/PlayModeCommon.cs @@ -77,7 +77,7 @@ public static PNConfiguration SetPNConfig(bool useCipher){ if(useCipher){ pnConfiguration.CipherKey = "enigma"; } - pnConfiguration.LogVerbosity = PNLogVerbosity.BODY; + pnConfiguration.LogVerbosity = PNLogVerbosity.NONE; pnConfiguration.PresenceTimeout = 60; pnConfiguration.PresenceInterval= 30; pnConfiguration.Secure = SslOn; From ceeee686b641a8460c72ae9a007cd3bba8b5ea6d Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Wed, 9 Jan 2019 19:44:19 +0530 Subject: [PATCH 17/18] TestReconnect optimization --- PubNubUnity/Assets/PubNub/PlayModeTests/PlayModeTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PubNubUnity/Assets/PubNub/PlayModeTests/PlayModeTests.cs b/PubNubUnity/Assets/PubNub/PlayModeTests/PlayModeTests.cs index dab43a07..4dd77952 100644 --- a/PubNubUnity/Assets/PubNub/PlayModeTests/PlayModeTests.cs +++ b/PubNubUnity/Assets/PubNub/PlayModeTests/PlayModeTests.cs @@ -2007,7 +2007,7 @@ public IEnumerator TestReconnect() { case "join1": case "join2": if(!mea.Status.Category.Equals(PNStatusCategory.PNConnectedCategory)){ - if(mea.PresenceEventResult.Event.Equals("join")){ + if ((mea.PresenceEventResult!=null) && (mea.PresenceEventResult.Event.Equals("join"))){ bool containsUUID = false; if(whatToTest.Equals("join1")){ containsUUID = mea.PresenceEventResult.UUID.Contains(pnConfiguration.UUID); @@ -2032,7 +2032,7 @@ public IEnumerator TestReconnect() { break; case "leave": if(!mea.Status.Category.Equals(PNStatusCategory.PNConnectedCategory)){ - if(mea.PresenceEventResult.Event.Equals("leave")){ + if((mea.PresenceEventResult!=null) && (mea.PresenceEventResult.Event.Equals("leave"))){ bool containsUUID = mea.PresenceEventResult.UUID.Contains(pnConfiguration2.UUID); Assert.True(containsUUID); Debug.Log(containsUUID); From f4f0e6f97138d93dc847c96f42c32cc90d614d9f Mon Sep 17 00:00:00 2001 From: Rajat Kalsy Date: Thu, 10 Jan 2019 08:38:09 +0530 Subject: [PATCH 18/18] update changelog --- .pubnub.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.pubnub.yml b/.pubnub.yml index 1d601371..a9161cfe 100644 --- a/.pubnub.yml +++ b/.pubnub.yml @@ -13,7 +13,10 @@ changelog: type: feature - text: "User Exceptions Fix" - type: improvement + type: improvement + - + text: "Leave callback message exception fix" + type: bug date: "Jan 9, 19" version: v4.0.5 -