Oneted11 / int-jnr

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Pesapal junior-dev interview exercises

I chose the first exercise which is the http server I built it in nodejs Began with inbuilt modules then moved to expressjs to make hosting with https easier

It is currently hosted here

I also tried out the dictionary exercise as can be seen in ./websrapper/scrapper.js

It works well but needs improvement on data cleaning

How to run locally

Prerequisites

  • node and npm installed
  • install node modules(within the folder with package.json)
npm install

web server

node ./https-server/server.js

web scrapper

node ./web-scraper/scrapper.js

web server code

//import necessary express
const express = require("express");
//create an instance of express
const app = express();
//create port variable for easier config down the line
port = 8080;
//create a varible to store the response we will send
const requestListener = function (req, res) {
  //http code signifying success
  res.writeHead(200);
  //actual response
  res.end("Hello, World!");
};
//the endpoint that has been mapped
app.get("/", requestListener);
//setup server listenning port and initialise server at thta port
app.listen(process.env.PORT || port, () => {
  console.log(`Example app listening on port ${process.env.PORT || port}`);
});

scrapper.js code

// import puppeteer
const puppeteer = require("puppeteer");
// create a logger for debugging
const logger = (stuff) => console.log(stuff);
// abstract away the website into a named variable
let website = "https://en.wikipedia.org/wiki/2022_Afghanistan_earthquake";

// function to get all text
let rawText;
const getAllText = async () => {
  //create intance of puppeteer
  const browser = await puppeteer.launch({
    headless: true,
  });
  const page = (await browser.pages())[0];
  await page.goto(website);
  //extraction logic, might change a bunch of times
  const extractedText = await page.$eval("*", (el) => el.innerText);
  // format extracted text into a clean-ish array
  const textArray = extractedText
    .trim()
    .toLowerCase()
    // .replace("\n\n", "")
    .replace("\n", " ")
    .replace(/['"]+/g, "")
    .split(` `);
  return textArray;
  //close the browser instance once done
  await browser.close();
};
const wordArray = getAllText();
//wait for all promises to resolve so as to manipulate data
Promise.all([wordArray]).then((values) => {
  //   logger(
  //     "got here **********************************************************************"
  //   );
  logger(values[0]);
  const data = values[0];
  // new set data
  const counts = {};
  for (const word of data) {
    counts[word] = counts[word] ? counts[word] + 1 : 1;
  }
  logger(counts);
});

About


Languages

Language:JavaScript 100.0%