Skip to content

Commit

Permalink
FIXED #10: Add _makeUrl to core.js(school.js _makeUrl removed) for re…
Browse files Browse the repository at this point in the history
…quest to same domain
  • Loading branch information
leegeunhyeok committed Jan 20, 2020
1 parent d39bad6 commit c1e4cb2
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 23 deletions.
30 changes: 10 additions & 20 deletions school.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ class School {
* @constructor
*/
constructor () {
this._request = new core.RequestManager(); // HTTP 요청 관리 객체
this._data = data; // 데이터 정의 객체
this._searchUrl = data.searchUrl; // 검색 URL End-point
this._mealUrl = data.mealUrl; // 급식 URL End-point
this._calendarUrl = data.calendarUrl; // 학사일정 URL End-point
this._requestManager = new core.RequestManager(); // HTTP 요청 관리 객체
this._data = data; // 데이터 정의 객체
this._searchUrl = data.searchUrl; // 검색 URL End-point
this._mealUrl = data.mealUrl; // 급식 URL End-point
this._calendarUrl = data.calendarUrl; // 학사일정 URL End-point

this._schoolType = null; // init한 교육기관 유형 심볼 값
this._schoolRegion = null; // init한 지역별 교육청 주소 심볼 값
Expand All @@ -44,16 +44,6 @@ class School {
}
}

/**
* 해당 지역 교육청의 요청 URL를 생성하여 반환합니다.
* @param {Symbol} region 교육청 관할 지역 심볼
* @param {string} endPoint 데이터 수집 End-Point
*/
_makeUrl (region, endPoint) {
const host = this._data.REGION[region];
return `https://${host}/${endPoint}`;
}

/**
* 월을 확인하여 학기에 맞춰 년도를 변환합니다.
* 3월~내년 2월까지 1학기로 구분하므로 2020년 1월 조회시 2019년 1월로 조회해야함
Expand Down Expand Up @@ -83,6 +73,7 @@ class School {
this._schoolRegion = region;
this._schoolCode = schoolCode;
this._init = true;
this._requestManager.setRegion(region);
}

/**
Expand All @@ -99,7 +90,8 @@ class School {
throw new Error('검색할 학교명을 확인해주세요');
}

return this._request.post(this._makeUrl(region, this._searchUrl), {
this._requestManager.setRegion(region);
return this._requestManager.post(this._searchUrl, {
kraOrgNm: name
})
.then(({ data }) => {
Expand Down Expand Up @@ -149,8 +141,7 @@ class School {

const schulCrseScCode = this._data.EDUTYPE[this._schoolType].toString();
const schulKndScCode = '0' + schulCrseScCode;
const mealRequestUrl = this._makeUrl(this._schoolRegion, this._mealUrl);
return this._request.post(mealRequestUrl, {
return this._requestManager.post(this._mealUrl, {
ay: util.paddingNumber(this._getSemesterYear(year, month)),
mm: util.paddingNumber(month, 2),
schulCode: this._schoolCode,
Expand Down Expand Up @@ -248,10 +239,9 @@ class School {
// 요청을 위한 파라미터 및 URL
const schulCrseScCode = this._data.EDUTYPE[this._schoolType].toString();
const schulKndScCode = '0' + schulCrseScCode;
const calendarRequestUrl = this._makeUrl(this._schoolRegion, this._calendarUrl);

// 학사일정 데이터 요청
return this._request.post(calendarRequestUrl, {
return this._requestManager.post(this._calendarUrl, {
ay: util.paddingNumber(this._getSemesterYear(year, month)),
mm: util.paddingNumber(month, 2),
schulCode: this._schoolCode,
Expand Down
31 changes: 28 additions & 3 deletions src/core/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,17 @@
*/

import axios from 'axios'
import Data from '../../data';
const { data } = Data;

class RequestManager {
constructor () {
// 교육청 교육청 관할 지역
this._region = null;

// 데이터
this._data = data;

// 세션 ID
this._sid = null;

Expand All @@ -16,6 +24,14 @@ class RequestManager {
this._expiresTime = 1000 * 60 * 30;
}

/**
* 교육청 관할 지역 심볼 설정
* @param {Symbol} region 교육청 관할 지역 심볼
*/
setRegion (region) {
this._region = region;
}

/**
* HTTP GET 요청
* @param {string} url 요청 URL
Expand All @@ -25,7 +41,7 @@ class RequestManager {
get (url, config) {
return this._prepare()
.then(() => {
return axios.get(url, config);
return axios.get(this._makeUrl(url), config);
});
}

Expand All @@ -38,10 +54,19 @@ class RequestManager {
post (url, config) {
return this._prepare()
.then(() => {
return axios.post(url, config);
return axios.post(this._makeUrl(url), config);
});
}

/**
* 해당 지역 교육청의 요청 URL를 생성하여 반환합니다.
* @param {string} endPoint 데이터 수집 End-Point
*/
_makeUrl (endPoint) {
const host = this._data.REGION[this._region];
return `https://${host}/${endPoint}`;
}

/**
* 요청 전 세션 확인 진행
* @returns {Promise<void>}
Expand All @@ -68,7 +93,7 @@ class RequestManager {
*/
_reload () {
// 메인 페이지로 접속하여 세션 갱신
return axios.get('https://stu.goe.go.kr/edusys.jsp?page=sts_m40000')
return axios.get(this._makeUrl(this._data.mainUrl))
.then(res => {
// 쿠키에서 세션 ID 추출
const sid = res.headers['set-cookie']
Expand Down

0 comments on commit c1e4cb2

Please sign in to comment.