SHARE
TWEET

Server.java 2

a guest Jun 15th, 2017 50 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package org.conversational;
  2.  
  3. import static spark.Spark.get;
  4. import static spark.Spark.post;
  5. import static spark.SparkBase.port;
  6. import static spark.SparkBase.staticFileLocation;
  7.  
  8. import java.io.*;
  9. import java.nio.file.Paths;
  10. import java.util.ArrayList;
  11. import java.util.Map;
  12. import java.util.Scanner;
  13.  
  14. import org.json.JSONArray;
  15. import org.json.JSONException;
  16. import org.json.JSONObject;
  17. import org.json.JSONStringer;
  18.  
  19. import spark.ModelAndView;
  20. import spark.Request;
  21. import spark.Response;
  22. import spark.Route;
  23. import spark.Spark;
  24.  
  25. public class Server {
  26.    
  27.     public static final int PORT = 6070;
  28.    
  29.     static String postsDataFile = Paths.get(".").toAbsolutePath().normalize().toString()
  30.             + File.separator + "posts.json";
  31.    
  32.     public static ArrayList<User> users = new ArrayList<>();
  33.    
  34.     public static ArrayList<Post> posts = new ArrayList<>();
  35.  
  36.     public static void main(String[] args) throws Exception {
  37.         if(new File(postsDataFile).exists()) {
  38.             JSONObject postsObject = new JSONObject(
  39.                     new Scanner(new File(postsDataFile)).next());
  40.             for(int i = 0; i < postsObject.getInt("numPosts"); i++) {
  41.                 JSONObject post = postsObject.getJSONObject(String.valueOf(i));
  42.                 posts.add(new Post(post.getString("author"),
  43.                                    post.getString("text"),
  44.                                    getStringArray(post.getJSONArray("tags"))));
  45.             }
  46.         }
  47.         port(PORT);
  48.         staticFileLocation("/public");
  49.         get("/", new Route() {
  50.  
  51.             @Override
  52.             public Object handle(Request request, Response response)
  53.                     throws Exception {
  54.                 if(request.session().attribute("user") != null
  55.                         &&
  56.                    request.session().attribute("pwd") != null)
  57.                 {
  58.                     response.redirect("home-loggedin.html");
  59.                 } else {
  60.                     response.redirect("home-guest.html");
  61.                 }
  62.                 return null;
  63.             }
  64.            
  65.         });
  66.         get("/currentuser",(req, res) -> req.session().attribute("user"));
  67.         get("/currentuserpwd", (req, res) -> req.session().attribute("pwd"));
  68.         post("/post/:text/:tags/:username/:encryptedPwd", new Route() {
  69.  
  70.             @Override
  71.             public Object handle(Request request, Response response)
  72.                     throws Exception {
  73.                 Post newPost = new Post(request.params("username"),
  74.                         request.params("text"),
  75.                         request.params("tags").split(","));
  76.                 posts.add(newPost);
  77.                 savePosts();
  78.                 return "";
  79.             }
  80.            
  81.         });
  82.         get("/login/:user/:pwd", new Route() {
  83.  
  84.             @Override
  85.             public Object handle(Request request, Response response) throws Exception {
  86.                 request.session().attribute("user", request.params("user"));
  87.                 request.session().attribute("pwd", request.params("pwd"));
  88.                 response.redirect("/");
  89.                 return null;
  90.             }
  91.            
  92.         });
  93.         get("/logout", new Route() {
  94.  
  95.             @Override
  96.             public Object handle(Request request, Response response) throws Exception {
  97.                 request.session().attribute("user", null);
  98.                 request.session().attribute("pwd", null);
  99.                 response.redirect("/home-guest.html");
  100.                 return null;
  101.             }
  102.            
  103.         });
  104.         Spark.get("/post/*/likes", new Route() {
  105.  
  106.             @Override
  107.             public Object handle(Request request, Response response) throws Exception {
  108.                 return getPost(request.splat()[0]).getNumLikes();
  109.             }
  110.            
  111.         });
  112.         Spark.get("/post/*/author", new Route() {
  113.  
  114.             @Override
  115.             public Object handle(Request request, Response response) throws Exception {
  116.                 return getPost(request.splat()[0]).getAuthor();
  117.             }
  118.            
  119.         });
  120.         Spark.get("/post/*/text", new Route() {
  121.  
  122.             @Override
  123.             public Object handle(Request request, Response response) throws Exception {
  124.                 return getPost(request.splat()[0]).getText();
  125.             }
  126.            
  127.         });
  128.         Spark.get("/post/*/tags", new Route() {
  129.  
  130.             @Override
  131.             public Object handle(Request request, Response response) throws Exception {
  132.                 String tags = "";
  133.                 for(String t : getPost(request.splat()[0]).getTags()) tags += t + "~";
  134.                 tags = tags.substring(tags.length() - 1);
  135.                 return tags;
  136.             }
  137.            
  138.         });
  139.         Spark.get("/numposts", new Route() {
  140.  
  141.             @Override
  142.             public Object handle(Request request, Response response) throws Exception {
  143.                 return posts.size();
  144.             }
  145.            
  146.         });
  147.         /*get("/users/:num", new Route() {
  148.  
  149.             @Override
  150.             public Object handle(Request request, Response response) throws Exception {
  151.                 int i = 0;
  152.                 boolean fail = false;
  153.                 Scanner preScanner = new Scanner(new File(userDataFile));
  154.                 ArrayList<String> linesOfFile = new ArrayList<String>();
  155.                 while(preScanner.hasNext()) {
  156.                     linesOfFile.add(preScanner.next());
  157.                 }
  158.                 int numUser = Integer.parseInt(request.params().get(":num"));
  159.                 String[] parts = null;
  160.                 parts = linesOfFile.get(numUser).split("~");
  161.                 parts[1] = EncryptionUtils.decrypt("16sixteen16hijut", "RandomInitVector", parts[1]);
  162.                 preScanner.close();
  163.                 String userName = parts[0];
  164.                 if(!fail) {
  165.                     response.redirect("/user.html?username=" + userName
  166.                             + "&bio=");
  167.                     return "<!DOCTYPE html>"
  168.                         + "<html>"
  169.                         + " <head>"
  170.                         + "     <title>Conversational - User " + userName + "</title>"
  171.                         + " </head>"
  172.                         + " <body>"
  173.                         + "     <h1>User " + userName + "</h1>"
  174.                         + " </body>"
  175.                         + "</html>";
  176.                 } else {
  177.                     return "<!DOCTYPE html><title>Conversational - Not Found</title>"
  178.                             + "<h1>Oops! Couldn't find that user.</h1>";
  179.                 }
  180.             }
  181.              
  182.          });
  183.          get("/submitAccount/:username/:pass", new Route() {
  184.  
  185.             @Override
  186.             public Object handle(Request request, Response response) throws Exception {
  187.                 Map<String, String> params = request.params();
  188.                 String newUser = params.get(":username");
  189.                 String pass = params.get(":pass");
  190.                 Writer userDataWriter = new BufferedWriter(new FileWriter(userDataFile, true));
  191.                 String encryptedPass = EncryptionUtils.encrypt("16sixteen16hijut", "RandomInitVector", pass);
  192.                 String toWrite = newUser + "~" +
  193.                         encryptedPass + "\n";
  194.                 request.session(true);
  195.                 request.session().attribute("username", newUser);
  196.                 request.session().attribute("pass", encryptedPass);
  197.                 userDataWriter.write(toWrite);
  198.                 userDataWriter.close();
  199.                 return "<!DOCTYPE html>"
  200.                         + "<title>Conversational - Submit Account Successful</title>"
  201.                         + "<h1>You have successfully submitted an account!</h1>"
  202.                         + "<a href = \"/\">Back to home</a>"
  203.                 ;
  204.             }
  205.              
  206.          });*/
  207.     }
  208.    
  209.     public static String[] getStringArray(JSONArray jsonArray) {
  210.         String[] stringArray = null;
  211.         if (jsonArray != null) {
  212.             int length = jsonArray.length();
  213.             stringArray = new String[length];
  214.             for (int i = 0; i < length; i++) {
  215.                 stringArray[i] = jsonArray.optString(i);
  216.             }
  217.         }
  218.         return stringArray;
  219.     }
  220.    
  221.     static Post getPost(String splat) {
  222.         return posts.get(Integer.parseInt(splat));
  223.     }
  224.    
  225.     static void savePosts() throws Exception {
  226.         JSONStringer postsStringer = new JSONStringer();
  227.         postsStringer
  228.             .object()
  229.             .key("numPosts").value(posts.size());
  230.         int i = 0;
  231.         for(Post p : posts) {
  232.             postsStringer
  233.                 .key(Integer.toString(i)).object()
  234.                 .key("author").value(p.getAuthor())
  235.                 .key("text").value(p.getText())
  236.                 .key("numLikes").value(p.getNumLikes())
  237.                 .key("likeSources")
  238.                 .array();
  239.             for(
  240.                 Map.Entry<String, Integer> entry
  241.                     :
  242.                 p.getLikeIndexAttrs().entrySet()
  243.                ) postsStringer.value(entry.getValue() + "~" + entry.getKey());
  244.             postsStringer
  245.                 .endArray()
  246.                 .key("tags")
  247.                 .array();
  248.             for(String t : p.getTags()) postsStringer.value(t);
  249.             postsStringer
  250.                 .endArray()
  251.                 .endObject();
  252.             i++;
  253.         }
  254.         postsStringer.endObject();
  255.         System.out.println(postsStringer.toString());
  256.         PrintWriter pw = new PrintWriter(new File(postsDataFile));
  257.         pw.print(postsStringer.toString());
  258.         pw.close();
  259.     }
  260.  
  261. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top