/ src / main / java / ru / zoommax / PostHandler.java
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  }