From 68c19ee236164be41b8b57dadb3ca01f5a1e3f91 Mon Sep 17 00:00:00 2001
From: Max <73736326+Max2408@users.noreply.github.com>
Date: Sun, 2 May 2021 13:08:26 +0530
Subject: [PATCH] v1.0.0
---
Src/Controllers/Animals.js | 48 ++++++++++
Src/Controllers/Images.js | 106 +++++++++++++++++++++
Src/Controllers/Meme.js | 87 ++++++++++++++++++
Src/Controllers/Others.js | 147 ++++++++++++++++++++++++++++++
Src/Controllers/Text.js | 144 +++++++++++++++++++++++++++++
Src/Controllers/View.js | 12 +++
Src/Data/Animals/Cat.json | 18 ++++
Src/Data/Animals/Dog.json | 18 ++++
Src/Data/Animals/Panda.json | 58 ++++++++++++
Src/Data/Dare.json | 59 ++++++++++++
Src/Data/Joke.json | 22 +++++
Src/Data/Memes/dank.json | 22 +++++
Src/Data/Memes/meirl.json | 127 ++++++++++++++++++++++++++
Src/Data/Memes/minion.json | 47 ++++++++++
Src/Data/Quote.json | 57 ++++++++++++
Src/Data/Truth.json | 95 +++++++++++++++++++
Src/Data/Uselessweb.json | 177 ++++++++++++++++++++++++++++++++++++
Src/Data/insults.json | 83 +++++++++++++++++
Src/Router/Animals.js | 19 ++++
Src/Router/Images.js | 15 +++
Src/Router/Meme.js | 23 +++++
Src/Router/Others.js | 38 ++++++++
Src/Router/Text.js | 23 +++++
Src/Router/View.js | 16 ++++
package.json | 27 ++++++
server.js | 42 +++++++++
sitemap.xml | 13 +++
views/404.html | 27 ++++++
views/main.html | 29 ++++++
29 files changed, 1599 insertions(+)
create mode 100644 Src/Controllers/Animals.js
create mode 100644 Src/Controllers/Images.js
create mode 100644 Src/Controllers/Meme.js
create mode 100644 Src/Controllers/Others.js
create mode 100644 Src/Controllers/Text.js
create mode 100644 Src/Controllers/View.js
create mode 100644 Src/Data/Animals/Cat.json
create mode 100644 Src/Data/Animals/Dog.json
create mode 100644 Src/Data/Animals/Panda.json
create mode 100644 Src/Data/Dare.json
create mode 100644 Src/Data/Joke.json
create mode 100644 Src/Data/Memes/dank.json
create mode 100644 Src/Data/Memes/meirl.json
create mode 100644 Src/Data/Memes/minion.json
create mode 100644 Src/Data/Quote.json
create mode 100644 Src/Data/Truth.json
create mode 100644 Src/Data/Uselessweb.json
create mode 100644 Src/Data/insults.json
create mode 100644 Src/Router/Animals.js
create mode 100644 Src/Router/Images.js
create mode 100644 Src/Router/Meme.js
create mode 100644 Src/Router/Others.js
create mode 100644 Src/Router/Text.js
create mode 100644 Src/Router/View.js
create mode 100644 package.json
create mode 100644 server.js
create mode 100644 sitemap.xml
create mode 100644 views/404.html
create mode 100644 views/main.html
diff --git a/Src/Controllers/Animals.js b/Src/Controllers/Animals.js
new file mode 100644
index 0000000..63a568f
--- /dev/null
+++ b/Src/Controllers/Animals.js
@@ -0,0 +1,48 @@
+exports.cat = async(req, res, next) => {
+ try{
+ const data = require('../Data/Animals/Cat.json')
+ let randomData = data[Math.floor(Math.random() * data.length)]
+ res.status(200).json({
+ image : randomData.image,
+ fact: randomData.fact
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+
+
+}
+
+exports.dog = async(req, res, next) => {
+ try{
+ const data = require('../Data/Animals/Dog.json')
+ let randomData = data[Math.floor(Math.random() * data.length)]
+ res.status(200).json({
+ image : randomData.image,
+ fact: randomData.fact
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+
+}
+
+exports.panda = async(req, res, next) => {
+ try{
+ const data = require('../Data/Animals/Panda.json')
+ let randomData = data[Math.floor(Math.random() * data.length)]
+ res.status(200).json({
+ image : randomData.image,
+ fact: randomData.fact
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+
+}
\ No newline at end of file
diff --git a/Src/Controllers/Images.js b/Src/Controllers/Images.js
new file mode 100644
index 0000000..ca9f17a
--- /dev/null
+++ b/Src/Controllers/Images.js
@@ -0,0 +1,106 @@
+const { Canvas } = require('canvas-constructor')
+const canvas = require('canvas')
+
+exports.delete = async(req, res, next) => {
+ try{
+ const bg = await canvas.loadImage('https://cdn.max2408.ml/assets/api/delete.png')
+
+ if(!req.query.image){
+ res.status(400).json({
+ "error" : true,
+ "code": 400,
+ "message": "no image was provide."
+ })
+ return next();
+ }
+
+ let pngChecker = req.query.image.endsWith('.png')
+ let jpgChecker = req.query.image.endsWith('.jpg')
+
+ if(req.query.image.endsWith('.png') === true){
+ let logo = await canvas.loadImage(req.query.image)
+
+ let image = new Canvas(550, 267)
+ .printImage(bg, 0, 0, 550, 267)
+ .printImage(logo, 95 , 105 , 135 , 135)
+ .toBuffer();
+
+ res.set({'Content-Type': 'image/png'})
+ res.send(image)
+ }else if(req.query.image.endsWith('.jpg') === true){
+ let logo = await canvas.loadImage(req.query.image)
+
+ let image = new Canvas(550, 267)
+ .printImage(bg, 0, 0, 550, 267)
+ .printImage(logo, 95 , 105 , 135 , 135)
+ .toBuffer();
+
+ res.set({'Content-Type': 'image/png'})
+ res.send(image)
+ }else{
+ res.status(400).json({
+ "error" : true,
+ "code": 400,
+ "message": "only jpg or png type of images are allowed."
+ })
+ return next();
+ }
+ }catch(error){
+ console.log(error)
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
+
+exports.ad = async(req, res, next) => {
+ try{
+ const bg = await canvas.loadImage('https://cdn.max2408.ml/assets/api/ad.png')
+
+ if(!req.query.image){
+ res.status(400).json({
+ "error" : true,
+ "code": 400,
+ "message": "no image was provide."
+ })
+ return next();
+ }
+
+ let pngChecker = req.query.image.endsWith('.png')
+ let jpgChecker = req.query.image.endsWith('.jpg')
+
+ if(req.query.image.endsWith('.png') === true){
+ let logo = await canvas.loadImage(req.query.image)
+
+ let image = new Canvas(550, 474)
+ .printImage(logo, 150 , 75 , 230 , 230)
+ .printImage(bg, 0, 0, 550, 474)
+ .toBuffer();
+
+ res.set({'Content-Type': 'image/png'})
+ res.send(image)
+ }else if(req.query.image.endsWith('.jpg') === true){
+ let logo = await canvas.loadImage(req.query.image)
+
+ let image = new Canvas(550, 474)
+ .printImage(logo, 150 , 75 , 230 , 230)
+ .printImage(bg, 0, 0, 550, 474)
+ .toBuffer();
+
+ res.set({'Content-Type': 'image/png'})
+ res.send(image)
+ }else{
+ res.status(400).json({
+ "error" : true,
+ "code": 400,
+ "message": "only jpg or png type of images are allowed."
+ })
+ return next();
+ }
+ }catch(error){
+ console.log(error)
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
\ No newline at end of file
diff --git a/Src/Controllers/Meme.js b/Src/Controllers/Meme.js
new file mode 100644
index 0000000..7fbed62
--- /dev/null
+++ b/Src/Controllers/Meme.js
@@ -0,0 +1,87 @@
+exports.meirl = async(req, res, next) => {
+ try{
+ const data = require('../Data/Memes/meirl.json')
+ let randomData = data[Math.floor(Math.random() * data.length)]
+ res.status(200).json({
+ title: randomData.title,
+ url: randomData.url,
+ category: randomData.category
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
+
+exports.minion = async(req, res, next) => {
+ try{
+ const data = require('../Data/Memes/minion.json')
+ let randomData = data[Math.floor(Math.random() * data.length)]
+ res.status(200).json({
+ title: randomData.title,
+ url: randomData.url,
+ category: randomData.category
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
+
+
+exports.dank = async(req, res, next) => {
+ try{
+ const data = require('../Data/Memes/dank.json')
+ let randomData = data[Math.floor(Math.random() * data.length)]
+ res.status(200).json({
+ title: randomData.title,
+ url: randomData.url,
+ category: randomData.category
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
+
+
+exports.allmeme = async(req, res, next) => {
+ try{
+ const data1 = require('../Data/Memes/minion.json')
+ const data2 = require('../Data/Memes/meirl.json')
+ const data3 = require('../Data/Memes/dank.json')
+
+ let randomData1 = data1[Math.floor(Math.random() * data1.length)]
+
+ let randomData2 = data2[Math.floor(Math.random() * data2.length)]
+
+ let randomData3 = data3[Math.floor(Math.random() * data3.length)]
+
+ let possible = ['data1' , 'data2' , 'data3']
+
+ let resultPossible = possible[Math.floor(Math.random() * possible.length)]
+
+ let output
+
+ if(resultPossible === 'data1'){
+ output = randomData1
+ }else if(resultPossible === 'data2'){
+ output = randomData2
+ }else if(resultPossible === 'data3'){
+ output = randomData3
+ }
+
+ res.status(200).json({
+ title: output.title,
+ url: output.url,
+ category: output.category
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
\ No newline at end of file
diff --git a/Src/Controllers/Others.js b/Src/Controllers/Others.js
new file mode 100644
index 0000000..c7068bb
--- /dev/null
+++ b/Src/Controllers/Others.js
@@ -0,0 +1,147 @@
+function randomStr(length) {
+ var result = '';
+ var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
+ var charactersLength = characters.length;
+ for ( var i = 0; i < length; i++ ) {
+ result += characters.charAt(Math.floor(Math.random() * charactersLength));
+ }
+ return result;
+}
+
+exports.joke = async(req, res, next) => {
+ try{
+ const data = require('../data/joke.json')
+ let randomData = data[Math.floor(Math.random() * data.length)]
+ res.status(200).json({
+ joke : randomData.joke,
+ type: randomData.type
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
+
+exports.insults = async(req, res, next) => {
+ try{
+ const data = require('../data/insults.json')
+ let randomData = data[Math.floor(Math.random() * data.length)]
+ res.status(200).json({
+ insult : randomData.insult,
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
+
+exports.truth = async(req, res, next) => {
+ try{
+ const data = require('../data/Truth.json')
+ let randomData = data[Math.floor(Math.random() * data.length)]
+ res.status(200).json({
+ truth : randomData.truth,
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
+
+exports.dare = async(req, res, next) => {
+ try{
+ const data = require('../data/Dare.json')
+ let randomData = data[Math.floor(Math.random() * data.length)]
+ res.status(200).json({
+ dare : randomData.dare,
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
+
+exports.quotes = async(req, res, next) => {
+ try{
+ const data = require('../data/quote.json')
+ let randomData = data[Math.floor(Math.random() * data.length)]
+ res.status(200).json({
+ quote : randomData.quote,
+ type: randomData.type,
+ author: randomData.author
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
+
+exports.uselessweb = async(req, res, next) => {
+ try{
+ const data = require('../data/uselessweb.json')
+ let randomData = data[Math.floor(Math.random() * data.length)]
+ res.status(200).json({
+ url : randomData.url
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
+
+
+exports.number = async(req, res, next) => {
+ try{
+ let randomNumber = Math.floor(Math.random() * 9999999)
+ res.status(200).json({
+ "number" : randomNumber
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
+
+exports.password = async(req, res, next) => {
+ try{
+ if(!req.query.length){
+ res.status(400).json({
+ "error" : true,
+ "code": 400,
+ "message": "length of the password wasn't specified."
+ })
+ return next();
+ }
+
+ var regExp = /[a-zA-Z]/g;
+ var string = req.query.length
+
+ if(regExp.test(string)){
+ res.status(400).json({
+ "error" : true,
+ "code": 400,
+ "message": "length query must be a number."
+ })
+ return next();
+ } else {
+ let password = randomStr(req.query.length)
+ res.status(200).json({
+ "password" : password,
+ "length": req.query.length,
+ "note" : "These passwords are never stored and are generated randomly"
+ })
+ }
+ }catch(error){
+ console.log(error)
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
diff --git a/Src/Controllers/Text.js b/Src/Controllers/Text.js
new file mode 100644
index 0000000..d22343c
--- /dev/null
+++ b/Src/Controllers/Text.js
@@ -0,0 +1,144 @@
+function reverseString(str) {
+ let newString = "";
+ for (let i = str.length - 1; i >= 0; i--) {
+ newString += str[i];
+ }
+ return newString;
+}
+
+
+function text2Binary(string) {
+ return string.split('').map(function (char) {
+ return char.charCodeAt(0).toString(2);
+ }).join(' ');
+}
+
+function sarcasticConverter(text) {
+ let output = ""
+
+ for (var i = 0; i < text.length; i++) {
+ let char = text.charAt(i);
+
+ let possibleOutcomes = ['low' , 'high'];
+
+ let randomOutcomes = possibleOutcomes[Math.floor(Math.random() * possibleOutcomes.length)]
+
+ if(randomOutcomes === 'low'){
+ char = char.toLowerCase()
+ }else if(randomOutcomes === 'high'){
+ char = char.toUpperCase()
+ }
+
+ output += char
+ }
+
+ return output
+}
+
+exports.shuffle = async(req, res, next) => {
+ try{
+ let text = req.query.text
+
+ if(!text) {
+ res.status(400).json({
+ "error" : true,
+ "code": 400,
+ "message": "text which is to be reversed wasn't specified."
+ })
+ return next();
+ }
+
+ let shuffledWord = text.split(/\s\b(?!\s)/).sort(function(){return 0.5-Math.random()}).join(' ');
+
+ res.status(200).json({
+ "shuffled Word" : shuffledWord
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+
+
+}
+
+exports.reverse = async(req, res, next) => {
+ try{
+ let text = req.query.text
+
+ if(!text) {
+ res.status(400).json({
+ "error" : true,
+ "code": 400,
+ "message": "text which is to be reversed wasn't specified."
+ })
+ return next();
+ }
+
+ let reversedText = reverseString(text)
+
+
+ res.status(200).json({
+ text : reversedText,
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+
+
+}
+
+exports.binary = async(req, res, next) => {
+ try{
+ let text = req.query.text
+
+ if(!text) {
+ res.status(400).json({
+ "error" : true,
+ "code": 400,
+ "message": "text which is to be converted to binary wasn't specified."
+ })
+ return next();
+ }
+
+ let binary = text2Binary(text)
+
+
+ res.status(200).json({
+ "binary" : binary,
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
+
+
+exports.sarcastic = async(req, res, next) => {
+ try{
+ let text = req.query.text
+
+ if(!text) {
+ res.status(400).json({
+ "error" : true,
+ "code": 400,
+ "message": "text which is to be converted to binary wasn't specified."
+ })
+ return next();
+ }
+
+ let sarcastic = sarcasticConverter(text)
+
+
+ res.status(200).json({
+ "sarcastic text" : sarcastic,
+ })
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
\ No newline at end of file
diff --git a/Src/Controllers/View.js b/Src/Controllers/View.js
new file mode 100644
index 0000000..ed978c5
--- /dev/null
+++ b/Src/Controllers/View.js
@@ -0,0 +1,12 @@
+exports.home = async(req, res, next) => {
+ try{
+
+ res.status(200).render('main')
+
+ }catch(error){
+ res.status(500).json({
+ "error": error
+ })
+ }
+}
+
diff --git a/Src/Data/Animals/Cat.json b/Src/Data/Animals/Cat.json
new file mode 100644
index 0000000..34535c6
--- /dev/null
+++ b/Src/Data/Animals/Cat.json
@@ -0,0 +1,18 @@
+[
+ {
+ "image" : "https://cdn2.thecatapi.com/images/1uk.jpg",
+ "fact" : "A cat can spend five or more hours a day grooming himself."
+ },
+ {
+ "image" : "https://cdn2.thecatapi.com/images/cnt.jpg",
+ "fact" : "Cats make about 100 different sounds. Dogs make only about 10."
+ },
+ {
+ "image" : "https://cdn2.thecatapi.com/images/99r.jpg",
+ "fact" : "One reason that kittens sleep so much is because a growth hormone is released only during sleep."
+ },
+ {
+ "image" : "https://cdn2.thecatapi.com/images/1mc.jpg",
+ "fact" : "In an average year, cat owners in the United States spend over $2 billion on cat food."
+ }
+]
\ No newline at end of file
diff --git a/Src/Data/Animals/Dog.json b/Src/Data/Animals/Dog.json
new file mode 100644
index 0000000..489a89b
--- /dev/null
+++ b/Src/Data/Animals/Dog.json
@@ -0,0 +1,18 @@
+[
+ {
+ "image" : "https://images.dog.ceo/breeds/airedale/n02096051_2774.jpg",
+ "fact" : "Two stray dogs in Afghanistan saved 50 American soliders. A Facebook group raised $21,000 to bring the dogs back to the US and reunite them with the soldiers."
+ },
+ {
+ "image" : "https://images.dog.ceo/breeds/elkhound-norwegian/n02091467_4631.jpg",
+ "fact" : "George Washington had 36 dogs–all Foxhounds–with one named Sweetlips."
+ },
+ {
+ "image" : "https://images.dog.ceo/breeds/pointer-german/n02100236_2974.jpg",
+ "fact" : "It’s not so black and white. It’s a myth that dogs only see in black and white. In fact, it’s believed that dogs see primarily in blue, greenish-yellow, yellow and various shades of gray."
+ },
+ {
+ "image" : "https://images.dog.ceo/breeds/spaniel-cocker/n02102318_14892.jpg",
+ "fact" : "Puppies sleep 90 of the day for their first few weeks."
+ }
+]
\ No newline at end of file
diff --git a/Src/Data/Animals/Panda.json b/Src/Data/Animals/Panda.json
new file mode 100644
index 0000000..a85e8b5
--- /dev/null
+++ b/Src/Data/Animals/Panda.json
@@ -0,0 +1,58 @@
+[
+ {
+ "image": "https://static.scientificamerican.com/sciam/cache/file/ACF0A7DC-14E3-4263-93F438F6DA8CE98A_source.jpg?w=590&h=800&896FA922-DF63-4289-86E2E0A5A8D76BE1",
+ "fact" : "Mother pandas keep contact with their cub nearly 100% of the time during their first month - with the cub resting on her front and remaining covered by her paw, arm or head."
+ },
+ {
+ "image": "https://media.nature.com/lw800/magazine-assets/d41586-019-00301-y/d41586-019-00301-y_16427380.jpg",
+ "fact" : "Like domestic cats, giant pandas have vertical slits for pupils."
+ },
+ {
+ "image": "https://www.wwf.org.uk/sites/default/files/styles/gallery_image/public/2019-11/panda_climbing.jpg?h=0e753701&itok=4TLuxgOg",
+ "fact" : "At 5 months old, giant pandas learn how to climb - sometimes practicing by climbing on their mum. "
+ },
+ {
+ "image": "https://www.wwf.org.uk/sites/default/files/styles/gallery_image/public/2019-03/Medium_WW225814.jpg?h=d55a66bd&itok=oJworRip",
+ "fact" : "They have an extended wrist bone that they use like a thumb to help them grip food."
+ },
+ {
+ "image": "https://www.wwf.org.uk/sites/default/files/styles/gallery_image/public/2019-11/bamboo.jpg?h=82f92a78&itok=9cuc2WlL",
+ "fact" : "Giant pandas spend 10-16 hours a day feeding, mainly on bamboo. "
+ },
+ {
+ "image": "https://www.wwf.org.uk/sites/default/files/styles/gallery_image/public/2019-11/panda_eating_0.jpg?h=82f92a78&itok=PQvZThN6",
+ "fact" : "Pandas need at least 2 different bamboo species in their range to avoid starvation"
+ },
+ {
+ "image": "https://www.wwf.org.uk/sites/default/files/styles/gallery_image/public/2019-11/Small_WW177005.jpg?h=6ba1860a&itok=NWJb6zXU",
+ "fact" : "Although pandas are 99% vegetarian their digestive system is typical of a carnivore. For the 1% of their diet that isn't bamboo, pandas eat eggs, small animals, carrion, and forage in farmland for pumpkin, kidney beans, wheat and domestic pig food. "
+ },
+ {
+ "image": "https://www.wwf.org.uk/sites/default/files/styles/gallery_image/public/2016-10/MID_113974.jpg?h=c9068c4b&itok=yTs-fScy",
+ "fact" : "On average, pandas poo 40 times a day."
+ },
+ {
+ "image": "https://media4.s-nbcnews.com/j/newscms/2016_36/1685951/ss-160826-twip-05_8cf6d4cb83758449fd400c7c3d71aa1f.fit-760w.jpg",
+ "fact" : "Pandas are BIG eaters – every day they fill their tummies for up to 12 hours, shifting up to 12 kilograms of bamboo!"
+ },
+ {
+ "image": "https://www.natgeokids.com/wp-content/uploads/2014/04/Panda-facts-3-1.jpg",
+ "fact" : "The giant panda’s scientific name is Ailuropoda melanoleuca, which means “black and white cat-foot”."
+ },
+ {
+ "image": "https://discovery.sndimg.com/content/dam/images/discovery/fullset/2020/3/16/babypanda2_getty.jpg.rend.hgtvcom.616.411.suffix/1584396557688.jpeg",
+ "fact" : "Giant pandas grow to between 1.2m and 1.5m, and weigh between 75kg and 135kg. Scientists aren’t sure how long pandas live in the wild, but in captivity they live to be around 30 years old."
+ },
+ {
+ "image": "https://i.natgeofe.com/n/c94eb6f9-8423-466a-8d15-cac97287105e/01pregnantpanda_16x9.jpg?w=636&h=358",
+ "fact" : "Baby pandas are born pink and measure about 15cm – that’s about the size of a pencil! They are also born blind and only open their eyes six to eight weeks after birth."
+ },
+ {
+ "image": "https://crosstalk.cell.com/hs-fs/hubfs/Images/Jennifer%20Levine/New%20Insights%20into%20pandas,/6990634-panda-hug.jpg?width=2560&height=1600&name=6990634-panda-hug.jpg",
+ "fact" : "Family time! Female pandas give birth to one or two cubs every two years. Cubs stay with their mothers for 18 months before venturing off on their own!"
+ },
+ {
+ "image": "https://www.natgeokids.com/wp-content/uploads/2014/04/Panda-Facts-1-1.jpg",
+ "fact" : "Unlike most other bears, pandas do not hibernate. When winter approaches, they head lower down their mountain homes to warmer temperatures, where they continue to chomp away on bamboo!"
+ }
+]
\ No newline at end of file
diff --git a/Src/Data/Dare.json b/Src/Data/Dare.json
new file mode 100644
index 0000000..a51cb7d
--- /dev/null
+++ b/Src/Data/Dare.json
@@ -0,0 +1,59 @@
+[
+ {
+ "dare": "Select one mobile number blindfolded from your contacts and send one breakup message to him/her. Screenshot the response."
+ },
+ {
+ "dare": "Send next five text messages to your friends using your elbow only."
+ },
+ {
+ "dare": "Text flirt and then send “I love you” to a someone already in a relationship (not married) and screenshot his/her reaction"
+ },
+ {
+ "dare": "Put my picture as your mobile wallpaper for three days."
+ },
+ {
+ "dare": "Send your ugliest selfie."
+ },
+ {
+ "dare": "Make a video call to me and perform belly dance."
+ },
+ {
+ "dare": "Make a voice call to me and sing rhymes."
+ },
+ {
+ "dare": "Send a screenshot of your search history of last 2 days."
+ },
+ {
+ "dare": "Send next five text messages to your friends using your elbow only."
+ },
+ {
+ "dare": "Send a message to your crush saying I’ve lost my condoms in your home please find them."
+ },
+ {
+ "dare": "Wear your dress upside down and send that picture to me."
+ },
+ {
+ "dare": "I’ll give you a person's contact information and send a romantic message to that person."
+ },
+ {
+ "dare": "Send a selfie of yours while keeping your finger in your nose."
+ },
+ {
+ "dare": "Send a video of you dancing."
+ },
+ {
+ "dare": "Call me and sing a song for me."
+ },
+ {
+ "dare": "Set your crush's profile picture as your profile picture."
+ },
+ {
+ "dare": "Send five photo from your gallery."
+ },
+ {
+ "dare": "Select one mobile number blindfolded from your contacts and send one breakup message to him/her. Screenshot the response."
+ },
+ {
+ "dare": "Be my one day boyfriend or girlfriend."
+ }
+]
\ No newline at end of file
diff --git a/Src/Data/Joke.json b/Src/Data/Joke.json
new file mode 100644
index 0000000..ee7f303
--- /dev/null
+++ b/Src/Data/Joke.json
@@ -0,0 +1,22 @@
+[
+ {
+ "joke" : "A DHCP packet walks into a bar and asks for a beer.. Bartender says, \"here, but I’ll need that back in an hour!\"",
+ "type" : "programming"
+ },
+ {
+ "joke" : "Me: Will you be my Valentine?\nGirl: No way\nMe: sudo will you be my Valentine?\nGirl: Yes..yes..yes! Let’s go!",
+ "type" : "programming"
+ },
+ {
+ "joke" : "Girl: Do you drink?\nProgrammer: No.\nGirl: Have Girlfriend?\nProgrammer: No.\nGirl: Then how do you enjoy life?\nProgrammer: I am Programmer",
+ "type" : "programming"
+ },
+ {
+ "joke" : "A Programmer was walking out of door for work, his wife said “while you’re out, buy some milk” and he never came home.",
+ "type" : "programming"
+ },
+ {
+ "joke" : "Boss: What is your address?\nMe: 173.168.15.10\n\nBoss: No, your local address\nMe: 127.0.01\n\nBoss: I mean your physical address\nMe: 29:01:38:62:31:58",
+ "type" : "programming"
+ }
+]
\ No newline at end of file
diff --git a/Src/Data/Memes/dank.json b/Src/Data/Memes/dank.json
new file mode 100644
index 0000000..3e792a0
--- /dev/null
+++ b/Src/Data/Memes/dank.json
@@ -0,0 +1,22 @@
+[
+ {
+ "title": "I Guess I am Useless",
+ "url": "https://preview.redd.it/oplfb1o6a9u61.gif?format=mp4&s=6b4907034431d5a5a2c73240ed115fdfdfa04c50",
+ "category": "dankmemes"
+ },
+ {
+ "title": "I do a bit of trolling",
+ "url": "https://preview.redd.it/7rin7thcp7u61.jpg?width=640&crop=smart&auto=webp&s=fc179e40221de483df8f6481c39b3d7e247cda73",
+ "category": "dankmemes"
+ },
+ {
+ "title": "Very intense situation",
+ "url": "https://i.redd.it/bwemf93x39u61.jpg",
+ "category": "dankmemes"
+ },
+ {
+ "title": "they better be quick",
+ "url": "https://preview.redd.it/kuq29miup8u61.gif?format=mp4&s=931a99034c5e0a255a7d2ef0f2fbd04bf331328e",
+ "category": "dankmemes"
+ }
+]
\ No newline at end of file
diff --git a/Src/Data/Memes/meirl.json b/Src/Data/Memes/meirl.json
new file mode 100644
index 0000000..230a120
--- /dev/null
+++ b/Src/Data/Memes/meirl.json
@@ -0,0 +1,127 @@
+[
+ {
+ "title": "me_irl",
+ "url": "https://i.redd.it/ncc0xq5sfjj61.jpg",
+ "category": "me_irl"
+ },
+ {
+ "title": "me_irl",
+ "url": "https://i.redd.it/q5g8mmhdzcj61.png",
+ "category": "me_irl"
+ },
+ {
+ "title": "me irl",
+ "url": "https://i.redd.it/bv9e6vu8jgj61.jpg",
+ "category": "me irl"
+ },
+ {
+ "title": "Me_irl",
+ "url": "https://i.redd.it/x0uovypdihj61.jpg",
+ "category": "Me_irl"
+ },
+ {
+ "title": "me_irl",
+ "url": "https://i.redd.it/ncc0xq5sfjj61.jpg",
+ "category": "me_irl"
+ },
+ {
+ "title": "me_irl",
+ "url": "https://i.redd.it/7u1ud0pachj61.png",
+ "category": "me_irl"
+ },
+ {
+ "title": "me_irl",
+ "url": "https://i.redd.it/w4qx46lfkgj61.png",
+ "category": "me_irl"
+ },
+ {
+ "title": "Me_irl",
+ "url": "https://i.redd.it/qr7sb1etfij61.jpg",
+ "category": "Me_irl"
+ },
+ {
+ "title": "Me_irl",
+ "url": "https://i.redd.it/5dz5zjassfj61.jpg",
+ "category": "Me_irl"
+ },
+ {
+ "title": "me_irl",
+ "url": "https://i.redd.it/g11vo7rt2jj61.png",
+ "category": "me_irl"
+ },
+ {
+ "title": "me_irl",
+ "url": "https://i.redd.it/w4qx46lfkgj61.png",
+ "category": "me_irl"
+ },
+ {
+ "title": "Me_irl",
+ "url": "https://i.redd.it/k4gs0yj4chj61.jpg",
+ "category": "Me_irl"
+ },
+ {
+ "title": "me_irl",
+ "url": "https://i.redd.it/c64omxs4gfj61.png",
+ "category": "me_irl"
+ },
+ {
+ "title": "me😈irl",
+ "url": "https://i.redd.it/ktqggz3chjj61.jpg",
+ "category": "me_irl"
+ },
+ {
+ "title": "me_irl",
+ "url": "https://i.redd.it/in4e2bdhqhj61.jpg",
+ "category": "me_irl"
+ },
+ {
+ "title": "Me_irl",
+ "url": "https://i.redd.it/qo8zlqzdcdj61.png",
+ "category": "Me_irl"
+ },
+ {
+ "title": "me🥚irl",
+ "url": "https://i.redd.it/x4y7j17rjjj61.jpg",
+ "category": "me_irl"
+ },
+ {
+ "title": "me_irl",
+ "url": "https://i.redd.it/0w1cnxxb3ij61.jpg",
+ "category": "me_irl"
+ },
+ {
+ "title": "me irl",
+ "url": "https://i.redd.it/v2k6pcoyljj61.jpg",
+ "category": "me_irl"
+ },
+ {
+ "title": "me_irl",
+ "url": "https://i.redd.it/h3e70tqpyjj61.jpg",
+ "category": "me_irl"
+ },
+ {
+ "title": "me💻irl",
+ "url": "https://i.redd.it/up18esookbj61.png",
+ "category": "me_irl"
+ },
+ {
+ "title": "me🙄irl",
+ "url": "https://i.redd.it/arzofikzvfj61.png",
+ "category": "me_irl"
+ },
+ {
+ "title": "me_irl",
+ "url": "https://i.redd.it/2b1j91qvhlj61.jpg",
+ "category": "me_irl"
+ },
+ {
+ "title": "me irl",
+ "url": "https://i.redd.it/cd597qz05cj61.jpg",
+ "category": "me irl"
+ },
+ {
+ "title": "me irl",
+ "url": "https://i.redd.it/xnrhz4qa0kj61.jpg",
+ "category": "me_irl"
+ }
+]
\ No newline at end of file
diff --git a/Src/Data/Memes/minion.json b/Src/Data/Memes/minion.json
new file mode 100644
index 0000000..7483335
--- /dev/null
+++ b/Src/Data/Memes/minion.json
@@ -0,0 +1,47 @@
+[
+ {
+ "title": "Respect Your Parents",
+ "url": "https://i.pinimg.com/736x/a9/90/e4/a990e4cd2feab11cc6d05e14b754732e.jpg",
+ "category": "minion"
+ },
+ {
+ "title": "Judge Me Not",
+ "url": "https://media.collegetimes.com/uploads/2016/10/24200002/perfect.jpg",
+ "category": "minion"
+ },
+ {
+ "title": "🤣🤣🤣🤣",
+ "url": "https://data1.ibtimes.co.in/photo/en/full/55316/funny-minions-memes-pictures-funny-quotes.jpg?w=500",
+ "category": "minion"
+ },
+ {
+ "title": "I'm Not Arguing",
+ "url": "https://thefunnybeaver.com/wp-content/uploads/2017/07/minion-argue.jpg",
+ "category": "minion"
+ },
+ {
+ "title": "LOL",
+ "url": "https://i.pinimg.com/originals/45/9e/02/459e0252cf0330241ca6e8dc44fb9b9d.jpg",
+ "category": "minion"
+ },
+ {
+ "title": "Read Out Loud",
+ "url": "https://i.pinimg.com/originals/6a/ed/4d/6aed4deb81e98564213da2d7451265c7.jpg",
+ "category": "minion"
+ },
+ {
+ "title": "10 Things I Know About You",
+ "url": "https://i.pinimg.com/564x/04/1c/53/041c53ea7ddcd41d6de220e25f24ce08.jpg",
+ "category": "minion"
+ },
+ {
+ "title": "Roses are Red, Violets are Blue...",
+ "url": "https://i.pinimg.com/564x/27/a9/63/27a963ebf5b5336eb7d7ed54214d3f56.jpg",
+ "category": "minion"
+ },
+ {
+ "title": "Age is Just a Number..",
+ "url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS607z2pWAUF59uHoDil5M-zXm6vmJorB4fSQ&usqp=CAU",
+ "category": "minion"
+ }
+]
\ No newline at end of file
diff --git a/Src/Data/Quote.json b/Src/Data/Quote.json
new file mode 100644
index 0000000..06a3a53
--- /dev/null
+++ b/Src/Data/Quote.json
@@ -0,0 +1,57 @@
+[
+ {
+ "quote": "The best thing about a boolean is even if you are wrong, you are only off by a bit.",
+ "type" : "programming",
+ "author": "Anonymous"
+ },
+ {
+ "quote": "Without requirements or design, programming is the art of adding bugs to an empty text file. ",
+ "type" : "programming",
+ "author": "Louis Srygley"
+ },
+ {
+ "quote": "Before software can be reusable it first has to be usable.",
+ "type" : "programming",
+ "author": "Ralph Johnson"
+ },
+ {
+ "quote": "The best method for accelerating a computer is the one that boosts it by 9.8 m/s2.",
+ "type" : "programming",
+ "author": "Anonymous"
+ },
+ {
+ "quote": "I think Microsoft named .Net so it wouldn’t show up in a Unix directory listing.",
+ "type" : "programming",
+ "author": "Oktal"
+ },
+ {
+ "quote": "If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.",
+ "type" : "programming",
+ "author": "Gerald Weinberg"
+ },
+ {
+ "quote": "There are two ways to write error-free programs; only the third one works",
+ "type" : "programming",
+ "author": "Alan J. Perlis"
+ },
+ {
+ "quote": "Ready, fire, aim: the fast approach to software development. Ready, aim, aim, aim, aim: the slow approach to software development.",
+ "type" : "programming",
+ "author": "Anonymous"
+ },
+ {
+ "quote": "It’s not a bug – it’s an undocumented feature.",
+ "type" : "programming",
+ "author": "Anonymous"
+ },
+ {
+ "quote": "One man’s crappy software is another man’s full-time job.",
+ "type" : "programming",
+ "author": "Jessica Gaston"
+ },
+ {
+ "quote": "A good programmer is someone who always looks both ways before crossing a one-way street.",
+ "type" : "programming",
+ "author": "Doug Linder"
+ }
+]
\ No newline at end of file
diff --git a/Src/Data/Truth.json b/Src/Data/Truth.json
new file mode 100644
index 0000000..9e671e5
--- /dev/null
+++ b/Src/Data/Truth.json
@@ -0,0 +1,95 @@
+[
+ {
+ "truth": "Have you ever told one of your best friend’s secrets, even if you said you wouldn’t?"
+ },
+ {
+ "truth": "Do you ever talk to yourself in the mirror?"
+ },
+ {
+ "truth": "What the biggest deal breaker for you?"
+ },
+ {
+ "truth": "If you could play a prank on anyone without getting caught, who would you play it on?"
+ },
+ {
+ "truth": "If you wanted to make out on campus, where would you do it?"
+ },
+ {
+ "truth": "Have you ever thought about cheating on your partner?"
+ },
+ {
+ "truth": "What is your favourite sports team?"
+ },
+ {
+ "truth": "Has your partner ever embarrassed you?"
+ },
+ {
+ "truth": "Have you ever made out at school?"
+ },
+ {
+ "truth": "DGj9vEtrq2FAarqjAkjBe9BwmEue1UQmPB"
+ },
+ {
+ "truth": "Have you ever cheated on any test?"
+ },
+ {
+ "truth": "Has anyone ever walked in on you when taking a shit in the bathroom?"
+ },
+ {
+ "truth": "Do you ever try to solve the problems between your best friend and his/her crush?"
+ },
+ {
+ "truth": "Has anyone ever walked in on you when taking a shit in the bathroom?"
+ },
+ {
+ "truth": "Have you ever blamed something that you have done on one of your siblings?"
+ },
+ {
+ "truth": "Who's the hottest teacher at your school?"
+ },
+ {
+ "truth": "Meatloaf says he’d do anything for love, but he won’t do 'that.' What’s your 'that?'"
+ },
+ {
+ "truth": "What is your wildest fantasy?"
+ },
+ {
+ "truth": "What is something that no one else knows about you?"
+ },
+ {
+ "truth": "Who is your crush?"
+ },
+ {
+ "truth": "Do you want to get married one day?"
+ },
+ {
+ "truth": "Have you ever admired your best friend if he/she get good marks in the examination?"
+ },
+ {
+ "truth": "Have you ever cried because you missed your parents so much?"
+ },
+ {
+ "truth": "Have you ever ding dong ditched someone?"
+ },
+ {
+ "truth": "Would you go out with me if I was the last person on earth?"
+ },
+ {
+ "truth": "Do you still take bubble baths?"
+ },
+ {
+ "truth": "Have you ever had a crush on someone that your best friend has dated?"
+ },
+ {
+ "truth": "Who would you never ever want to sit next to in class?"
+ },
+ {
+ "truth": "Who would you ask to prom if you could choose anyone?"
+ },
+ {
+ "truth": "Have you ever pretended to be sick to get out of something? If so, what was it?"
+ },
+ {
+ "truth": "What was the worst score you’ve ever gotten on a test?"
+ }
+]
\ No newline at end of file
diff --git a/Src/Data/Uselessweb.json b/Src/Data/Uselessweb.json
new file mode 100644
index 0000000..c2eb82b
--- /dev/null
+++ b/Src/Data/Uselessweb.json
@@ -0,0 +1,177 @@
+[
+ {
+ "url": "http://www.biglongnow.com/"
+ },
+ {
+ "url": "http://burymewithmymoney.com/"
+ },
+ {
+ "url": "http://dogs.are.the.most.moe/"
+ },
+ {
+ "url": "http://cat-bounce.com/"
+ },
+ {
+ "url": "http://www.partridgegetslucky.com/"
+ },
+ {
+ "url": "http://www.trypap.com/"
+ },
+ {
+ "url": "http://chrismckenzie.com/"
+ },
+ {
+ "url": "http://www.rrrgggbbb.com/"
+ },
+ {
+ "url": "http://www.trashloop.com/"
+ },
+ {
+ "url": "http://randomcolour.com/"
+ },
+ {
+ "url": "http://onemillionlols.com/"
+ },
+ {
+ "url": "http://beesbeesbees.com/"
+ },
+ {
+ "url": "http://dontevenreply.com/"
+ },
+ {
+ "url": "http://www.fallingfalling.com/"
+ },
+ {
+ "url": "http://eelslap.com/"
+ },
+ {
+ "url": "http://weirdorconfusing.com/"
+ },
+ {
+ "url": "http://intotime.com/"
+ },
+ {
+ "url": "https://pointerpointer.com/"
+ },
+ {
+ "url": "http://www.wutdafuk.com/"
+ },
+ {
+ "url": "http://r33b.net/"
+ },
+ {
+ "url": "http://pixelsfighting.com/"
+ },
+ {
+ "url": "http://www.sanger.dk/"
+ },
+ {
+ "url": "http://www.infinitething.com/"
+ },
+ {
+ "url": "https://findtheinvisiblecow.com/"
+ },
+ {
+ "url": "https://theuselessweb.com/"
+ },
+ {
+ "url": "http://hackertyper.com/"
+ },
+ {
+ "url": "https://www.pointerpointer.com/"
+ },
+ {
+ "url": "http://www.staggeringbeauty.com/"
+ },
+ {
+ "url": "http://www.shadyurl.com/"
+ },
+ {
+ "url": "http://dontevenreply.com/"
+ },
+ {
+ "url": "http://shutupandtakemymoney.com/"
+ },
+ {
+ "url": "https://en.wikipedia.org/wiki/List_of_individual_dogs"
+ },
+ {
+ "url": "http://www.drivemeinsane.com/"
+ },
+ {
+ "url": "http://apod.nasa.gov/apod/astropix.html"
+ },
+ {
+ "url": "https://www.duolingo.com/"
+ },
+ {
+ "url": "http://hubski.com/"
+ },
+ {
+ "url": "http://lizardpoint.com/"
+ },
+ {
+ "url": "http://www.musictheory.net/"
+ },
+ {
+ "url": "http://www.sleepyti.me/"
+ },
+ {
+ "url": "http://www.whatshouldireadnext.com/"
+ },
+ {
+ "url": "https://www.onread.com/"
+ },
+ {
+ "url": "http://weavesilk.com/"
+ },
+ {
+ "url": "http://www.ineedaprompt.com/"
+ },
+ {
+ "url": "http://www.thisissand.com/"
+ },
+ {
+ "url": "https://pokemonshowdown.com/"
+ },
+ {
+ "url": "https://snes.party/"
+ },
+ {
+ "url": "http://www.sporcle.com/"
+ },
+ {
+ "url": "http://www.poptropica.com/"
+ },
+ {
+ "url": "http://koalabeast.com/"
+ },
+ {
+ "url": "http://koalabeast.com/"
+ },
+ {
+ "url": "http://orteil.dashnet.org/cookieclicker/"
+ },
+ {
+ "url": "http://www.foddy.net/2010/10/qwop/"
+ },
+ {
+ "url": "https://habitrpg.com/static/front"
+ },
+ {
+ "url": "http://www.flashbynight.com/"
+ },
+
+ {
+ "url": "http://www.partycloud.fm/"
+ },
+ {
+ "url": "http://youarelistening.to/"
+ },
+ {
+ "url": "http://www.incredibox.com/"
+ },
+ {
+ "url": "http://www.doihaveadeadpixel.com/"
+ }
+]
\ No newline at end of file
diff --git a/Src/Data/insults.json b/Src/Data/insults.json
new file mode 100644
index 0000000..de55b68
--- /dev/null
+++ b/Src/Data/insults.json
@@ -0,0 +1,83 @@
+[
+ {
+ "insult" : "Is your ass jealous of all the shit that comes out of your mouth?"
+ },
+ {
+ "insult" : "If you were a vegetable, you'd be a cabbitch."
+ },
+ {
+ "insult" : "I don't exactly hate you but if you were on fire and I had water, I'd drink it."
+ },
+ {
+ "insult" : "I hope one day you choke on the shit you talk."
+ },
+ {
+ "insult" : "Bitch please, your birth certificate is an apology letter from the Condom Factory."
+ },
+ {
+ "insult" : "Life is full of disappointment and i just added you to the list."
+ },
+ {
+ "insult" : "Of course I talk like an idiot, how else would you understand me?"
+ },
+ {
+ "insult" : "I treasure the time I don't spend with you."
+ },
+ {
+ "insult" : "You should introduce your upper lip to your lower lip sometime and shut up."
+ },
+ {
+ "insult" : "If I throw a stick, will you leave?"
+ },
+ {
+ "insult" : "The trash get's picked up tomorrow. Be ready."
+ },
+ {
+ "insult" : "Who sprinkled the bitchy dust?"
+ },
+ {
+ "insult" : "Go darling, buy a brain."
+ },
+ {
+ "insult" : "I'd agree with you but then we'd both be wrong."
+ },
+ {
+ "insult" : "Zombies eat brains. You're safe."
+ },
+ {
+ "insult" : "If ugliness was measured in bricks, you'd be the great wall of china."
+ },
+ {
+ "insult" : "Did you eat an extra bowl of stupid this morning?"
+ },
+ {
+ "insult" : "Merry Kissmyass"
+ },
+ {
+ "insult" : "Mirrors don't speak. Lucky for you, they don't laugh either."
+ },
+ {
+ "insult" : "Were you born on a highway? Because that's where most of the accidents happen."
+ },
+ {
+ "insult" : "I would love to insult you, but I'm afraid I won't do as well as nature did."
+ },
+ {
+ "insult" : "You're as useless as the \"ueue\" in \"queue\"."
+ },
+ {
+ "insult" : "If I wanted to kill myself, I would climb up your ego and jump to your IQ."
+ },
+ {
+ "insult" : "If I had a dollar for every time you said something smart, I'd be broke."
+ },
+ {
+ "insult" : "When you were born, the doctor threw you out of the window and the window threw you back."
+ },
+ {
+ "insult" : "I like your approach. Now let's see your departure."
+ },
+ {
+ "insult" : "You are so fake that even China denied they made you!"
+ }
+]
\ No newline at end of file
diff --git a/Src/Router/Animals.js b/Src/Router/Animals.js
new file mode 100644
index 0000000..ddbe087
--- /dev/null
+++ b/Src/Router/Animals.js
@@ -0,0 +1,19 @@
+const express = require('express')
+const route = express.Router()
+
+const animalController = require('../Controllers/Animals')
+
+route
+ .route('/cat')
+ .get(animalController.cat)
+
+route
+ .route('/dog')
+ .get(animalController.dog)
+
+route
+ .route('/panda')
+ .get(animalController.panda)
+
+
+module.exports = route;
\ No newline at end of file
diff --git a/Src/Router/Images.js b/Src/Router/Images.js
new file mode 100644
index 0000000..a47a9df
--- /dev/null
+++ b/Src/Router/Images.js
@@ -0,0 +1,15 @@
+const express = require('express')
+const route = express.Router()
+
+const imageController = require('../Controllers/Images')
+
+route
+ .route('/delete')
+ .get(imageController.delete)
+
+route
+ .route('/ad')
+ .get(imageController.ad)
+
+
+module.exports = route;
\ No newline at end of file
diff --git a/Src/Router/Meme.js b/Src/Router/Meme.js
new file mode 100644
index 0000000..63f570c
--- /dev/null
+++ b/Src/Router/Meme.js
@@ -0,0 +1,23 @@
+const express = require('express')
+const route = express.Router()
+
+const memeController = require('../Controllers/Meme')
+
+route
+ .route('/meirl')
+ .get(memeController.meirl)
+
+route
+ .route('/minion')
+ .get(memeController.minion)
+
+route
+ .route('/dank')
+ .get(memeController.dank)
+
+route
+ .route('/')
+ .get(memeController.allmeme)
+
+
+module.exports = route;
\ No newline at end of file
diff --git a/Src/Router/Others.js b/Src/Router/Others.js
new file mode 100644
index 0000000..e3e51ef
--- /dev/null
+++ b/Src/Router/Others.js
@@ -0,0 +1,38 @@
+const express = require('express')
+const route = express.Router()
+
+const otherController = require('../Controllers/Others')
+
+route
+ .route('/joke')
+ .get(otherController.joke)
+
+route
+ .route('/insults')
+ .get(otherController.insults)
+
+route
+ .route('/quote')
+ .get(otherController.quotes)
+
+route
+ .route('/uselessweb')
+ .get(otherController.uselessweb)
+
+route
+ .route('/truth')
+ .get(otherController.truth)
+
+route
+ .route('/dare')
+ .get(otherController.dare)
+
+route
+ .route('/number')
+ .get(otherController.number)
+
+route
+ .route('/password')
+ .get(otherController.password)
+
+module.exports = route;
\ No newline at end of file
diff --git a/Src/Router/Text.js b/Src/Router/Text.js
new file mode 100644
index 0000000..e5f1114
--- /dev/null
+++ b/Src/Router/Text.js
@@ -0,0 +1,23 @@
+const express = require('express')
+const route = express.Router()
+
+const textController = require('../Controllers/Text')
+
+route
+ .route('/reverse')
+ .get(textController.reverse)
+
+
+route
+ .route('/binary')
+ .get(textController.binary)
+
+route
+ .route('/sarcastic')
+ .get(textController.sarcastic)
+
+route
+ .route('/shuffle')
+ .get(textController.shuffle)
+
+module.exports = route;
\ No newline at end of file
diff --git a/Src/Router/View.js b/Src/Router/View.js
new file mode 100644
index 0000000..9a58d9c
--- /dev/null
+++ b/Src/Router/View.js
@@ -0,0 +1,16 @@
+const express = require('express')
+const route = express.Router()
+
+const viewController = require('../Controllers/View')
+
+route
+ .route('/')
+ .get(viewController.home)
+
+route
+ .route('/sitemap.xml')
+ .get(function(req, res) {
+ res.sendFile('sitemap.xml', { root: '.'});
+ });
+
+module.exports = route;
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..165b1bf
--- /dev/null
+++ b/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "max-api",
+ "version": "1.0.0",
+ "description": "max api",
+ "main": "./server.js",
+ "scripts": {
+ "start": "nodemon ./server.js",
+ "test": "node ./Test/api.test.js"
+ },
+ "author": "beCoditive",
+ "license": "ISC",
+ "dependencies": {
+ "canvas": "^2.7.0",
+ "canvas-constructor": "^4.1.0",
+ "consolidate": "^0.16.0",
+ "cors": "^2.8.5",
+ "dotenv": "^8.2.0",
+ "ejs": "^3.1.6",
+ "express": "^4.17.1",
+ "express-rate-limit": "^5.2.6",
+ "phin": "^3.5.1",
+ "swig": "^1.4.2"
+ },
+ "devDependencies": {
+ "nodemon": "^2.0.7"
+ }
+}
diff --git a/server.js b/server.js
new file mode 100644
index 0000000..49f5ce4
--- /dev/null
+++ b/server.js
@@ -0,0 +1,42 @@
+const express = require('express')
+const rateLimit = require('express-rate-limit')
+const app = express()
+const cons = require('consolidate');
+const path = require('path');
+
+require('dotenv').config()
+
+const animalRouter = require('./Src/Router/Animals')
+const otherRouter = require('./Src/Router/Others')
+const textRouter = require('./Src/Router/Text')
+const memeRouter = require('./Src/Router/Meme')
+const viewRouter = require('./Src/Router/View')
+const imageRouter = require('./Src/Router/Images')
+
+const limiter = rateLimit({
+ max: 100,
+ windowMs: 60 * 1000,
+ message: 'To Many request from this IP, please try again in an hour!'
+});
+app.use('/v1' , limiter);
+
+app.engine('html', cons.swig)
+app.set('views', path.join(__dirname, 'views'));
+app.set('view engine', 'html');
+
+app.use('/' , viewRouter)
+
+app.use('/v1/animals' , animalRouter)
+app.use('/v1/others' , otherRouter)
+app.use('/v1/text' , textRouter)
+app.use('/v1/meme' , memeRouter)
+app.use('/v1/images' , imageRouter)
+
+app.use('*' , async(req, res, next) => {
+ res.render('404')
+})
+
+
+app.listen(process.env.PORT || 4000, () => {
+ console.log("The API is running...")
+})
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
new file mode 100644
index 0000000..859eced
--- /dev/null
+++ b/sitemap.xml
@@ -0,0 +1,13 @@
+
+