Showing
6 changed files
with
85 additions
and
34 deletions
... | @@ -12,6 +12,8 @@ | ... | @@ -12,6 +12,8 @@ |
12 | "@testing-library/react": "^13.2.0", | 12 | "@testing-library/react": "^13.2.0", |
13 | "@testing-library/user-event": "^13.5.0", | 13 | "@testing-library/user-event": "^13.5.0", |
14 | "axios": "^0.27.2", | 14 | "axios": "^0.27.2", |
15 | + "body-parser": "^1.20.0", | ||
16 | + "cors": "^2.8.5", | ||
15 | "express": "^4.18.1", | 17 | "express": "^4.18.1", |
16 | "fs": "^0.0.1-security", | 18 | "fs": "^0.0.1-security", |
17 | "localforage": "^1.10.0", | 19 | "localforage": "^1.10.0", |
... | @@ -5568,6 +5570,18 @@ | ... | @@ -5568,6 +5570,18 @@ |
5568 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", | 5570 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", |
5569 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" | 5571 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" |
5570 | }, | 5572 | }, |
5573 | + "node_modules/cors": { | ||
5574 | + "version": "2.8.5", | ||
5575 | + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", | ||
5576 | + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", | ||
5577 | + "dependencies": { | ||
5578 | + "object-assign": "^4", | ||
5579 | + "vary": "^1" | ||
5580 | + }, | ||
5581 | + "engines": { | ||
5582 | + "node": ">= 0.10" | ||
5583 | + } | ||
5584 | + }, | ||
5571 | "node_modules/cosmiconfig": { | 5585 | "node_modules/cosmiconfig": { |
5572 | "version": "7.0.1", | 5586 | "version": "7.0.1", |
5573 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", | 5587 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", |
... | @@ -20602,6 +20616,15 @@ | ... | @@ -20602,6 +20616,15 @@ |
20602 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", | 20616 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", |
20603 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" | 20617 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" |
20604 | }, | 20618 | }, |
20619 | + "cors": { | ||
20620 | + "version": "2.8.5", | ||
20621 | + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", | ||
20622 | + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", | ||
20623 | + "requires": { | ||
20624 | + "object-assign": "^4", | ||
20625 | + "vary": "^1" | ||
20626 | + } | ||
20627 | + }, | ||
20605 | "cosmiconfig": { | 20628 | "cosmiconfig": { |
20606 | "version": "7.0.1", | 20629 | "version": "7.0.1", |
20607 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", | 20630 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", | ... | ... |
... | @@ -7,6 +7,8 @@ | ... | @@ -7,6 +7,8 @@ |
7 | "@testing-library/react": "^13.2.0", | 7 | "@testing-library/react": "^13.2.0", |
8 | "@testing-library/user-event": "^13.5.0", | 8 | "@testing-library/user-event": "^13.5.0", |
9 | "axios": "^0.27.2", | 9 | "axios": "^0.27.2", |
10 | + "body-parser": "^1.20.0", | ||
11 | + "cors": "^2.8.5", | ||
10 | "express": "^4.18.1", | 12 | "express": "^4.18.1", |
11 | "fs": "^0.0.1-security", | 13 | "fs": "^0.0.1-security", |
12 | "localforage": "^1.10.0", | 14 | "localforage": "^1.10.0", |
... | @@ -22,7 +24,7 @@ | ... | @@ -22,7 +24,7 @@ |
22 | "build": "react-scripts build", | 24 | "build": "react-scripts build", |
23 | "test": "react-scripts test", | 25 | "test": "react-scripts test", |
24 | "eject": "react-scripts eject", | 26 | "eject": "react-scripts eject", |
25 | - "server": "nodemon server/server.js" | 27 | + "server": "nodemon -w ./server server/server.js" |
26 | }, | 28 | }, |
27 | "eslintConfig": { | 29 | "eslintConfig": { |
28 | "extends": [ | 30 | "extends": [ | ... | ... |
... | @@ -39,7 +39,7 @@ async function login(id, pw) { | ... | @@ -39,7 +39,7 @@ async function login(id, pw) { |
39 | ) { | 39 | ) { |
40 | return false; | 40 | return false; |
41 | } else { | 41 | } else { |
42 | - // await page.goto('https://khcanvas.khu.ac.kr'); | 42 | + // 내 강의실 |
43 | let selector = | 43 | let selector = |
44 | "#visual > div > div.xn-main-login-container > div:nth-child(2) > div.xn-main-link-wrap.xn-main-lms-link-wrap > a"; | 44 | "#visual > div > div.xn-main-login-container > div:nth-child(2) > div.xn-main-link-wrap.xn-main-lms-link-wrap > a"; |
45 | await page.waitForSelector(selector); | 45 | await page.waitForSelector(selector); |
... | @@ -50,16 +50,13 @@ async function login(id, pw) { | ... | @@ -50,16 +50,13 @@ async function login(id, pw) { |
50 | } catch (err) { | 50 | } catch (err) { |
51 | console.log(err); | 51 | console.log(err); |
52 | } | 52 | } |
53 | - return result; | ||
54 | } | 53 | } |
55 | 54 | ||
56 | //function that get your peed for your Ecampus calendar | 55 | //function that get your peed for your Ecampus calendar |
57 | async function getPeed(page) { | 56 | async function getPeed(page) { |
58 | - console.log("getPeed"); | ||
59 | - | ||
60 | selector = "#global_nav_calendar_link > div.menu-item-icon-container > svg"; | 57 | selector = "#global_nav_calendar_link > div.menu-item-icon-container > svg"; |
61 | await page.waitForSelector(selector); | 58 | await page.waitForSelector(selector); |
62 | - await page.click(selector); | 59 | + await Promise.all([page.click(selector), page.waitForNavigation()]); |
63 | 60 | ||
64 | selector = "#calendar-feed > button"; | 61 | selector = "#calendar-feed > button"; |
65 | await page.waitForSelector(selector); | 62 | await page.waitForSelector(selector); |
... | @@ -86,7 +83,6 @@ async function getPeed(page) { | ... | @@ -86,7 +83,6 @@ async function getPeed(page) { |
86 | } | 83 | } |
87 | 84 | ||
88 | async function getSubjects(page) { | 85 | async function getSubjects(page) { |
89 | - console.log("getSubjects"); | ||
90 | await page.click( | 86 | await page.click( |
91 | "#global_nav_courses_link > div.menu-item-icon-container > svg" | 87 | "#global_nav_courses_link > div.menu-item-icon-container > svg" |
92 | ); | 88 | ); | ... | ... |
server/routers/login.js
0 → 100644
1 | +const express = require("express"); | ||
2 | +const router = express.Router(); | ||
3 | + | ||
4 | +const { getPeed, getSubjects, login } = require("../libs/E_Campus.js"); | ||
5 | + | ||
6 | +router.post("/", async (req, res) => { | ||
7 | + console.log(`listened /login ${req.body.id} ${req.body.pw}`); | ||
8 | + const page = await login(req.body.id, req.body.pw); | ||
9 | + if (page) { | ||
10 | + const peed = await getPeed(page); | ||
11 | + res.send(peed); | ||
12 | + } else res.send("failed"); | ||
13 | +}); | ||
14 | + | ||
15 | +module.exports = router; |
1 | const express = require("express"); | 1 | const express = require("express"); |
2 | -const { getPeed, getSubjects, login } = require("./libs/E_Campus.js"); | 2 | +const bodyParser = require("body-parser"); |
3 | const fs = require("fs"); | 3 | const fs = require("fs"); |
4 | +const cors = require("cors"); | ||
5 | +const { getPeed, getSubjects, login } = require("./libs/E_Campus.js"); | ||
6 | + | ||
7 | +const loginRouter = require("./routers/login"); | ||
4 | 8 | ||
5 | const app = express(); | 9 | const app = express(); |
6 | -const router = express.Router(); | ||
7 | 10 | ||
8 | -router.get("/", (req, res) => { | 11 | +app.use( |
9 | - console.log(req); | 12 | + cors({ |
10 | - res.header("Access-Control-Allow-Origin", "http://localhost:3000"); | 13 | + origin: "http://localhost:3000", |
11 | - res.send({ test: "Hi" }); | 14 | + credentials: true, |
15 | + }) | ||
16 | +); | ||
17 | +app.use(bodyParser.urlencoded({ extended: false })); | ||
18 | +app.use(bodyParser.json()); | ||
19 | + | ||
20 | +app.post("/", (req, res) => { | ||
21 | + res.send({ body: req.body }); | ||
12 | console.log("listened /"); | 22 | console.log("listened /"); |
13 | }); | 23 | }); |
14 | 24 | ||
15 | -app.use("/", router); | 25 | +app.use("/login", loginRouter); |
16 | - | 26 | + |
17 | -fs.readFile("server/libs/login.pvdata", "utf8", async (err, data) => { | 27 | +// fs.readFile("server/libs/login.pvdata", "utf8", async (err, data) => { |
18 | - if (err) { | 28 | +// if (err) { |
19 | - console.error(err); | 29 | +// console.error(err); |
20 | - console.log("server/libs/login.pvdata에 ID\\nPW를 작성"); | 30 | +// console.log("server/libs/login.pvdata에 ID\\nPW를 작성"); |
21 | - return; | 31 | +// return; |
22 | - } | 32 | +// } |
23 | - const page = await login(...data.split("\r\n")); | 33 | +// const page = await login(...data.split("\r\n")); |
24 | - if (page) { | 34 | +// if (page) { |
25 | - const feed = await getPeed(page); | 35 | +// const feed = await getPeed(page); |
26 | - const subjects = await getSubjects(page); | 36 | +// const subjects = await getSubjects(page); |
27 | - console.log({ feed, subjects }); | 37 | +// console.log({ feed, subjects }); |
28 | - | ||
29 | - app.listen(3001, function () { | ||
30 | - console.log("listening on 3001"); | ||
31 | - }); | ||
32 | - } else console.log("Incorrect user ID or password."); | ||
33 | -}); | ||
34 | 38 | ||
35 | // app.listen(3001, function () { | 39 | // app.listen(3001, function () { |
36 | // console.log("listening on 3001"); | 40 | // console.log("listening on 3001"); |
37 | // }); | 41 | // }); |
42 | +// } else console.log("Incorrect user ID or password."); | ||
43 | +// }); | ||
44 | + | ||
45 | +app.listen(3001, function () { | ||
46 | + console.log("listening on 3001"); | ||
47 | +}); | ... | ... |
... | @@ -35,8 +35,13 @@ const Debug = () => { | ... | @@ -35,8 +35,13 @@ const Debug = () => { |
35 | break; | 35 | break; |
36 | case "server": | 36 | case "server": |
37 | axios | 37 | axios |
38 | - .get("http://localhost:3001/") | 38 | + .post("http://localhost:3001/login/", { |
39 | - .then((res) => setState({ ...state, output: res.data.test })); | 39 | + id: state.input1, |
40 | + pw: state.input2, | ||
41 | + }) | ||
42 | + .then((res) => { | ||
43 | + setState({ ...state, output: res.data }); | ||
44 | + }); | ||
40 | return; | 45 | return; |
41 | default: | 46 | default: |
42 | } | 47 | } | ... | ... |
-
Please register or login to post a comment