Skip to content

Commit 9f2ee88

Browse files
authored
Merge pull request #14 from code-yeongyu/refactor-imports
`Naver` 앱의 naming 을 변경하고, `rxjs` 의존성을 제거합니다.
2 parents 38fc8e1 + 582b1b3 commit 9f2ee88

File tree

13 files changed

+44
-148
lines changed

13 files changed

+44
-148
lines changed

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
{
2-
"editor.tabSize": 2
2+
"editor.tabSize": 2,
3+
"cSpell.words": ["captchaimg", "catcha", "Interactor", "networkidle"]
34
}

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ import { NaverApp } from "trackpurchase";
3838
const browser = await puppeteer.launch();
3939
const page = await browser.newPage();
4040

41-
const module = NaverApp.ModuleFactory.create(page);
42-
const crawlService = new NaverApp.Service(module);
41+
const module = NaverApp.NaverModuleFactory.create(page);
42+
const crawlService = new NaverApp.NaverService(module);
4343

4444
await crawlService.normalLogin(id, password, 100);
4545
const history = await crawlService.getHistory();

example/naver/printPaymentHistory.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ const printNaverPayHistory = async (id: string, password: string) => {
1515
await page.setViewport({ height: 800, width: 1200 });
1616
await page.setUserAgent(MOBILE_UA);
1717

18-
const module = NaverApp.ModuleFactory.create(page);
19-
const crawlService = new NaverApp.Service(module);
18+
const module = NaverApp.NaverModuleFactory.create(page);
19+
const crawlService = new NaverApp.NaverService(module);
2020

2121
await crawlService.normalLogin(id, password, 100);
2222

example/naver/reactivelyPrintPaymentHistory.ts

Lines changed: 0 additions & 73 deletions
This file was deleted.

package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "trackpurchase",
3-
"version": "1.2.0",
3+
"version": "2.0.0",
44
"main": "dist/index.js",
55
"license": "MIT",
66
"repository": {
@@ -35,8 +35,7 @@
3535
},
3636
"dependencies": {
3737
"axios": "^0.25.0",
38-
"puppeteer": "^12.0.1",
39-
"rxjs": "^7.5.2"
38+
"puppeteer": "^12.0.1"
4039
},
4140
"devDependencies": {
4241
"@babel/core": "^7.16.5",

src/app/naver/index.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
import { NaverModule } from "./module";
2-
import ModuleFactory from "./moduleFactory";
3-
import URLChanger from "./urlChanger";
4-
import PageInteractor, { LoginEvent, CaptchaStatus } from "./pageInteractor";
5-
import Service from "./service";
2+
import { NaverModuleFactory } from "./moduleFactory";
3+
import { NaverURLChanger } from "./urlChanger";
4+
import {
5+
LoginEvent,
6+
CaptchaStatus,
7+
NaverPageInteractor,
8+
} from "./pageInteractor";
9+
import { NaverService } from "./service";
610
import { NaverScraper } from "./scraper";
711
import { NaverParser } from "./parser";
812

913
export {
1014
NaverModule,
11-
ModuleFactory,
12-
URLChanger,
13-
PageInteractor,
14-
Service,
15+
NaverModuleFactory,
16+
NaverURLChanger,
17+
NaverPageInteractor,
18+
NaverService,
1519
LoginEvent,
1620
CaptchaStatus,
1721
NaverScraper,

src/app/naver/module.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
1-
import { URLChanger, PageInteractor, NaverScraper, NaverParser } from ".";
1+
import {
2+
NaverURLChanger,
3+
NaverPageInteractor,
4+
NaverScraper,
5+
NaverParser,
6+
} from ".";
27

3-
export default interface Module {
4-
readonly urlChanger: URLChanger;
5-
readonly pageInteractor: PageInteractor;
8+
export interface NaverModule {
9+
readonly urlChanger: NaverURLChanger;
10+
readonly pageInteractor: NaverPageInteractor;
611
readonly scraper: NaverScraper;
712
readonly parser: NaverParser;
813
}

src/app/naver/moduleFactory.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import puppeteer from "puppeteer";
22
import {
3-
Module,
4-
URLChanger,
5-
PageInteractor,
3+
NaverModule,
4+
NaverURLChanger,
5+
NaverPageInteractor,
66
NaverScraper,
77
NaverParser,
88
} from ".";
99

10-
export default class ModuleFactory {
11-
static create(page: puppeteer.Page): Module {
12-
const urlChanger = new URLChanger(page);
13-
const pageInteractor = new PageInteractor(page);
10+
export class NaverModuleFactory {
11+
static create(page: puppeteer.Page): NaverModule {
12+
const urlChanger = new NaverURLChanger(page);
13+
const pageInteractor = new NaverPageInteractor(page);
1414
const scraper = new NaverScraper();
1515
const parser = new NaverParser();
1616

src/app/naver/pageInteractor.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import puppeteer from "puppeteer";
2-
import { ElementParser } from ".";
32

43
export type LoginEvent =
54
| "success"
@@ -12,7 +11,7 @@ export interface CaptchaStatus {
1211
readonly question: string;
1312
}
1413

15-
export default class PageInteractor {
14+
export class NaverPageInteractor {
1615
constructor(private readonly page: puppeteer.Page) {
1716
this.page = page;
1817
}

src/app/naver/service.ts

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,10 @@
11
import { PaymentHistory } from "app/common";
22
import { CommonResponse } from "app/common/types/response";
3-
import {
4-
concat,
5-
defer,
6-
distinctUntilChanged,
7-
from,
8-
interval,
9-
mergeMap,
10-
takeWhile,
11-
} from "rxjs";
12-
import { Module } from ".";
3+
import { NaverModule } from ".";
134

14-
export default class Service {
5+
export class NaverService {
156
cookies?: string;
16-
constructor(private readonly module: Module) {
7+
constructor(private readonly module: NaverModule) {
178
this.module = module;
189
}
1910

@@ -23,28 +14,10 @@ export default class Service {
2314
this.cookies = await this.module.pageInteractor.getCookies();
2415
}
2516

26-
interactiveLogin(id: string, password: string, delay?: number) {
27-
const login$ = defer(() => from(this.normalLogin(id, password, delay)));
28-
const loginStatus$ = interval(500)
29-
.pipe(mergeMap(() => this.module.pageInteractor.getLoginStatus()))
30-
.pipe(
31-
distinctUntilChanged(),
32-
takeWhile((loginStatus) => loginStatus !== "success")
33-
);
34-
const captchaStatus$ = interval(500)
35-
.pipe(mergeMap(() => this.module.pageInteractor.getCaptchaStatus()))
36-
.pipe(
37-
distinctUntilChanged((a, b) => a?.question === b?.question),
38-
takeWhile((captchaStatus) => captchaStatus !== null)
39-
);
40-
41-
const result$ = concat(login$, captchaStatus$, loginStatus$);
42-
return result$;
43-
}
44-
4517
private async isResponseValid(response: CommonResponse) {
4618
return response.status === 200;
4719
}
20+
4821
private async getHistoryResult(response: CommonResponse) {
4922
if (!this.isResponseValid(response)) {
5023
throw new Error(`Invalid response: ${response.status} ${response.data}`);

src/app/naver/urlChanger.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import URLChanger from "./urlChanger";
1+
import { NaverURLChanger } from "./urlChanger";
22

33
describe("URLChanger", () => {
44
describe("moveToLoginURL", () => {
55
it("Should move page to login", async () => {
66
// given
7-
const urlChanger = new URLChanger(page);
7+
const urlChanger = new NaverURLChanger(page);
88
const pageSpy = jest.spyOn(page, "goto");
99

1010
// when

src/app/naver/urlChanger.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import puppeteer from "puppeteer";
22

3-
export default class URLChanger {
3+
export class NaverURLChanger {
44
constructor(private readonly page: puppeteer.Page) {
55
this.page = page;
66
}

yarn.lock

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4215,13 +4215,6 @@ rxjs@^7.1.0:
42154215
dependencies:
42164216
tslib "~2.1.0"
42174217

4218-
rxjs@^7.5.2:
4219-
version "7.5.2"
4220-
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.2.tgz#11e4a3a1dfad85dbf7fb6e33cbba17668497490b"
4221-
integrity sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==
4222-
dependencies:
4223-
tslib "^2.1.0"
4224-
42254218
safe-buffer@~5.1.1:
42264219
version "5.1.2"
42274220
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
@@ -4570,11 +4563,6 @@ tsc@^2.0.3:
45704563
resolved "https://registry.yarnpkg.com/tsc/-/tsc-2.0.3.tgz#037fe579e3bd67a5cbdaa604b43c6c1991b04bef"
45714564
integrity sha512-SN+9zBUtrpUcOpaUO7GjkEHgWtf22c7FKbKCA4e858eEM7Qz86rRDpgOU2lBIDf0fLCsEg65ms899UMUIB2+Ow==
45724565

4573-
tslib@^2.1.0:
4574-
version "2.3.1"
4575-
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
4576-
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
4577-
45784566
tslib@~2.1.0:
45794567
version "2.1.0"
45804568
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"

0 commit comments

Comments
 (0)