twitter4jads.impl.TwitterAdsLineItemApiImpl Maven / Gradle / Ivy
package twitter4jads.impl;
import com.google.gson.reflect.TypeToken;
import twitter4jads.*;
import twitter4jads.api.TwitterAdsLineItemApi;
import twitter4jads.models.ads.*;
import org.apache.commons.lang3.StringUtils;;
import twitter4jads.internal.http.HttpParameter;
import twitter4jads.internal.models4j.TwitterException;
import twitter4jads.models.ads.sort.LineItemsSortByField;
import twitter4jads.util.TwitterAdUtil;
import java.lang.reflect.Type;
import java.util.*;
/**
*
* Date: 4/4/16
* Time: 8:01 PM
*/
public class TwitterAdsLineItemApiImpl implements TwitterAdsLineItemApi {
private static final Integer MAX_REQUEST_PARAMETER_SIZE = 200;
private final TwitterAdsClient twitterAdsClient;
public TwitterAdsLineItemApiImpl(TwitterAdsClient twitterAdsClient) {
this.twitterAdsClient = twitterAdsClient;
}
@Override
public BaseAdsListResponseIterable getAllLineItems(String accountId, Optional> campaignIds, Optional> lineItemIds,
Optional> fundingInstrumentIds, Optional count, boolean withDeleted,
String cursor, Optional sortByField, Optional q) throws TwitterException {
TwitterAdUtil.ensureNotNull(accountId, TwitterAdsConstants.ACCOUNT_ID);
String campaignIdsAsString = null;
String lineItemIdsAsString = null;
String fundingInstrumentIdsAsString = null;
if (campaignIds != null && campaignIds.isPresent()) {
TwitterAdUtil.ensureMaxSize(campaignIds.get(), MAX_REQUEST_PARAMETER_SIZE);
campaignIdsAsString = TwitterAdUtil.getCsv(campaignIds.get());
}
if (lineItemIds != null && lineItemIds.isPresent()) {
TwitterAdUtil.ensureMaxSize(lineItemIds.get(), MAX_REQUEST_PARAMETER_SIZE);
lineItemIdsAsString = TwitterAdUtil.getCsv(lineItemIds.get());
}
if (lineItemIds != null && fundingInstrumentIds.isPresent()) {
TwitterAdUtil.ensureMaxSize(fundingInstrumentIds.get(), MAX_REQUEST_PARAMETER_SIZE);
fundingInstrumentIdsAsString = TwitterAdUtil.getCsv(fundingInstrumentIds.get());
}
final List params =
validateLineItemParameters(accountId, campaignIdsAsString, lineItemIdsAsString, fundingInstrumentIdsAsString, count, withDeleted,
cursor, q);
if (sortByField != null && sortByField.isPresent()) {
params.add(new HttpParameter(TwitterAdsConstants.PARAM_SORT_BY, sortByField.get().getField()));
}
final String baseUrl = twitterAdsClient.getBaseAdsAPIUrl() + TwitterAdsConstants.PREFIX_ACCOUNTS_URI + accountId + TwitterAdsConstants.PATH_LINE_ITEMS;
final Type type = new TypeToken>() {
}.getType();
return twitterAdsClient.executeHttpListRequest(baseUrl, params, type);
}
// -------------------------------------------------------------------- PRIVATE METHODS ---------------------------------------------------------
private List validateLineItemParameters(String accountId, String campaignIds, String lineItemIds, String fundingInstrumentIds,
Optional count, boolean withDeleted, String cursor, Optional q) {
TwitterAdUtil.ensureNotNull(accountId, "accountId");
List params = new ArrayList<>();
if (StringUtils.isNotBlank(campaignIds)) {
params.add(new HttpParameter(TwitterAdsConstants.PARAM_CAMPAIGN_IDS, campaignIds));
}
if (StringUtils.isNotBlank(lineItemIds)) {
params.add(new HttpParameter(TwitterAdsConstants.PARAM_LINE_ITEM_IDS, lineItemIds));
}
if (StringUtils.isNotBlank(fundingInstrumentIds)) {
params.add(new HttpParameter(TwitterAdsConstants.PARAM_FUNDING_INSTRUMENT_IDS, fundingInstrumentIds));
}
params.add(new HttpParameter(TwitterAdsConstants.PARAM_WITH_DELETED, withDeleted));
if (count != null && count.isPresent()) {
params.add(new HttpParameter(TwitterAdsConstants.PARAM_COUNT, count.get()));
}
if (StringUtils.isNotBlank(cursor)) {
params.add(new HttpParameter(TwitterAdsConstants.PARAM_CURSOR, cursor));
}
if (q != null && q.isPresent()) {
params.add(new HttpParameter(TwitterAdsConstants.PARAM_Q, q.get()));
}
return params;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy