25
25
import org .apache .http .params .HttpConnectionParams ;
26
26
import org .apache .http .params .HttpParams ;
27
27
import org .json .JSONArray ;
28
+ import org .json .JSONException ;
28
29
import org .json .JSONObject ;
29
30
31
+ import android .util .Log ;
30
32
import pubnub .PubnubCrypto ;
31
33
32
34
/**
@@ -42,6 +44,7 @@ public class Pubnub {
42
44
private String SECRET_KEY = "" ;
43
45
private String CIPHER_KEY = "" ;
44
46
private boolean SSL = false ;
47
+ private String UUIDs = null ;
45
48
private class ChannelStatus {
46
49
String channel ;
47
50
boolean connected , first ;
@@ -150,6 +153,7 @@ public void init(
150
153
} else {
151
154
this .ORIGIN = "http://" + this .ORIGIN ;
152
155
}
156
+ UUIDs = uuid ();
153
157
}
154
158
155
159
/**
@@ -509,6 +513,73 @@ public JSONArray history( HashMap<String, Object> args ) {
509
513
}
510
514
}
511
515
516
+ /**
517
+ * presence
518
+ *
519
+ * This is BLOCKING. Listen for presence events on a channel.
520
+ *
521
+ * @param HashMap
522
+ * <String, Object> args with channel and callback.
523
+ */
524
+ public void presence (HashMap <String , Object > args ) {
525
+ String channel = (String ) args .get ("channel" );
526
+ Callback callback ;
527
+
528
+ // Validate Arguments
529
+ if (args .get ("callback" ) != null ) {
530
+ callback = (Callback ) args .get ("callback" );
531
+ } else {
532
+ System .out .println ("Invalid Callback." );
533
+ return ;
534
+ }
535
+
536
+ if (channel == null || channel .equals ("" )) {
537
+ callback .errorCallback (channel , "Invalid Channel." );
538
+ return ;
539
+ }
540
+
541
+ HashMap <String , Object > param = new HashMap <String , Object >();
542
+ param .put ("channel" , channel + "-pnpres" );
543
+ param .put ("callback" , callback );
544
+ subscribe (param );
545
+ }
546
+
547
+ /**
548
+ * Here Now
549
+ *
550
+ * Load current occupancy from a channel
551
+ *
552
+ * @param HashMap
553
+ * <String, Object> args with channel.
554
+ */
555
+ public JSONArray here_now (HashMap <String , Object > args ) {
556
+ String channel = (String ) args .get ("channel" );
557
+ // Validate Arguments
558
+
559
+ if (channel == null || channel .equals ("" )) {
560
+ JSONArray jsono = new JSONArray ();
561
+ try {
562
+ jsono .put (0 );
563
+ jsono .put ("Missing Channel" );
564
+ } catch (Exception jsone ) {
565
+ }
566
+ return jsono ;
567
+ }
568
+
569
+ // Build URL
570
+ List <String > url = new ArrayList <String >();
571
+ url .add ("v2" );
572
+ url .add ("presence" );
573
+ url .add ("sub_key" );
574
+ url .add (this .SUBSCRIBE_KEY );
575
+ url .add ("channel" );
576
+ url .add (channel );
577
+
578
+ // Return JSONArray
579
+ return _request (url );
580
+
581
+ }
582
+
512
583
/**
513
584
* Time
514
585
*
@@ -566,7 +637,7 @@ private JSONArray _request(List<String> url_components) {
566
637
String json = "" ;
567
638
StringBuilder url = new StringBuilder ();
568
639
Iterator <String > url_iterator = url_components .iterator ();
569
-
640
+ String _callFor = url_components . get ( 0 );
570
641
url .append (this .ORIGIN );
571
642
572
643
// Generate URL with UTF-8 Encoding
@@ -584,7 +655,9 @@ private JSONArray _request(List<String> url_components) {
584
655
return jsono ;
585
656
}
586
657
}
587
-
658
+ if (_callFor .equalsIgnoreCase ("subscribe" )) {
659
+ url .append ("/" ).append ("?uuid=" + UUIDs );
660
+ }
588
661
try {
589
662
590
663
PubnubHttpRequest request = new PubnubHttpRequest (url .toString ());
@@ -620,7 +693,17 @@ private JSONArray _request(List<String> url_components) {
620
693
621
694
return jsono ;
622
695
}
696
+ if (_callFor .equalsIgnoreCase ("V2" )) {
697
+ try {
698
+ JSONArray arr = new JSONArray ();
699
+
700
+ arr .put (new JSONObject (json ));
623
701
702
+ json = arr .toString ();
703
+ } catch (JSONException e ) {
704
+ e .printStackTrace ();
705
+ }
706
+ }
624
707
// Parse JSON String
625
708
try { return new JSONArray (json ); }
626
709
catch (Exception e ) {
0 commit comments