Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.conversational;
- import static spark.Spark.get;
- import static spark.Spark.post;
- import static spark.SparkBase.port;
- import static spark.SparkBase.staticFileLocation;
- import java.io.*;
- import java.nio.file.Paths;
- import java.util.ArrayList;
- import java.util.Map;
- import java.util.Scanner;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import org.json.JSONStringer;
- import spark.ModelAndView;
- import spark.Request;
- import spark.Response;
- import spark.Route;
- import spark.Spark;
- public class Server {
- public static final int PORT = 6070;
- static String postsDataFile = Paths.get(".").toAbsolutePath().normalize().toString()
- + File.separator + "posts.json";
- public static ArrayList<User> users = new ArrayList<>();
- public static ArrayList<Post> posts = new ArrayList<>();
- public static void main(String[] args) throws Exception {
- if(new File(postsDataFile).exists()) {
- JSONObject postsObject = new JSONObject(
- new Scanner(new File(postsDataFile)).next());
- for(int i = 0; i < postsObject.getInt("numPosts"); i++) {
- JSONObject post = postsObject.getJSONObject(String.valueOf(i));
- posts.add(new Post(post.getString("author"),
- post.getString("text"),
- getStringArray(post.getJSONArray("tags"))));
- }
- }
- port(PORT);
- staticFileLocation("/public");
- get("/", new Route() {
- @Override
- public Object handle(Request request, Response response)
- throws Exception {
- if(request.session().attribute("user") != null
- &&
- request.session().attribute("pwd") != null)
- {
- response.redirect("home-loggedin.html");
- } else {
- response.redirect("home-guest.html");
- }
- return null;
- }
- });
- get("/currentuser",(req, res) -> req.session().attribute("user"));
- get("/currentuserpwd", (req, res) -> req.session().attribute("pwd"));
- post("/post/:text/:tags/:username/:encryptedPwd", new Route() {
- @Override
- public Object handle(Request request, Response response)
- throws Exception {
- Post newPost = new Post(request.params("username"),
- request.params("text"),
- request.params("tags").split(","));
- posts.add(newPost);
- savePosts();
- return "";
- }
- });
- get("/login/:user/:pwd", new Route() {
- @Override
- public Object handle(Request request, Response response) throws Exception {
- request.session().attribute("user", request.params("user"));
- request.session().attribute("pwd", request.params("pwd"));
- response.redirect("/");
- return null;
- }
- });
- get("/logout", new Route() {
- @Override
- public Object handle(Request request, Response response) throws Exception {
- request.session().attribute("user", null);
- request.session().attribute("pwd", null);
- response.redirect("/home-guest.html");
- return null;
- }
- });
- Spark.get("/post/*/likes", new Route() {
- @Override
- public Object handle(Request request, Response response) throws Exception {
- return getPost(request.splat()[0]).getNumLikes();
- }
- });
- Spark.get("/post/*/author", new Route() {
- @Override
- public Object handle(Request request, Response response) throws Exception {
- return getPost(request.splat()[0]).getAuthor();
- }
- });
- Spark.get("/post/*/text", new Route() {
- @Override
- public Object handle(Request request, Response response) throws Exception {
- return getPost(request.splat()[0]).getText();
- }
- });
- Spark.get("/post/*/tags", new Route() {
- @Override
- public Object handle(Request request, Response response) throws Exception {
- String tags = "";
- for(String t : getPost(request.splat()[0]).getTags()) tags += t + "~";
- tags = tags.substring(tags.length() - 1);
- return tags;
- }
- });
- Spark.get("/numposts", new Route() {
- @Override
- public Object handle(Request request, Response response) throws Exception {
- return posts.size();
- }
- });
- /*get("/users/:num", new Route() {
- @Override
- public Object handle(Request request, Response response) throws Exception {
- int i = 0;
- boolean fail = false;
- Scanner preScanner = new Scanner(new File(userDataFile));
- ArrayList<String> linesOfFile = new ArrayList<String>();
- while(preScanner.hasNext()) {
- linesOfFile.add(preScanner.next());
- }
- int numUser = Integer.parseInt(request.params().get(":num"));
- String[] parts = null;
- parts = linesOfFile.get(numUser).split("~");
- parts[1] = EncryptionUtils.decrypt("16sixteen16hijut", "RandomInitVector", parts[1]);
- preScanner.close();
- String userName = parts[0];
- if(!fail) {
- response.redirect("/user.html?username=" + userName
- + "&bio=");
- return "<!DOCTYPE html>"
- + "<html>"
- + " <head>"
- + " <title>Conversational - User " + userName + "</title>"
- + " </head>"
- + " <body>"
- + " <h1>User " + userName + "</h1>"
- + " </body>"
- + "</html>";
- } else {
- return "<!DOCTYPE html><title>Conversational - Not Found</title>"
- + "<h1>Oops! Couldn't find that user.</h1>";
- }
- }
- });
- get("/submitAccount/:username/:pass", new Route() {
- @Override
- public Object handle(Request request, Response response) throws Exception {
- Map<String, String> params = request.params();
- String newUser = params.get(":username");
- String pass = params.get(":pass");
- Writer userDataWriter = new BufferedWriter(new FileWriter(userDataFile, true));
- String encryptedPass = EncryptionUtils.encrypt("16sixteen16hijut", "RandomInitVector", pass);
- String toWrite = newUser + "~" +
- encryptedPass + "\n";
- request.session(true);
- request.session().attribute("username", newUser);
- request.session().attribute("pass", encryptedPass);
- userDataWriter.write(toWrite);
- userDataWriter.close();
- return "<!DOCTYPE html>"
- + "<title>Conversational - Submit Account Successful</title>"
- + "<h1>You have successfully submitted an account!</h1>"
- + "<a href = \"/\">Back to home</a>"
- ;
- }
- });*/
- }
- public static String[] getStringArray(JSONArray jsonArray) {
- String[] stringArray = null;
- if (jsonArray != null) {
- int length = jsonArray.length();
- stringArray = new String[length];
- for (int i = 0; i < length; i++) {
- stringArray[i] = jsonArray.optString(i);
- }
- }
- return stringArray;
- }
- static Post getPost(String splat) {
- return posts.get(Integer.parseInt(splat));
- }
- static void savePosts() throws Exception {
- JSONStringer postsStringer = new JSONStringer();
- postsStringer
- .object()
- .key("numPosts").value(posts.size());
- int i = 0;
- for(Post p : posts) {
- postsStringer
- .key(Integer.toString(i)).object()
- .key("author").value(p.getAuthor())
- .key("text").value(p.getText())
- .key("numLikes").value(p.getNumLikes())
- .key("likeSources")
- .array();
- for(
- Map.Entry<String, Integer> entry
- :
- p.getLikeIndexAttrs().entrySet()
- ) postsStringer.value(entry.getValue() + "~" + entry.getKey());
- postsStringer
- .endArray()
- .key("tags")
- .array();
- for(String t : p.getTags()) postsStringer.value(t);
- postsStringer
- .endArray()
- .endObject();
- i++;
- }
- postsStringer.endObject();
- System.out.println(postsStringer.toString());
- PrintWriter pw = new PrintWriter(new File(postsDataFile));
- pw.print(postsStringer.toString());
- pw.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement