package com.ebay.trading.request;
import android.text.TextUtils;
import com.ebay.trading.TradingConfig;
import com.ebay.trading.TradingConstants;
import com.leansoft.nanorest.callback.HttpCallback;
import com.leansoft.nanorest.client.RestClient;
import com.leansoft.nanorest.request.NanoXmlRequestProcessor;
import ebay.apis.eblbasecomponents.AbstractRequestType;
import ebay.apis.eblbasecomponents.CustomSecurityHeaderType;
public class BaseTradingRequestProcessor<T> extends NanoXmlRequestProcessor<T> {
public BaseTradingRequestProcessor(Object requestObject, String callName, Class<T> responseType,
HttpCallback<T> callback, TradingConfig config) {
super(requestObject,
responseType,
callback);
validateConfig(config);
RestClient client = getRestClient();
client.setUrl(config.getServerUrl());
// added eBay auth token on the request
CustomSecurityHeaderType securityHeader = new CustomSecurityHeaderType();
securityHeader.setEBayAuthToken(config.geteBayToken());
((AbstractRequestType)requestObject).setRequesterCredentials(securityHeader);
client.addHeader(TradingConstants.X_EBAY_API_CALL_NAME_HEADER, callName);
client.addHeader(TradingConstants.X_EBAY_API_COMPATIBILITY_LEVEL_HEADER, config.getApiVersion());
client.addHeader(TradingConstants.X_EBAY_API_SITEID_HEADER, config.getSiteId());
}
private void validateConfig(TradingConfig config) {
if (TextUtils.isEmpty(config.getApiVersion())) {
throw new IllegalArgumentException("API version is missing in config");
}
if (TextUtils.isEmpty(config.geteBayToken())) {
throw new IllegalArgumentException("eBay auth token is missing in config");
}
if (TextUtils.isEmpty(config.getSiteId())) {
throw new IllegalArgumentException("eBay site Id is missing in config");
}
if (TextUtils.isEmpty(config.getServerUrl())) {
throw new IllegalArgumentException("eBay server url is missing in config");
}
}
}