package com.java21days.bots; import java.io.FileInputStream; import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpRequest.BodyPublishers; import java.net.http.HttpResponse.BodyHandlers; import java.util.Date; import java.util.Properties; public class IncomingHook { private String hookUrl; public IncomingHook() throws IOException { loadProperties(); } // get the incoming hook URL public final void loadProperties() throws IOException { var input = new FileInputStream("slack.properties"); Properties props = new Properties(); props.load(input); hookUrl = props.getProperty("incomingHookUrl"); if (hookUrl == null) { throw new IOException("No URL provided"); } } public String sendMessage(String message) throws IOException, InterruptedException { HttpClient client = HttpClient.newHttpClient(); // create the HTTP POST request HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(hookUrl)) .header("Content-Type", "application/json") .POST(BodyPublishers.ofString("{\"text\": \"" + message + "\"}")) .build(); // make the request var response = client.send( request, BodyHandlers.ofString() ); return "HTTP " + response.statusCode() + "\n" + response.body(); } public static void main(String[] arguments) { try { IncomingHook app = new IncomingHook(); var message = "Hello from Sam Snett of Indianapolis"; System.out.println(app.sendMessage(message + " at " + new Date() + "!")); } catch (IOException | InterruptedException ex) { System.out.println("Error: " + ex.getMessage()); } } }