11package com .pubnub .api .endpoints .access ;
22
3- import com .fasterxml .jackson .core . type . TypeReference ;
3+ import com .fasterxml .jackson .databind . JsonNode ;
44import com .pubnub .api .PubNub ;
55import com .pubnub .api .PubNubException ;
66import com .pubnub .api .PubNubUtil ;
77import com .pubnub .api .builder .PubNubErrorBuilder ;
88import com .pubnub .api .endpoints .Endpoint ;
99import com .pubnub .api .enums .PNOperationType ;
10- import com .pubnub .api .managers .MapperManager ;
1110import com .pubnub .api .models .consumer .access_manager .PNAccessManagerGrantResult ;
1211import com .pubnub .api .models .consumer .access_manager .PNAccessManagerKeyData ;
13- import com .pubnub .api .models .consumer .access_manager .PNAccessManagerKeysData ;
1412import com .pubnub .api .models .server .Envelope ;
1513import com .pubnub .api .models .server .access_manager .AccessManagerGrantPayload ;
1614import lombok .Setter ;
2119
2220import java .util .ArrayList ;
2321import java .util .HashMap ;
22+ import java .util .Iterator ;
2423import java .util .List ;
2524import java .util .Map ;
2625
@@ -119,27 +118,19 @@ protected PNAccessManagerGrantResult createResponse(Response<Envelope<AccessMana
119118 if (channelGroups .size () == 1 ) {
120119 constructedGroups .put (data .getChannelGroups ().asText (), data .getAuthKeys ());
121120 } else if (channelGroups .size () > 1 ) {
122- MapperManager mapper = this .getPubnub ().getMapper ();
123- HashMap <String , PNAccessManagerKeysData > channelGroupKeySet = mapper .fromJson (data .getChannelGroups ().toString (),
124- new TypeReference <HashMap <String , PNAccessManagerKeysData >>() {
125- });
126- // for (String fetchedChannelGroup : channelGroupKeySet.keySet()) {
127- // constructedGroups.put(fetchedChannelGroup, channelGroupKeySet.get(fetchedChannelGroup).getAuthKeys());
128- // }
129- for (Map .Entry <String , PNAccessManagerKeysData > entry : channelGroupKeySet .entrySet ()) {
130- constructedGroups .put (entry .getKey (), entry .getValue ().getAuthKeys ());
121+ for (Iterator <Map .Entry <String , JsonNode >> it = data .getChannelGroups ().fields (); it .hasNext ();) {
122+ Map .Entry <String , JsonNode > channelGroup = it .next ();
123+ constructedGroups .put (channelGroup .getKey (), createKeyMap (channelGroup .getValue ()));
131124 }
132125 }
133126 }
134127
135-
136128 if (data .getChannels () != null ) {
137129 for (String fetchedChannel : data .getChannels ().keySet ()) {
138130 constructedChannels .put (fetchedChannel , data .getChannels ().get (fetchedChannel ).getAuthKeys ());
139131 }
140132 }
141133
142-
143134 return pnAccessManagerGrantResult
144135 .subscribeKey (data .getSubscribeKey ())
145136 .level (data .getLevel ())
@@ -159,4 +150,20 @@ protected boolean isAuthRequired() {
159150 return false ;
160151 }
161152
153+ private Map <String , PNAccessManagerKeyData > createKeyMap (JsonNode input ) {
154+ Map <String , PNAccessManagerKeyData > result = new HashMap <>();
155+
156+ for (Iterator <Map .Entry <String , JsonNode >> it = input .get ("auths" ).fields (); it .hasNext ();) {
157+ Map .Entry <String , JsonNode > keyMap = it .next ();
158+ PNAccessManagerKeyData pnAccessManagerKeyData = new PNAccessManagerKeyData ()
159+ .setManageEnabled (keyMap .getValue ().get ("m" ).asBoolean ())
160+ .setWriteEnabled (keyMap .getValue ().get ("w" ).asBoolean ())
161+ .setReadEnabled (keyMap .getValue ().get ("r" ).asBoolean ());
162+
163+ result .put (keyMap .getKey (), pnAccessManagerKeyData );
164+ }
165+
166+ return result ;
167+ }
168+
162169}
0 commit comments