src/main/java/org/embulk/output/mailchimp/MailChimpClient.java in embulk-output-mailchimp-0.3.18 vs src/main/java/org/embulk/output/mailchimp/MailChimpClient.java in embulk-output-mailchimp-0.3.19
- old
+ new
@@ -3,10 +3,11 @@
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.MissingNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableList;
@@ -29,10 +30,11 @@
import org.slf4j.Logger;
import javax.annotation.Nullable;
import java.text.MessageFormat;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.embulk.output.mailchimp.model.AuthMethod.API_KEY;
@@ -78,10 +80,18 @@
{
String endpoint = MessageFormat.format(mailchimpEndpoint + "/lists/{0}",
task.getListId());
JsonNode response = client.sendRequest(endpoint, HttpMethod.POST, node.toString(), task);
+ client.avoidFlushAPI("Pushing next request");
+
+ if (response instanceof MissingNode) {
+ ReportResponse reportResponse = new ReportResponse();
+ reportResponse.setErrors(new ArrayList<ErrorResponse>());
+ return reportResponse;
+ }
+
return mapper.treeToValue(response, ReportResponse.class);
}
/**
* Handle detail errors after call bulk MailChimp API
@@ -151,9 +161,12 @@
for (CategoriesResponse categoriesResponse : interestCategoriesResponse.getCategories()) {
String detailEndpoint = MessageFormat.format(mailchimpEndpoint + "/lists/{0}/interest-categories/{1}/interests",
task.getListId(),
categoriesResponse.getId());
response = client.sendRequest(detailEndpoint, HttpMethod.GET, task);
+
+ // Avoid flush MailChimp API
+ client.avoidFlushAPI("Fetching next category's interests");
InterestsResponse interestsResponse = mapper.treeToValue(response, InterestsResponse.class);
categories.put(categoriesResponse.getTitle().toLowerCase(),
convertInterestCategoryToMap(interestsResponse.getInterests()));
}
}