Advertisement
Guest User

Untitled

a guest
May 20th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.50 KB | None | 0 0
  1. public class HTTPAjaxRequest extends Thread {
  2. String baseFolder;
  3. Socket sock;
  4. WallController wallController;
  5. DataInputStream inS;
  6. DataOutputStream outS;
  7.  
  8. public HTTPAjaxRequest(Socket s, String f, WallController wc) {
  9. baseFolder=f;
  10. sock=s;
  11. wallController = wc;
  12. }
  13.  
  14. public void run() {
  15. try {
  16. outS = new DataOutputStream(sock.getOutputStream());
  17. inS = new DataInputStream(sock.getInputStream());
  18. } catch(IOException ex) {
  19. System.out.println("Thread error on data streams creation");
  20. }
  21.  
  22. try {
  23. HTTPmessage request = new HTTPmessage(inS);
  24. HTTPmessage response = new HTTPmessage();
  25.  
  26. final String url = request.getURI();
  27. String[] parts = url.split("/");
  28. List<String> urlParts = new ArrayList<>();
  29.  
  30. String statusCode = HTTPStatusCode.OK_200;
  31.  
  32. for(String s : parts) {
  33. if(s.length() <= 0)
  34. continue;
  35.  
  36. urlParts.add(s);
  37. }
  38. Logs.addLog(Logs.REQUESTS, Date.getCurrentDate() + " " + request.getMethod() + " " + url);
  39.  
  40. if((urlParts.size() == 2 || urlParts.size() == 3) && urlParts.get(0).equals("walls")) { // /walls/{wall_name}
  41. String wallName = urlParts.get(1);
  42.  
  43. if(!request.getMethod().equals("POST")) {
  44. if(wallController.verifyWall(wallName)) {
  45. if(request.getMethod().equals("GET")) {
  46. MessagesRegister list = wallController.getMessages(wallName);
  47.  
  48. try{
  49. response.setContentFromString(Xml.messagesRegisterToXML(JAXBContext.newInstance(MessagesRegister.class), list), "application/xml");
  50. } catch (JAXBException ex) {
  51. System.out.println("Thread error on JAXBContext creation.");
  52. statusCode = HTTPStatusCode.INTERNAL_SERVER_ERROR_500;
  53. response.setContentFromString(HTTPStatusCode.INTERNAL_SERVER_ERROR_HTML, "text/html");
  54. }
  55. } else if(request.getMethod().equals("DELETE")) {
  56. boolean res = (
  57. urlParts.size() == 3 ?
  58. wallController.removeMessage(Integer.parseInt(urlParts.get(2)), wallName) :
  59. wallController.removeWall(wallName)
  60. );
  61.  
  62. if(!res) {
  63. statusCode = HTTPStatusCode.BAD_REQUEST_400;
  64. response.setContent(HTTPStatusCode.BAD_REQUEST_HTML, "text/html");
  65. }
  66. } else {
  67. response.setContentFromString(HTTPStatusCode.METHOD_NOT_ALLOWED_HTML, "text/html");
  68. statusCode = HTTPStatusCode.METHOD_NOT_ALLOWED_405;
  69. }
  70. } else {
  71. response.setContentFromString(HTTPStatusCode.BAD_REQUEST_HTML, "text/html");
  72. statusCode = HTTPStatusCode.BAD_REQUEST_400;
  73. }
  74. } else
  75. wallController.addMessage(request.getContentAsString().replace("message=", ""), wallName);
  76. } else {
  77. String fullname=baseFolder + "/";
  78. if(request.getURI().equals("/"))
  79. fullname = fullname + "index.html";
  80. else
  81. fullname = fullname + request.getURI();
  82.  
  83. if(!response.setContentFromFile(fullname)) {
  84. response.setContentFromString(HTTPStatusCode.NOT_FOUND_HTML, "text/html");
  85. statusCode = HTTPStatusCode.NOT_FOUND_404;
  86. }
  87. }
  88.  
  89. response.setResponseStatus(statusCode);
  90. response.send(outS);
  91. } catch (IOException ex) {
  92. System.out.println("Thread error on http messages creation");
  93. }
  94.  
  95. try {
  96. sock.close();
  97. } catch(IOException e) {
  98. System.out.println("Thread closing error");
  99. }
  100. }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement