use of com.getstarted.background.objects.PubSubMessage in project getting-started-java by GoogleCloudPlatform.
the class TranslateServlet method doPost.
// [END getting_started_background_app_list]
/**
* Handle a posted message from Pubsub.
*
* @param req The message Pubsub posts to this process.
* @param resp Not used.
*/
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
// Block requests that don't contain the proper verification token.
String pubsubVerificationToken = PUBSUB_VERIFICATION_TOKEN;
if (req.getParameter("token").compareTo(pubsubVerificationToken) != 0) {
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return;
}
// [START getting_started_background_translate_string]
String body = req.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
PubSubMessage pubsubMessage = gson.fromJson(body, PubSubMessage.class);
TranslateMessage message = pubsubMessage.getMessage();
// Use Translate service client to translate the message.
Translate translate = (Translate) this.getServletContext().getAttribute("translate");
message.setData(decode(message.getData()));
Translation translation = translate.translate(message.getData(), Translate.TranslateOption.sourceLanguage(message.getAttributes().getSourceLang()), Translate.TranslateOption.targetLanguage(message.getAttributes().getTargetLang()));
// [END getting_started_background_translate_string]
message.setTranslatedText(translation.getTranslatedText());
try {
// [START getting_started_background_translate]
// Use Firestore service client to store the translation in Firestore.
Firestore firestore = (Firestore) this.getServletContext().getAttribute("firestore");
CollectionReference translations = firestore.collection("translations");
ApiFuture<WriteResult> setFuture = translations.document().set(message, SetOptions.merge());
setFuture.get();
resp.getWriter().write(translation.getTranslatedText());
// [END getting_started_background_translate]
} catch (InterruptedException | ExecutionException e) {
throw new ServletException("Exception storing data in Firestore.", e);
}
}
Aggregations