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())); } }