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
64 changes: 52 additions & 12 deletions src/main/java/com/facebook/ads/sdk/serverside/UserData.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,19 @@
*/
package com.facebook.ads.sdk.serverside;

import com.facebook.ads.utils.ServerSideApiConstants;
import com.facebook.ads.sdk.serverside.utils.Sha256GenderEnumListAdaptor;
import com.facebook.ads.sdk.serverside.utils.Sha256StringAdaptor;
import com.facebook.ads.sdk.serverside.utils.Sha256StringListAdaptor;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;

import com.facebook.ads.sdk.serverside.utils.Sha256GenderEnumListAdaptor;
import com.facebook.ads.sdk.serverside.utils.Sha256StringAdaptor;
import com.facebook.ads.sdk.serverside.utils.Sha256StringListAdaptor;
import com.facebook.ads.utils.ServerSideApiConstants;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;

/**
* UserData is a set of identifiers Facebook can use for targeted attribution.
Expand Down Expand Up @@ -137,6 +136,9 @@ public class UserData {
@SerializedName(ServerSideApiConstants.PAGE_ID)
private String pageId = null;

@SerializedName(ServerSideApiConstants.WHATSAPP_BUSINESS_ACCOUNT_ID)
private String whatsappBusinessAccountId = null;

/**
* Default Constructor.
*/
Expand Down Expand Up @@ -174,12 +176,13 @@ public UserData() {
* @param anonId ID of a person who has installed the app anonymously
* @param ctwaClid ID of a conversation that was started on WhatsApp
* @param pageId ID of the page that the ad is associated with
* @Param whatsappBusinessAccountId ID of the WhatsApp Business account associated with the User
*/
public UserData(String email, String phone, GenderEnum gender, String dateOfBirth,
String lastName, String firstName, String city, String state, String zipcode,
String countryCode, String externalId, String clientIpAddress, String clientUserAgent,
String fbc, String fbp, String subscriptionId, String fbLoginId, String leadId,
String f5first, String f5last, String fi, String dobd, String dobm, String doby, String madid, String anonId, String ctwaClid, String pageId) {
String f5first, String f5last, String fi, String dobd, String dobm, String doby, String madid, String anonId, String ctwaClid, String pageId, String whatsappBusinessAccountId) {
this.emails = Arrays.asList(email);
this.phones = Arrays.asList(phone);
this.genders = Arrays.asList(gender);
Expand All @@ -205,7 +208,9 @@ public UserData(String email, String phone, GenderEnum gender, String dateOfBirt
this.dobm = dobm;
this.doby = doby;
this.madid = madid;
this.anonId = anonId;
this.anonId = anonId;
this.pageId = pageId;
this.whatsappBusinessAccountId = whatsappBusinessAccountId;
}

/**
Expand Down Expand Up @@ -1461,6 +1466,37 @@ public void setPageId(String pageId) {
this.pageId = pageId;
}

/**
* Id of the WhatsApp Business Account assciated with the User
*
* @param whatsappBusinessAccountId
* @returns UserData
*/
public UserData whatsappBusinessAccountId(String whatsappBusinessAccountId) {
setWhatsappBusinessAccountId(whatsappBusinessAccountId);
return this;
}

/**
* Get the Id of the WhatsApp Business Account assciated with the User
*
* @return whatsappBusinessAccountId
*/
public String getWhatsappBusinessAccountId() {
return this.whatsappBusinessAccountId;
}

/**
* Set the Id of the WhatsApp Business Account assciated with the User
*
* @param whatsappBusinessAccountId
*/
public void setWhatsappBusinessAccountId(String whatsappBusinessAccountId) {
this.whatsappBusinessAccountId = whatsappBusinessAccountId;
}



@Override
public boolean equals(Object o) {
if (this == o) {
Expand Down Expand Up @@ -1497,7 +1533,8 @@ public boolean equals(Object o) {
&& Objects.equals(this.madid, userData.madid)
&& Objects.equals(this.anonId, userData.anonId)
&& Objects.equals(this.ctwaClid, userData.ctwaClid)
&& Objects.equals(this.pageId, userData.pageId);
&& Objects.equals(this.pageId, userData.pageId)
&& Objects.equals(this.whatsappBusinessAccountId, userData.whatsappBusinessAccountId);
}

@Override
Expand Down Expand Up @@ -1530,7 +1567,9 @@ public int hashCode() {
madid,
anonId,
ctwaClid,
pageId);
pageId,
whatsappBusinessAccountId);

}

@Override
Expand Down Expand Up @@ -1566,6 +1605,7 @@ public String toString() {
sb.append(" anonId: ").append(toIndentedString(anonId)).append("\n");
sb.append(" ctwaClid: ").append(toIndentedString(ctwaClid)).append("\n");
sb.append(" pageId: ").append(toIndentedString(pageId)).append("\n");
sb.append(" whatsappBusinessAccountId: ").append(toIndentedString(whatsappBusinessAccountId)).append("\n");
sb.append("}");
return sb.toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,6 @@ public class ServerSideApiConstants {
public static final String CTWA_CLID = "ctwa_clid";

public static final String PAGE_ID = "page_id";

public static final String WHATSAPP_BUSINESS_ACCOUNT_ID = "waba_id";
}
82 changes: 82 additions & 0 deletions src/test/java/com/facebook/ads/sdk/serverside/UserDataTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -196,4 +196,86 @@ public void EqualsAndHashCodeNotSameTest() {
assertNotEquals(userData1, userData2);
assertNotEquals(userData1.hashCode(), userData2.hashCode());
}

@Test
public void WhatsAppFieldsTest() {
UserData userData = new UserData();
userData
.ctwaClid("ctwa-clid-123")
.pageId("page-id-456")
.whatsappBusinessAccountId("whatsapp-biz-account-789");

assertEquals(userData.getCtwaClid(), "ctwa-clid-123");
assertEquals(userData.getPageId(), "page-id-456");
assertEquals(userData.getWhatsappBusinessAccountId(), "whatsapp-biz-account-789");
}

@Test
public void WhatsAppFieldsWithSettersTest() {
UserData userData = new UserData();
userData.setCtwaClid("ctwa-clid-123");
userData.setPageId("page-id-456");
userData.setWhatsappBusinessAccountId("whatsapp-biz-account-789");

assertEquals(userData.getCtwaClid(), "ctwa-clid-123");
assertEquals(userData.getPageId(), "page-id-456");
assertEquals(userData.getWhatsappBusinessAccountId(), "whatsapp-biz-account-789");
}

@Test
public void WhatsAppFieldsEqualsTest() {
UserData userData1 = new UserData();
userData1
.ctwaClid("ctwa-clid-123")
.pageId("page-id-456")
.whatsappBusinessAccountId("whatsapp-biz-account-789");

UserData userData2 = new UserData();
userData2
.ctwaClid("ctwa-clid-123")
.pageId("page-id-456")
.whatsappBusinessAccountId("whatsapp-biz-account-789");

assertEquals(userData1, userData2);
assertEquals(userData1.hashCode(), userData2.hashCode());
}

@Test
public void WhatsAppFieldsInConstructorTest() {
UserData userData = new UserData(
"email@example.com",
"1234567890",
GenderEnum.MALE,
"20000101",
"lastname",
"firstname",
"city",
"state",
"12345",
"US",
"external-id",
"192.168.1.1",
"Chrome",
"fbc-value",
"fbp-value",
"subscription-id",
"fb-login-id",
"lead-id",
"first5",
"last5",
"f",
"01",
"01",
"2000",
"madid-value",
"anon-id",
"ctwa-clid-123",
"page-id-456",
"whatsapp-biz-account-789"
);

assertEquals(userData.getCtwaClid(), "ctwa-clid-123");
assertEquals(userData.getPageId(), "page-id-456");
assertEquals(userData.getWhatsappBusinessAccountId(), "whatsapp-biz-account-789");
}
}