Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package server;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * @author Piotr Kawa
- */
- public class Server {
- private static int portAdress;
- private static String[] firstLine;
- private static Map<String, String> requestMap;
- private static String directory;
- private String response;
- public Server(int portAdress){
- this.portAdress = portAdress;
- try{
- this.runServer();
- } catch(IOException e){
- e.printStackTrace();
- }
- }
- private void runServer() throws IOException {
- ServerSocket server = new ServerSocket(portAdress);
- System.out.println("Listening for connection on port 8080 ....");
- requestMap = new HashMap<>();
- FileHandler fileHandler = new FileHandler();
- ResponseHandler responseHandler = new ResponseHandler();
- while (true) {
- try(Socket socket = server.accept()){
- InputStreamReader isr = new InputStreamReader(socket.getInputStream());
- BufferedReader reader = new BufferedReader(isr);
- String line = reader.readLine();
- /*TODO: throws NullPointer*/
- while (!line.isEmpty()) {
- System.out.println(line);
- if(line.contains("GET")) {
- firstLine = line.split("\\s+");
- }
- line = reader.readLine();
- // else {
- // String[] lineArray = line.split("([:]?\\s)", 2);
- // requestMap.put(lineArray[0],lineArray[1]);
- // line = reader.readLine();
- // }
- }
- /**
- * 1) check whether requested file is valid
- * 2) check whether requested file exists
- * 3) prepare proper response
- * */
- String requestedFile = firstLine[1];
- //OK("200 OK");
- //NOT_FOUND("404 Not Found");
- //BAD_REQUEST("400 Bad Request");
- // String output = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n";
- // StringBuilder abc = new StringBuilder(output);
- // String body = "<html>test</html>";
- // abc.append(body);
- // String response = abc.toString();
- //
- // if requested file is valid and server contains file
- if(fileHandler.validateRequestedFile(requestedFile)){
- System.out.println("correct request");
- System.out.println("requesting file " + "'" + requestedFile + "'");
- try{
- if(fileHandler.serverContainsFile(requestedFile)){
- //all worked well
- String pathToFile = fileHandler.getRequestedFilePath();
- System.out.println("path to file = " + pathToFile);
- response = responseHandler.prepareResponse(pathToFile,"positive");
- System.out.println("all ok");
- } else {
- response = responseHandler.prepareResponse(null,"error404");
- System.out.println("404 file not found");
- //return 404 not found
- }
- } catch(Exception e){
- e.printStackTrace();
- }
- } else {
- response = responseHandler.prepareResponse(null,"error400");
- System.out.println("400 bad request");
- //return 400 bad request
- }
- socket.getOutputStream().write(response.getBytes("UTF-8"));
- // for(Map.Entry<String, String> entry : requestMap.entrySet()){
- // System.out.println(entry.getKey() + " vs " + entry.getValue());
- // }
- //
- // System.out.println();
- // System.out.println(firstLine[1]);
- } catch(Exception e){
- e.printStackTrace();
- }
- }
- }
- private void splitMessage(){
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement