Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class HTTPAjaxRequest extends Thread {
- String baseFolder;
- Socket sock;
- WallController wallController;
- DataInputStream inS;
- DataOutputStream outS;
- public HTTPAjaxRequest(Socket s, String f, WallController wc) {
- baseFolder=f;
- sock=s;
- wallController = wc;
- }
- public void run() {
- try {
- outS = new DataOutputStream(sock.getOutputStream());
- inS = new DataInputStream(sock.getInputStream());
- } catch(IOException ex) {
- System.out.println("Thread error on data streams creation");
- }
- try {
- HTTPmessage request = new HTTPmessage(inS);
- HTTPmessage response = new HTTPmessage();
- final String url = request.getURI();
- String[] parts = url.split("/");
- List<String> urlParts = new ArrayList<>();
- String statusCode = HTTPStatusCode.OK_200;
- for(String s : parts) {
- if(s.length() <= 0)
- continue;
- urlParts.add(s);
- }
- Logs.addLog(Logs.REQUESTS, Date.getCurrentDate() + " " + request.getMethod() + " " + url);
- if((urlParts.size() == 2 || urlParts.size() == 3) && urlParts.get(0).equals("walls")) { // /walls/{wall_name}
- String wallName = urlParts.get(1);
- if(!request.getMethod().equals("POST")) {
- if(wallController.verifyWall(wallName)) {
- if(request.getMethod().equals("GET")) {
- MessagesRegister list = wallController.getMessages(wallName);
- try{
- response.setContentFromString(Xml.messagesRegisterToXML(JAXBContext.newInstance(MessagesRegister.class), list), "application/xml");
- } catch (JAXBException ex) {
- System.out.println("Thread error on JAXBContext creation.");
- statusCode = HTTPStatusCode.INTERNAL_SERVER_ERROR_500;
- response.setContentFromString(HTTPStatusCode.INTERNAL_SERVER_ERROR_HTML, "text/html");
- }
- } else if(request.getMethod().equals("DELETE")) {
- boolean res = (
- urlParts.size() == 3 ?
- wallController.removeMessage(Integer.parseInt(urlParts.get(2)), wallName) :
- wallController.removeWall(wallName)
- );
- if(!res) {
- statusCode = HTTPStatusCode.BAD_REQUEST_400;
- response.setContent(HTTPStatusCode.BAD_REQUEST_HTML, "text/html");
- }
- } else {
- response.setContentFromString(HTTPStatusCode.METHOD_NOT_ALLOWED_HTML, "text/html");
- statusCode = HTTPStatusCode.METHOD_NOT_ALLOWED_405;
- }
- } else {
- response.setContentFromString(HTTPStatusCode.BAD_REQUEST_HTML, "text/html");
- statusCode = HTTPStatusCode.BAD_REQUEST_400;
- }
- } else
- wallController.addMessage(request.getContentAsString().replace("message=", ""), wallName);
- } else {
- String fullname=baseFolder + "/";
- if(request.getURI().equals("/"))
- fullname = fullname + "index.html";
- else
- fullname = fullname + request.getURI();
- if(!response.setContentFromFile(fullname)) {
- response.setContentFromString(HTTPStatusCode.NOT_FOUND_HTML, "text/html");
- statusCode = HTTPStatusCode.NOT_FOUND_404;
- }
- }
- response.setResponseStatus(statusCode);
- response.send(outS);
- } catch (IOException ex) {
- System.out.println("Thread error on http messages creation");
- }
- try {
- sock.close();
- } catch(IOException e) {
- System.out.println("Thread closing error");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement