Skip to content

Commit b08136d

Browse files
authored
Merge pull request #4 from pubnub/pt133985381
Pt133985381
2 parents f261141 + 2adc7d0 commit b08136d

12 files changed

+126
-22
lines changed

.pubnub.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
---
22
changelog:
3+
-
4+
changes:
5+
-
6+
text: "Offers the ability to set a per message time to live in storage."
7+
type: feature
8+
-
9+
text: "Find out which UUID sent the message (only avialable when debug symbol `PUBNUB_PS_V2_RESPONSE` is used)."
10+
type: feature
11+
date: ~
12+
version: v3.7.6
313
-
414
changes:
515
-

Assets/PubnubExample.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1722,7 +1722,7 @@ void DoPublishWindow (int windowID)
17221722
if(!string.IsNullOrEmpty(publishedMetadataKey) && (!string.IsNullOrEmpty(publishedMetadataValue))){
17231723
metadataDict.Add (publishedMetadataKey, publishedMetadataValue);
17241724
}
1725-
pubnub.Publish<string> (pubChannel, stringMessage, storeInHistory, metadataDict, DisplayReturnMessage, DisplayErrorMessage);
1725+
pubnub.Publish<string> (pubChannel, stringMessage, storeInHistory, metadataDict, -1, DisplayReturnMessage, DisplayErrorMessage);
17261726

17271727
publishedMessage = "";
17281728
showPublishPopupWindow = false;
@@ -1882,6 +1882,7 @@ void DisplayReturnMessageSubscribe (object result){
18821882

18831883
AddToPubnubResultContainer (string.Format ("DisplayReturnMessageSubscribeObject: {0}", pnMessageResult.Timetoken));
18841884
AddToPubnubResultContainer (string.Format ("DisplayReturnMessageSubscribeObject: {0}", pnMessageResult.UserMetadata.ToString()));
1885+
AddToPubnubResultContainer (string.Format ("DisplayReturnMessageSubscribeObject IssuingClientId: {0}", pnMessageResult.IssuingClientId.ToString()));
18851886

18861887
}
18871888

Assets/Scripts/Editor/BuildPublishRequestsUnitTests.cs

Lines changed: 61 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -393,14 +393,61 @@ public void TestBuildPublishRequestCipherSecretAuthMeta ()
393393
TestBuildPublishRequestCommon (true, false, true, "Secret", "enigma", "authKey");
394394
}
395395

396+
[Test]
397+
public void TestBuildPublishRequestCipherSecretAuthMetaStoreTrueTTL ()
398+
{
399+
TestBuildPublishRequestCommonWithTTL (true, false, true, "Secret", "enigma", "authKey", 10);
400+
}
401+
402+
[Test]
403+
public void TestBuildPublishRequestCipherSecretAuthMetaStoreTrueNoTTL ()
404+
{
405+
TestBuildPublishRequestCommonWithTTL (true, false, true, "Secret", "enigma", "authKey", -1);
406+
}
407+
408+
[Test]
409+
public void TestBuildPublishRequestCipherSecretAuthMetaStoreFalseNoTTL ()
410+
{
411+
TestBuildPublishRequestCommonWithTTL (true, false, false, "Secret", "enigma", "authKey", -1);
412+
}
413+
414+
[Test]
415+
public void TestBuildPublishRequestCipherSecretAuthMetaStoreFalseTTL ()
416+
{
417+
TestBuildPublishRequestCommonWithTTL (true, false, false, "Secret", "enigma", "authKey", 10);
418+
}
419+
420+
[Test]
421+
public void TestBuildPublishRequestCipherSecretMetaStoreTrueTTL ()
422+
{
423+
TestBuildPublishRequestCommonWithTTL (true, false, true, "Secret", "enigma", "", 10);
424+
}
425+
426+
[Test]
427+
public void TestBuildPublishRequestCipherSecretMetaStoreTrueNoTTL ()
428+
{
429+
TestBuildPublishRequestCommonWithTTL (true, false, true, "Secret", "enigma", "", -1);
430+
}
431+
432+
[Test]
433+
public void TestBuildPublishRequestCipherSecretMetaStoreFalseNoTTL ()
434+
{
435+
TestBuildPublishRequestCommonWithTTL (true, false, false, "Secret", "enigma", "", -1);
436+
}
437+
438+
[Test]
439+
public void TestBuildPublishRequestCipherSecretMetaStoreFalseTTL ()
440+
{
441+
TestBuildPublishRequestCommonWithTTL (true, false, false, "Secret", "enigma", "", 10);
442+
}
443+
396444
public void TestBuildPublishRequestCommon(bool ssl, bool storeInHistory, string secretKey,
397445
string cipherKey, string authKey){
398446
TestBuildPublishRequestCommon(false, ssl, storeInHistory, secretKey, cipherKey, authKey);
399447
}
400448

