package com.packtpub; import java.io.IOException; import java.util.*; import com.microsoft.azure.functions.annotation.*; import com.sendgrid.Mail; import org.apache.commons.lang3.StringUtils; import com.fasterxml.jackson.databind.ObjectMapper; import com.microsoft.azure.functions.*; /** * Azure Functions with HTTP Trigger. */ public class ValidateTwitterFollowerCount { /** * This function listens at endpoint "/api/ValidateTwitterFollowerCount". Two ways to invoke it using "curl" command in bash: * 1. curl -d "HTTP Body" {your host}/api/ValidateTwitterFollowerCount * 2. curl {your host}/api/ValidateTwitterFollowerCount?name=HTTP%20Query */ @FunctionName("ValidateTwitterFollowerCount") public HttpResponseMessage run( @HttpTrigger(name = "request", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request, @SendGridOutput(name = "outputEmail", apiKey = "SendGridAPIKey", from = "[email protected]", to = "your_email_address", subject = "{Name} with {followersCount} followers has posted a tweet", text = "{tweettext}") OutputBinding<Mail> outputEmail, final ExecutionContext context) { context.getLogger().info("Java HTTP trigger processed a request."); TwitterMessage twitterMessage = null; String json = request.getBody().orElse(null); if (json != null) { ObjectMapper mapper = new ObjectMapper(); try { twitterMessage = mapper.readValue(json, TwitterMessage.class); } catch (IOException e) { twitterMessage = new TwitterMessage(); } } else { twitterMessage = new TwitterMessage(); twitterMessage.setFollowersCount(Integer.parseInt(request.getQueryParameters().get("followersCount"))); twitterMessage.setTweetText(request.getQueryParameters().get("tweettext")); twitterMessage.setName(request.getQueryParameters().get("Name")); } if (twitterMessage.getFollowersCount() == 0 || StringUtils.isBlank(twitterMessage.getTweetText()) || StringUtils.isBlank(twitterMessage.getName())) { return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a name on the query string or in the request body").build(); } else { outputEmail.setValue(new Mail()); return request.createResponseBuilder(HttpStatus.OK).body("Success").build(); } } }