1818import java .io .IOException ;
1919import java .io .UnsupportedEncodingException ;
2020import java .util .Map ;
21- import java .util .regex .Matcher ;
22- import java .util .regex .Pattern ;
2321
2422import org .apache .http .ParseException ;
2523import org .apache .http .StatusLine ;
3331import com .optimizely .ab .OptimizelyHttpClient ;
3432import com .optimizely .ab .cmab .client .CmabClient ;
3533import com .optimizely .ab .cmab .client .CmabClientConfig ;
34+ import com .optimizely .ab .cmab .client .CmabClientHelper ;
3635import com .optimizely .ab .cmab .client .CmabFetchException ;
3736import com .optimizely .ab .cmab .client .CmabInvalidResponseException ;
3837import com .optimizely .ab .cmab .client .RetryConfig ;
39- import com .optimizely .ab .cmab .client .CmabClientHelper ;
4038
4139public 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