401-
public void TestBuildPublishRequestCommon(bool sendMeta, bool ssl, bool storeInHistory, string secretKey,
402-
string cipherKey, string authKey){
403-
449+
public void TestBuildPublishRequestCommonWithTTL(bool sendMeta, bool ssl, bool storeInHistory, string secretKey,
450+
string cipherKey, string authKey, int ttl){
404451
string channel = "publish_channel";
405452
string message = "Test message";
406453
string uuid = "customuuid";
@@ -446,21 +493,29 @@ public void TestBuildPublishRequestCommon(bool sendMeta, bool ssl, bool storeInH
446493

447494
Uri uri = BuildRequests.BuildPublishRequest (channel, originalMessage, storeInHistory, uuid, ssl,
448495
pubnub.Origin, pubnub.AuthenticationKey, Common.PublishKey, Common.SubscribeKey,
449-
cipherKey, secretKey, metadata, 0
496+
cipherKey, secretKey, metadata, 0, ttl
450497
);
451498

499+
string ttlStr = (ttl == -1) ? "" : string.Format("&ttl={0}", ttl.ToString());
500+
452501
//http://pubsub.pubnub.com/publish/demo-36/demo-36/0/publish_channel/0?uuid=customuuid&auth=authKey&pnsdk=PubNub-CSharp-UnityOSX/3.6.9.0
453-
string expected = string.Format ("http{0}://{1}/publish/{2}/{3}/{4}/{5}/0/{6}?uuid={7}&seqn=0{8}{11}{9}&pnsdk={10}",
502+
string expected = string.Format ("http{0}://{1}/publish/{2}/{3}/{4}/{5}/0/{6}?uuid={7}&seqn=0{8}{12}{11}{9}&pnsdk={10}",
454503
ssl?"s":"", pubnub.Origin, Common.PublishKey, Common.SubscribeKey, signature, channel,
455504
Utility.EncodeUricomponent(originalMessage, ResponseType.Publish, false, false),
456505
uuid, storeInHistory?"":"&store=0", authKeyString,
457506
Utility.EncodeUricomponent(PubnubUnity.Version, ResponseType.Publish, false, false),
458-
meta
507+
meta,
508+
ttlStr
459509
);
460510
string received = uri.OriginalString;
461511
Common.LogAndCompare (expected, received);
462512
}
463513

514+
public void TestBuildPublishRequestCommon(bool sendMeta, bool ssl, bool storeInHistory, string secretKey,
515+
string cipherKey, string authKey){
516+
TestBuildPublishRequestCommonWithTTL(false, ssl, storeInHistory, secretKey, cipherKey, authKey, -1);
517+
}
518+
464519
#endif
465520
}
466521
}

Assets/Scripts/Pubnub/BuildRequests.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,17 @@ internal static Uri BuildUnregisterDevicePushRequest(PushTypeService pushType, s
126126

127127
internal static Uri BuildPublishRequest (string channel, string message, bool storeInHistory, string uuid,
128128
bool ssl, string origin, string authenticationKey,
129-
string publishKey, string subscribeKey, string cipherKey, string secretKey, string metadata, uint messageCounter)
129+
string publishKey, string subscribeKey, string cipherKey, string secretKey,
130+
string metadata, uint messageCounter, int ttl
131+
)
130132
{
131133
StringBuilder parameterBuilder = new StringBuilder ();
132134
parameterBuilder.AppendFormat ("&seqn={0}", messageCounter.ToString ());
133135
parameterBuilder.Append ((storeInHistory) ? "" : "&store=0");
136+
if (ttl >= 0) {
137+
parameterBuilder.AppendFormat ("&ttl={0}", ttl.ToString());
138+
}
139+
134140
if (!string.IsNullOrEmpty (metadata) || metadata.Equals("\"\"")) {
135141
parameterBuilder.AppendFormat ("&meta={0}", Utility.EncodeUricomponent (metadata, ResponseType.Publish, false, false));
136142
}

Assets/Scripts/Pubnub/Helpers.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -837,7 +837,10 @@ internal static void CreatePNMessageResult(SubscribeMessage subscribeMessage, ou
837837
subscribeMessage.Payload,
838838
timetoken,
839839
originatingTimetoken,
840-
subscribeMessage.UserMetadata);
840+
subscribeMessage.UserMetadata,
841+
subscribeMessage.IssuingClientId
842+
);
843+
841844
}
842845

