Advertisement
Guest User

Server.java 2

a guest
Jun 15th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.54 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement