PostHandler.java
1 package ru.zoommax; 2 3 import com.sun.net.httpserver.HttpExchange; 4 import com.sun.net.httpserver.HttpHandler; 5 6 import java.io.*; 7 import java.util.HashMap; 8 9 import static ru.zoommax.SimpleServer.logger; 10 11 /** 12 * Interface for creating <b>POST</b> method endpoints. 13 * @see PostHandler#response(String, HashMap, String) 14 * @see PostHandler#handle(HttpExchange) 15 * @see Server#endPoint(String, HttpHandler) 16 * @see Server#remEndPoint(String) 17 * @see Server#requestHeaders(HttpExchange) 18 * @see Server#getIp(HttpExchange) 19 * @see Server#run() 20 * @see Server#Server(int) 21 * @version 1.3 22 * @since 13.10.23 23 * */ 24 @Deprecated 25 public interface PostHandler extends HttpHandler { 26 /** 27 * Method for creating <b>POST</b> method endpoints.<br> 28 * This method is called when a request is received.<br> 29 * In this method automatically get request headers, request body and client ip.<br> 30 * @see PostHandler#response(String, HashMap, String) 31 * @param exchange {@link HttpExchange} object 32 * */ 33 @Override 34 default void handle(HttpExchange exchange) { 35 String respText = "only post"; 36 if (exchange.getRequestMethod().equalsIgnoreCase("POST")){ 37 String clientIp = Server.getIp(exchange); 38 InputStream is = exchange.getRequestBody(); 39 StringBuilder stringBuilder = new StringBuilder(); 40 41 new BufferedReader(new InputStreamReader(is)) 42 .lines() 43 .forEach( (String s) -> stringBuilder.append(s)); 44 45 respText = response(stringBuilder.toString(), Server.requestHeaders(exchange), clientIp); 46 } 47 try { 48 exchange.sendResponseHeaders(200, respText.getBytes().length); 49 OutputStream output = exchange.getResponseBody(); 50 output.write(respText.getBytes()); 51 output.flush(); 52 exchange.close(); 53 } catch (IOException e) { 54 logger.error("Error in PostHandler.handle", e); 55 } 56 } 57 58 /** 59 * Called when a request is received.<br> 60 * @see PostHandler#handle(HttpExchange) 61 * @param requestBody {@link String} request body 62 * @param requestHeaders {@link HashMap} request headers 63 * @param clientIp {@link String} client ip 64 * @return {@link String} response text 65 */ 66 String response(String requestBody, HashMap<String,String> requestHeaders, String clientIp); 67 }