Family-Map-Project / FamilyMapServer / FamilyMapServerStudent-master / src / handlers / EventHandler.java
EventHandler.java
Raw
package handlers;

import com.google.gson.Gson;
import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import dao.DataAccessException;
import request.EventRequest;
import request.PersonRequest;
import result.EventResult;
import result.EventsResult;
import result.PersonResult;
import result.PersonsResult;
import services.EventService;

import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class EventHandler implements HttpHandler
{
    public void handle(HttpExchange exchange) throws IOException
    {
        try
        {
            if (exchange.getRequestMethod().equals("GET"))
            {
                Headers reqHeaders = exchange.getRequestHeaders();

                if (reqHeaders.containsKey("Authorization"))
                {
                    String authToken = reqHeaders.getFirst("Authorization");

                    Gson gson = new Gson();

                    String URLPath = exchange.getRequestURI().getPath();

                    List<String> urlElements = new ArrayList<>();
                    Scanner s = new Scanner(URLPath).useDelimiter("/");

                    while (s.hasNext())
                    {
                        urlElements.add(s.next());
                    }

                    if (urlElements.size() > 1)
                    {
                        EventRequest request = new EventRequest(urlElements.get(1), authToken);
                        EventService service = new EventService();
                        EventResult result = service.getEvent(request);

                        if(!result.isSuccess())
                        {
                            exchange.sendResponseHeaders(HttpURLConnection.HTTP_BAD_REQUEST, 0);
                        }
                        else
                        {
                            exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, 0);
                        }

                        DefaultHandler handler = new DefaultHandler();

                        OutputStream resBody = exchange.getResponseBody();
                        String jsonString = gson.toJson(result);
                        handler.writeString(jsonString, resBody);
                        resBody.close();
                    }
                    else
                    {
                        EventRequest request = new EventRequest();
                        request.setAuthToken(authToken);
                        EventService service = new EventService();
                        EventsResult result = service.getEvents(request);

                        if(!result.isSuccess())
                        {
                            exchange.sendResponseHeaders(HttpURLConnection.HTTP_BAD_REQUEST, 0);
                        }
                        else
                        {
                            exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, 0);
                        }

                        DefaultHandler handler = new DefaultHandler();

                        OutputStream resBody = exchange.getResponseBody();
                        String jsonString = gson.toJson(result);
                        handler.writeString(jsonString, resBody);
                        resBody.close();
                    }
                }
            }
        }
        catch (IOException | DataAccessException e)
        {
            exchange.sendResponseHeaders(HttpURLConnection.HTTP_SERVER_ERROR, 0);
            exchange.getResponseBody().close();
            e.printStackTrace();
        }
    }
}