|
36 | 36 | import com.fasterxml.jackson.databind.ObjectMapper;
|
37 | 37 | import com.optimizely.ab.android.sdk.OptimizelyManager;
|
38 | 38 | import com.optimizely.ab.android.shared.DatafileConfig;
|
| 39 | +import com.optimizely.ab.config.Variation; |
39 | 40 | import com.optimizely.ab.error.RaiseExceptionErrorHandler;
|
40 | 41 | import com.optimizely.ab.event.BatchEventProcessor;
|
41 | 42 | import com.optimizely.ab.event.EventProcessor;
|
@@ -178,6 +179,69 @@ protected void createUserContext(ArgumentsParser argumentsParser, @NonNull Resul
|
178 | 179 | }
|
179 | 180 | }
|
180 | 181 |
|
| 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 | + |
181 | 245 | protected void decide(ArgumentsParser argumentsParser, @NonNull Result result) {
|
182 | 246 | String sdkKey = argumentsParser.getSdkKey();
|
183 | 247 | if (sdkKey == null) {
|
|
0 commit comments