Skip to content

Commit 8563b64

Browse files
committed
Added activate and getVariation handler in android side
1 parent f8be5ea commit 8563b64

File tree

4 files changed

+79
-0
lines changed

4 files changed

+79
-0
lines changed

android/src/main/java/com/optimizely/optimizely_flutter_sdk/OptimizelyFlutterClient.java

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import com.fasterxml.jackson.databind.ObjectMapper;
3737
import com.optimizely.ab.android.sdk.OptimizelyManager;
3838
import com.optimizely.ab.android.shared.DatafileConfig;
39+
import com.optimizely.ab.config.Variation;
3940
import com.optimizely.ab.error.RaiseExceptionErrorHandler;
4041
import com.optimizely.ab.event.BatchEventProcessor;
4142
import com.optimizely.ab.event.EventProcessor;
@@ -178,6 +179,69 @@ protected void createUserContext(ArgumentsParser argumentsParser, @NonNull Resul
178179
}
179180
}
180181

182+
protected void activate(ArgumentsParser argumentsParser, @NonNull Result result) {
183+
String sdkKey = argumentsParser.getSdkKey();
184+
if (sdkKey == null) {
185+
result.success(createResponse(false, ErrorMessage.INVALID_PARAMS));
186+
return;
187+
}
188+
189+
OptimizelyClient optimizelyClient = getOptimizelyClient(sdkKey);
190+
if (optimizelyClient == null) {
191+
result.success(createResponse(false, ErrorMessage.OPTIMIZELY_CLIENT_NOT_FOUND));
192+
return;
193+
}
194+
195+
String experimentKey = argumentsParser.getExperimentKey();
196+
String userId = argumentsParser.getUserID();
197+
Map<String, Object> attributes = argumentsParser.getAttributes();
198+
199+
if (userId == null || experimentKey == null) {
200+
result.success(createResponse(false, ErrorMessage.INVALID_PARAMS));
201+
return;
202+
}
203+
204+
try {
205+
Variation variation = optimizelyClient.activate(experimentKey, userId, attributes);
206+
String variationKey = variation != null ? variation.getKey() : null;
207+
result.success(createResponse(true, Collections.singletonMap(RequestParameterKey.VARIATION_KEY, variationKey), ""));
208+
} catch (Exception ex) {
209+
result.success(createResponse(false, ex.getMessage()));
210+
}
211+
}
212+
213+
protected void getVariation(ArgumentsParser argumentsParser, @NonNull Result result) {
214+
String sdkKey = argumentsParser.getSdkKey();
215+
if (sdkKey == null) {
216+
result.success(createResponse(false, ErrorMessage.INVALID_PARAMS));
217+
return;
218+
}
219+
220+
OptimizelyClient optimizelyClient = getOptimizelyClient(sdkKey);
221+
if (optimizelyClient == null) {
222+
result.success(createResponse(false, ErrorMessage.OPTIMIZELY_CLIENT_NOT_FOUND));
223+
return;
224+
}
225+
226+
String experimentKey = argumentsParser.getExperimentKey();
227+
String userId = argumentsParser.getUserID();
228+
Map<String, Object> attributes = argumentsParser.getAttributes();
229+
230+
if (userId == null || experimentKey == null) {
231+
result.success(createResponse(false, ErrorMessage.INVALID_PARAMS));
232+
return;
233+
}
234+
235+
try {
236+
Variation variation = optimizelyClient.getVariation(experimentKey, userId, attributes);
237+
String variationKey = variation != null ? variation.getKey() : null;
238+
result.success(createResponse(true, Collections.singletonMap(RequestParameterKey.VARIATION_KEY, variationKey), ""));
239+
} catch (Exception ex) {
240+
result.success(createResponse(false, ex.getMessage()));
241+
}
242+
243+
}
244+
181245
protected void decide(ArgumentsParser argumentsParser, @NonNull Result result) {
182246
String sdkKey = argumentsParser.getSdkKey();
183247
if (sdkKey == null) {

android/src/main/java/com/optimizely/optimizely_flutter_sdk/OptimizelyFlutterSdkPlugin.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
4646
initializeOptimizely(argumentsParser, result);
4747
break;
4848
}
49+
case APIs.ACTIVATE: {
50+
activate(argumentsParser, result);
51+
break;
52+
}
53+
case APIs.GET_VARIATION: {
54+
getVariation(argumentsParser, result);
55+
break;
56+
}
4957
case APIs.ADD_NOTIFICATION_LISTENER: {
5058
addNotificationListener(argumentsParser, result);
5159
break;

android/src/main/java/com/optimizely/optimizely_flutter_sdk/helper_classes/ArgumentsParser.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,8 @@ public String getDatafileHostSuffix() {
9898
public String getDatafileHostPrefix() {
9999
return (String) arguments.get(Constants.RequestParameterKey.DATAFILE_HOST_PREFIX);
100100
}
101+
102+
public String getExperimentKey() {
103+
return (String) arguments.get(Constants.RequestParameterKey.EXPERIMENT_KEY);
104+
}
101105
}

android/src/main/java/com/optimizely/optimizely_flutter_sdk/helper_classes/Constants.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
public class Constants {
1919
public static class APIs {
2020
public static final String CLOSE = "close";
21+
public static final String ACTIVATE = "activate";
22+
public static final String GET_VARIATION = "getVariation";
2123
public static final String INITIALIZE = "initialize";
2224
public static final String GET_OPTIMIZELY_CONFIG = "getOptimizelyConfig";
2325
public static final String CREATE_USER_CONTEXT = "createUserContext";
@@ -56,6 +58,7 @@ public static class RequestParameterKey {
5658
public static final String EVENT_TAGS = "eventTags";
5759
public static final String FLAG_KEY = "flagKey";
5860
public static final String RULE_KEY = "ruleKey";
61+
public static final String EXPERIMENT_KEY = "experimentKey";
5962
public static final String VARIATION_KEY = "variationKey";
6063
public static final String DATAFILE_HOST_PREFIX = "datafileHostPrefix";
6164
public static final String DATAFILE_HOST_SUFFIX = "datafileHostSuffix";

0 commit comments

Comments
 (0)