843846
internal static PNPresenceEvent CreatePNPresenceEvent (object payload)
@@ -878,7 +881,8 @@ internal static void CreatePNPresenceEventResult(SubscribeMessage subscribeMessa
878881
subscribeMessage.UserMetadata,
879882
pnPresenceEvent.State,
880883
pnPresenceEvent.UUID,
881-
pnPresenceEvent.Occupancy
884+
pnPresenceEvent.Occupancy,
885+
subscribeMessage.IssuingClientId
882886
);
883887
}
884888

Assets/Scripts/Pubnub/Pubnub.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@ public bool Publish(string channel, object message, bool storeInHistory, Diction
109109
}
110110

111111
public bool Publish<T>(string channel, object message, bool storeInHistory, Dictionary<string, string> metadata, Action<T> userCallback, Action<PubnubClientError> errorCallback)
112+
{
113+
return Publish<T>(channel, message, storeInHistory, metadata, -1, userCallback, errorCallback);
114+
}
115+
116+
public bool Publish<T>(string channel, object message, bool storeInHistory, Dictionary<string, string> metadata, int ttl, Action<T> userCallback, Action<PubnubClientError> errorCallback)
112117
{
113118
Utility.CheckChannel(channel);
114119
Utility.CheckMessage(message);
@@ -119,8 +124,14 @@ public bool Publish<T>(string channel, object message, bool storeInHistory, Dict
119124

120125
Utility.CheckJSONPluggableLibrary();
121126

122-
return pubnub.Publish<T>(channel, message, storeInHistory, metadata, userCallback, errorCallback);
127+
return pubnub.Publish<T>(channel, message, storeInHistory, metadata, ttl, userCallback, errorCallback);
123128
}
129+
130+
public bool Publish(string channel, object message, bool storeInHistory, Dictionary<string, string> metadata, int ttl, Action<object> userCallback, Action<PubnubClientError> errorCallback)
131+
{
132+
return Publish<object> (channel, message, storeInHistory, metadata, ttl, userCallback, errorCallback);
133+
}
134+
124135
#endregion
125136

126137
#region "Presence Methods"

Assets/Scripts/Pubnub/PubnubUnity.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
//Build Date: Nov 10, 2016
2-
//ver3.7.5/Unity5
1+
//Build Date: Dec 6, 2016
2+
//ver3.7.6/Unity5
33
using System;
44
using UnityEngine;
55
using System.Collections;
@@ -51,8 +51,8 @@ public void RaisePropertyChanged (string propertyName)
5151
private bool ssl = true;
5252
private static long lastSubscribeTimetoken = 0;
5353
private static long lastSubscribeTimetokenForNewMultiplex = 0;
54-
private const string build = "3.7.5";
55-
private static string pnsdkVersion = "PubNub-CSharp-Unity5/3.7.5";
54+
private const string build = "3.7.6";
55+
private static string pnsdkVersion = "PubNub-CSharp-Unity5/3.7.6";
5656

5757
private int pubnubWebRequestCallbackIntervalInSeconds = 310;
5858
private int pubnubOperationTimeoutIntervalInSeconds = 15;
@@ -497,7 +497,7 @@ public void Subscribe<T> (string channel, string channelGroup, long timetoken, A
497497

498498
#region "Publish"
499499

500-
public bool Publish<T> (string channel, object message, bool storeInHistory, Dictionary<string, string> metadata,
500+
public bool Publish<T> (string channel, object message, bool storeInHistory, Dictionary<string, string> metadata, int ttl,
501501
Action<T> userCallback, Action<PubnubClientError> errorCallback)
502502
{
503503
string jsonMessage = (enableJsonEncodingForPublish) ? Helpers.JsonEncodePublishMsg (message, this.cipherKey, JsonPluggableLibrary) : message.ToString ();
@@ -509,7 +509,7 @@ public bool Publish<T> (string channel, object message, bool storeInHistory, Dic
509509

510510
Uri request = BuildRequests.BuildPublishRequest (channel, jsonMessage, storeInHistory, this.SessionUUID,
511511
this.ssl, this.Origin, this.AuthenticationKey, this.publishKey, this.subscribeKey, this.cipherKey,
512-
this.secretKey, jsonMetadata, this.publishMessageCounter.NextValue());
512+
this.secretKey, jsonMetadata, this.publishMessageCounter.NextValue(), ttl);
513513

514514
RequestState<T> requestState = BuildRequests.BuildRequestState<T> (channelEntity, ResponseType.Publish,
515515
false, 0, false, 0, null);

Assets/Scripts/Pubnub/SubscribeEnvelope.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,17 @@ public class PNMessageResult
5353
public long Timetoken { get; set;}
5454
public long OriginatingTimetoken { get; set;}
5555
public object UserMetadata { get; set;}
56+
public string IssuingClientId { get; set;}
5657

5758
public PNMessageResult(string subscribedChannel, string actualchannel, object payload,
58-
long timetoken, long originatingTimetoken, object userMetadata){
59+
long timetoken, long originatingTimetoken, object userMetadata, string issuingClientId){
5960
this.Subscription = subscribedChannel;// change to channel group
6061
this.Channel = actualchannel; // change to channel
6162
this.Payload = payload;
6263
this.Timetoken = timetoken;
6364
this.OriginatingTimetoken = originatingTimetoken;
6465
this.UserMetadata = userMetadata;
66+
this.IssuingClientId = issuingClientId;
6567
}
6668
}
6769

@@ -76,9 +78,12 @@ public class PNPresenceEventResult
7678
public int Occupancy { get; set;}
7779
public object State { get; set;}
7880
public object UserMetadata { get; set;}
81+
public string IssuingClientId { get; set;}
7982

8083
public PNPresenceEventResult(string subscribedChannel, string actualchannel, string presenceEvent,
81-
long timetoken, long timestamp, object userMetadata, object state, string uuid, int occupancy){
84+
long timetoken, long timestamp, object userMetadata, object state, string uuid, int occupancy,
85+
string issuingClientId
86+
){
8287
this.Subscription = subscribedChannel;// change to channel group
8388
this.Channel = actualchannel; // change to channel
8489
this.Event = presenceEvent;
@@ -88,6 +93,7 @@ public PNPresenceEventResult(string subscribedChannel, string actualchannel, str
8893
this.Timestamp = timestamp;
8994
this.State = state;
9095
this.UserMetadata = userMetadata;
96+
this.IssuingClientId = issuingClientId;
9197
}
9298
}
9399

Binary file not shown.

Assets/Scripts/PubnubIntegrationTests/TestSubscribePubSubV2PresenceResponse.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,13 @@ public IEnumerator DoTestSubscribePSV2 ( string testName)
5757
UnityEngine.Debug.Log (string.Format ("DisplayReturnMessageSubscribeObject: {0}", pnMessageResult.Subscription));
5858
UnityEngine.Debug.Log (string.Format ("DisplayReturnMessageSubscribeObject: {0}", pnMessageResult.Occupancy));
5959
UnityEngine.Debug.Log (string.Format ("DisplayReturnMessageSubscribeObject: {0}", pnMessageResult.Timetoken));
60+
UnityEngine.Debug.Log (string.Format ("DisplayReturnMessageSubscribeObject: {0}", pnMessageResult.IssuingClientId));
6061
//UnityEngine.Debug.Log (string.Format ("DisplayReturnMessageSubscribeObject: {0}", pnMessageResult.UserMetadata.ToString()));
6162

62-
if(pnMessageResult.Event.ToString().Contains("join") && pnMessageResult.Channel.Contains(ch)){
63+
if(pnMessageResult.Event.ToString().Contains("join")
64+
&& pnMessageResult.Channel.Contains(ch)
65+
&& pnMessageResult.IssuingClientId.Equals(pubnub.SessionUUID)
66+
){
6367
bSubMessage2 = true;
6468
}
6569
}, (object retConnect)=>{

0 commit comments

Comments
 (0)