Skip to content

Commit 43522cd

Browse files
update: add cmabEndpoint handling in DefaultCmabClient and CmabClientConfig
1 parent f91cfd0 commit 43522cd

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

core-api/src/main/java/com/optimizely/ab/cmab/client/CmabClientConfig.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
*/
2424
public class CmabClientConfig {
2525
private final RetryConfig retryConfig;
26+
private String cmabEndpoint = null;
2627

2728
public CmabClientConfig(@Nullable RetryConfig retryConfig) {
2829
this.retryConfig = retryConfig;
@@ -33,6 +34,15 @@ public RetryConfig getRetryConfig() {
3334
return retryConfig;
3435
}
3536

37+
@Nullable
38+
public String getCmabEndpoint() {
39+
return cmabEndpoint;
40+
}
41+
42+
public void setCmabEndpoint(@Nullable String cmabEndpoint){
43+
this.cmabEndpoint = cmabEndpoint;
44+
}
45+
3646
/**
3747
* Creates a config with default retry settings.
3848
*

core-httpclient-impl/src/main/java/com/optimizely/ab/cmab/DefaultCmabClient.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
import java.io.IOException;
1919
import java.io.UnsupportedEncodingException;
2020
import java.util.Map;
21-
import java.util.regex.Matcher;
22-
import java.util.regex.Pattern;
2321

2422
import org.apache.http.ParseException;
2523
import org.apache.http.StatusLine;
@@ -33,10 +31,10 @@
3331
import com.optimizely.ab.OptimizelyHttpClient;
3432
import com.optimizely.ab.cmab.client.CmabClient;
3533
import com.optimizely.ab.cmab.client.CmabClientConfig;
34+
import com.optimizely.ab.cmab.client.CmabClientHelper;
3635
import com.optimizely.ab.cmab.client.CmabFetchException;
3736
import com.optimizely.ab.cmab.client.CmabInvalidResponseException;
3837
import com.optimizely.ab.cmab.client.RetryConfig;
39-
import com.optimizely.ab.cmab.client.CmabClientHelper;
4038

4139
public class DefaultCmabClient implements CmabClient {
4240

@@ -45,11 +43,15 @@ public class DefaultCmabClient implements CmabClient {
4543

4644
private final OptimizelyHttpClient httpClient;
4745
private final RetryConfig retryConfig;
46+
private final String cmabEndpoint;
4847

4948
// Primary constructor - all others delegate to this
5049
public DefaultCmabClient(OptimizelyHttpClient httpClient, CmabClientConfig config) {
5150
this.retryConfig = config != null ? config.getRetryConfig() : null;
5251
this.httpClient = httpClient != null ? httpClient : createDefaultHttpClient();
52+
this.cmabEndpoint = (config != null && config.getCmabEndpoint() != null)
53+
? config.getCmabEndpoint()
54+
: CmabClientHelper.CMAB_PREDICTION_ENDPOINT;
5355
}
5456

5557
// Constructor with HTTP client only (no retry)
@@ -76,7 +78,7 @@ private OptimizelyHttpClient createDefaultHttpClient() {
7678
@Override
7779
public String fetchDecision(String ruleId, String userId, Map<String, Object> attributes, String cmabUuid) {
7880
// Implementation will use this.httpClient and this.retryConfig
79-
String url = String.format(CmabClientHelper.CMAB_PREDICTION_ENDPOINT, ruleId);
81+
String url = String.format(cmabEndpoint, ruleId);
8082
String requestBody = CmabClientHelper.buildRequestJson(userId, ruleId, attributes, cmabUuid);
8183

8284
// Use retry logic if configured, otherwise single request

0 commit comments

Comments
 (0)