| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package com.example.smshook;
- import java.util.List;
- import java.util.Map;
- import fi.iki.elonen.NanoHTTPD;
- public class HttpServer extends NanoHTTPD {
- public interface OnRequestListener {
- void onSmsRequest(String sender, String message);
- }
- private OnRequestListener listener;
- public void setOnRequestListener(OnRequestListener listener) {
- this.listener = listener;
- }
- private HttpServer(int port) {
- super(port);
- }
- private HttpServer(String hostname, int port) {
- super(hostname, port);
- }
- private static volatile HttpServer instance;
- //double check locking
- public static HttpServer getInstance(int port) {
- if (instance == null) {
- synchronized (HttpServer.class) {
- if (instance == null) {
- instance = new HttpServer("0.0.0.0", port);
- }
- }
- }
- return instance;
- }
- @Override
- public Response serve(IHTTPSession session) {
- Map<String, List<String>> params = session.getParameters();
- List<String> senders = params.get("sender");
- if (senders == null || senders.isEmpty()) {
- return newFixedLengthResponse("sender is required");
- }
- List<String> messages = params.get("message");
- if (messages == null || messages.isEmpty()) {
- return newFixedLengthResponse("message is required");
- }
- String sender = senders.get(0);
- String message = messages.get(0);
- if (listener != null) {
- listener.onSmsRequest(sender, message);
- }
- return newFixedLengthResponse("ok");
- }
- }
|