Perform better validation on Mandrill responses
This commit is contained in:
parent
70b4f079c1
commit
1b1e1bb3e9
@ -4,10 +4,13 @@ import com.google.common.net.MediaType;
|
|||||||
import com.mongodb.async.SingleResultCallback;
|
import com.mongodb.async.SingleResultCallback;
|
||||||
import io.vertx.core.http.HttpClient;
|
import io.vertx.core.http.HttpClient;
|
||||||
import io.vertx.core.http.HttpHeaders;
|
import io.vertx.core.http.HttpHeaders;
|
||||||
|
import io.vertx.core.json.JsonArray;
|
||||||
import io.vertx.core.json.JsonObject;
|
import io.vertx.core.json.JsonObject;
|
||||||
import lombok.experimental.UtilityClass;
|
import lombok.experimental.UtilityClass;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
public class MandrillUtils {
|
public class MandrillUtils {
|
||||||
|
|
||||||
@ -15,16 +18,28 @@ public class MandrillUtils {
|
|||||||
private static final HttpClient httpClient = APIv3.getVertxInstance().createHttpClient();
|
private static final HttpClient httpClient = APIv3.getVertxInstance().createHttpClient();
|
||||||
|
|
||||||
public static void sendEmail(JsonObject message, SingleResultCallback<Void> callback) {
|
public static void sendEmail(JsonObject message, SingleResultCallback<Void> callback) {
|
||||||
JsonObject body = new JsonObject()
|
JsonObject requestBody = new JsonObject()
|
||||||
.put("key", mandrillApiKey)
|
.put("key", mandrillApiKey)
|
||||||
.put("message", message);
|
.put("message", message);
|
||||||
|
|
||||||
httpClient.post("mandrillapp.com", "/api/1.0/messages/send.json", (response) -> {
|
httpClient.post("mandrillapp.com", "/api/1.0/messages/send.json", (response) -> {
|
||||||
response.bodyHandler((ignored) -> callback.onResult(null, null));
|
response.bodyHandler((responseBody) -> {
|
||||||
|
try {
|
||||||
|
JsonArray bodyJson = new JsonArray(responseBody.toString());
|
||||||
|
JsonObject emailJson = bodyJson.getJsonObject(0);
|
||||||
|
String emailStatus = emailJson.getString("status");
|
||||||
|
|
||||||
|
if (emailStatus.equals("rejected") || emailStatus.equals("invalid")) {
|
||||||
|
callback.onResult(null, new IOException("Illegal email status while reading Mandrill response: " + emailStatus + " (" + emailJson.encode() + ")"));
|
||||||
|
} else {
|
||||||
|
callback.onResult(null, null);
|
||||||
|
}
|
||||||
|
} catch (Exception ex) {
|
||||||
|
callback.onResult(null, new IOException("Failed to process Mandrill response: " + responseBody, ex));
|
||||||
|
}
|
||||||
|
});
|
||||||
response.exceptionHandler((error) -> callback.onResult(null, error));
|
response.exceptionHandler((error) -> callback.onResult(null, error));
|
||||||
})
|
}).putHeader(HttpHeaders.CONTENT_TYPE, MediaType.JSON_UTF_8.toString()).end(requestBody.encode());
|
||||||
.putHeader(HttpHeaders.CONTENT_TYPE, MediaType.JSON_UTF_8.toString())
|
|
||||||
.end(body.encode());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -62,9 +62,7 @@ public class MaxMindUtils {
|
|||||||
future.fail(error);
|
future.fail(error);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
})
|
}).putHeader("Authorization", authHeader).end();
|
||||||
.putHeader("Authorization", authHeader)
|
|
||||||
.end();
|
|
||||||
}).setHandler((result) -> {
|
}).setHandler((result) -> {
|
||||||
if (result.failed()) {
|
if (result.failed()) {
|
||||||
callback.onResult(null, result.cause());
|
callback.onResult(null, result.cause());
|
||||||
|
@ -36,10 +36,7 @@ public class ZangUtils {
|
|||||||
});
|
});
|
||||||
|
|
||||||
response.exceptionHandler((error) -> callback.onResult(null, error));
|
response.exceptionHandler((error) -> callback.onResult(null, error));
|
||||||
})
|
}).putHeader("Authorization", authHeader).putHeader(HttpHeaders.CONTENT_TYPE, MediaType.JSON_UTF_8.toString()).end("To=" + to + "&From=339-337-5300&Body=" + messageBody);
|
||||||
.putHeader("Authorization", authHeader)
|
|
||||||
.putHeader(HttpHeaders.CONTENT_TYPE, MediaType.JSON_UTF_8.toString())
|
|
||||||
.end("To=" + to + "&From=339-337-5300&Body=" + messageBody);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void getCarrierInfo(String phoneNumber, SingleResultCallback<ZangResult> callback) {
|
public static void getCarrierInfo(String phoneNumber, SingleResultCallback<ZangResult> callback) {
|
||||||
|
Loading…
Reference in New Issue
Block a user