Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 19 additions & 18 deletions src/main/java/com/uid2/client/TokenGenerateInput.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,19 +49,23 @@ TokenGenerateInput doNotHash() {
return this;
}

// Always use .doNotGenerateTokensForOptedOut(), which applies policy=1. Support for policy=0 will be removed soon.
/**
* @deprecated This method is deprecated and no longer has any effect. It is kept for backwards compatibility.
* The policy parameter has been removed from the /token/generate endpoint.
*/
@Deprecated
public TokenGenerateInput doNotGenerateTokensForOptedOut() {
generateForOptedOut = false;
// No-op: kept for backwards compatibility only
return this;
}

String getAsJsonString() {
if (alreadyHashed) {
return createAlreadyHashedJsonRequestForGenerateToken(identityType, emailOrPhone, transparencyAndConsentString, generateForOptedOut);
return createAlreadyHashedJsonRequestForGenerateToken(identityType, emailOrPhone, transparencyAndConsentString);
} else if (needHash) {
return createHashedJsonRequestForGenerateToken(identityType, emailOrPhone, transparencyAndConsentString, generateForOptedOut);
return createHashedJsonRequestForGenerateToken(identityType, emailOrPhone, transparencyAndConsentString);
} else {
return createJsonRequestForGenerateToken(identityType, emailOrPhone, transparencyAndConsentString, generateForOptedOut);
return createJsonRequestForGenerateToken(identityType, emailOrPhone, transparencyAndConsentString);
}
}

Expand All @@ -74,51 +78,48 @@ private TokenGenerateInput(IdentityType identityType, String emailOrPhone, boole



private static String createJsonRequestForGenerateToken(IdentityType identityType, String value, String tcString, boolean generateForOptedOut) {
private static String createJsonRequestForGenerateToken(IdentityType identityType, String value, String tcString) {
final String property = (identityType == IdentityType.Email) ? "email" : "phone";
return createJsonRequestForGenerateToken(property, value, tcString, generateForOptedOut);
return createJsonRequestForGenerateToken(property, value, tcString);
}

private static String createJsonRequestForGenerateToken(String property, String value, String tcString, boolean generateForOptedOut) {
private static String createJsonRequestForGenerateToken(String property, String value, String tcString) {
JsonObject json = new JsonObject();

json.addProperty(property, value);
if (tcString != null) {
json.addProperty("tcf_consent_string", tcString);
}
if (!generateForOptedOut){
json.addProperty("policy", 1);
}

return json.toString();
}

static String createHashedJsonRequestForGenerateToken(IdentityType identityType, String unhashedValue, String tcString, boolean generateForOptedOut) {
static String createHashedJsonRequestForGenerateToken(IdentityType identityType, String unhashedValue, String tcString) {
if (identityType == IdentityType.Email) {
String hashedNormalizedEmail = InputUtil.normalizeAndHashEmail(unhashedValue);
return createJsonRequestForGenerateToken("email_hash", hashedNormalizedEmail, tcString, generateForOptedOut);
return createJsonRequestForGenerateToken("email_hash", hashedNormalizedEmail, tcString);
} else { //phone
if (!InputUtil.isPhoneNumberNormalized(unhashedValue)) {
throw new IllegalArgumentException("phone number is not normalized");
}

String hashedNormalizedPhone = InputUtil.getBase64EncodedHash(unhashedValue);
return createJsonRequestForGenerateToken("phone_hash", hashedNormalizedPhone, tcString, generateForOptedOut);
return createJsonRequestForGenerateToken("phone_hash", hashedNormalizedPhone, tcString);
}
}

static String createAlreadyHashedJsonRequestForGenerateToken(IdentityType identityType, String hashedValue, String tcString, boolean generateForOptedOut) {
static String createAlreadyHashedJsonRequestForGenerateToken(IdentityType identityType, String hashedValue, String tcString) {
if (identityType == IdentityType.Email) {
return createJsonRequestForGenerateToken("email_hash", hashedValue, tcString, generateForOptedOut);
return createJsonRequestForGenerateToken("email_hash", hashedValue, tcString);
} else { //phone
return createJsonRequestForGenerateToken("phone_hash", hashedValue, tcString, generateForOptedOut);
return createJsonRequestForGenerateToken("phone_hash", hashedValue, tcString);
}
}

private final IdentityType identityType;
private final String emailOrPhone;
private boolean needHash;
private final boolean alreadyHashed;
private boolean generateForOptedOut = true;
private String transparencyAndConsentString;


Expand Down
3 changes: 2 additions & 1 deletion src/test/java/com/uid2/client/PublisherTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -515,10 +515,11 @@ public void invalidEncryptedString() {

@Test
public void requestToNotGenerateTokensForOptedOutUsers() {
// This method is deprecated and no longer adds a policy field, but we keep it for backwards compatibility
TokenGenerateInput input = TokenGenerateInput.fromEmail("test@example.com").doNotGenerateTokensForOptedOut();

JsonObject json = new Gson().fromJson(input.getAsJsonString(), JsonObject.class);
assertEquals(1, json.get("policy").getAsInt());
assertNull(json.get("policy"));
}

private String encrypt(String body) {
Expand Down
Loading