Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
3.5 kB
5
Indexable
Never
/////////////////////////////////////////////////////////////////////
// Requires
/////////////////////////////////////////////////////////////////////

const express = require("express");
const cookieParser = require("cookie-parser");

/////////////////////////////////////////////////////////////////////
// Initialization
/////////////////////////////////////////////////////////////////////

const app = express();
const PORT = 8080;

/////////////////////////////////////////////////////////////////////
// Requires
/////////////////////////////////////////////////////////////////////

app.use(express.urlencoded({ extended: true }));
app.use(cookieParser());

/////////////////////////////////////////////////////////////////////
// Configuration
/////////////////////////////////////////////////////////////////////

app.set("view engine", "ejs");

/////////////////////////////////////////////////////////////////////
// Listener
/////////////////////////////////////////////////////////////////////

app.listen(PORT, () => {
  console.log(`Example app listening on port ${PORT}!`);
});

/////////////////////////////////////////////////////////////////////
// "Database"
/////////////////////////////////////////////////////////////////////

const urlDatabase = {
  "b2xVn2": "http://www.lighthouselabs.ca",
  "9sm5xK": "http://www.google.com",
};

const generateRandomString = function() {
  return Math.random().toString(36).substring(2, 8);
};

/////////////////////////////////////////////////////////////////////
// Routes
/////////////////////////////////////////////////////////////////////
app.get("/", (req, res) => {
  res.send("Hello!");
});


app.get("/urls.json", (req, res) => {
  res.json(urlDatabase);
});


app.get("/hello", (req, res) => {
  res.send("<html><body>Hello <b>World</b></body></html>\n");
});


app.get("/urls", (req, res) => {
  const templateVars = {  urls: urlDatabase };
  res.render("urls_index", templateVars);
});

app.get("/urls/new", (req, res) => {
  res.render("urls_new");
});

app.get("/urls/:id", (req, res) => {
  const id = req.params.id;
  const templateVars = {id, longURL: urlDatabase[id]};
  res.render("urls_show", templateVars);
});


app.post("/urls", (req, res) => {
  const shortID = generateRandomString();
  urlDatabase[shortID] = req.body.longURL;
  res.redirect(`/urls/${shortID}`);
});

app.get("/u/:id", (req, res) => {
  const id = req.params.id;
  console.log(urlDatabase[id]);
  res.redirect(urlDatabase[id]);
});








// app.get("/set-cookies", (req, res) => {
//   res.cookie("Cookie 1", 1);
//   res.cookie("Cookie number two", "abc");
//   res.cookie("Another Cookie ", "1234 dog");

//   res.render("set-cookie");
// });

// app.get("/read-cookie", (req, res) => {
//   const cookies = req.cookies;
//   const templateVars = {
//     cookies: cookies,
//   };
//   res.render("read-cookie", templateVars);
// });

// app.post("/sign-out", (req, res) => {
//   res.clearCookie("username");
//   res.redirect("/urls");
// });


// // app.get("/login", (req, res) => {
// //   const templateVars = { Username: users[req]
// //   }
// // })

// app.post("/login", (req, res) => {
//   const username = req.body.username;
//   if (username) {
//     res.cookie("username", username);
//     return res.redirect(`/urls`);
//   }
// });

// app.post("urls/:id/delete", (req, res) => {
//   const id = req.params.id;
//   delete urlDatabase[id];
//   res.redirect("/urls");
// });