THE CAMP Unofficial Library
대국민 국군 소통 서비스 더 캠프를 사이트 외부에서 이용하기 위해 만든 비공식 라이브러리입니다. 현재 인터넷 편지 발송을 중심으로 구현되어 있습니다. 매주 월요일 0시 API의 유효성을 체크합니다. passing
상태가 아니라면 API가 동작하지 않는다는 의미이니 참고해주세요.
Installation
$ npm install the-camp-lib --save
Usage
const thecamp = require('the-camp-lib');
import * as thecamp from 'the-camp-lib';
async function main() {
const soldier = new thecamp.Soldier(
'박뫄뫄',
'20011129',
'20200829',
'예비군인/훈련병',
'육군',
'육군훈련소(00연대)',
thecamp.SoldierRelationship.FRIEND,
);
const client = new thecamp.Client();
await client.login('user@email.com', 'password');
await client.addSoldier(soldier);
const [trainee] = await client.fetchSoldiers(soldier);
const message = new thecamp.Message('Test title', 'Test content', trainee);
await client.sendMessage(soldier, message);
}
Development
저장소를 클론하고 패키지를 설치합니다.
$ git clone https://github.com/ParkSB/the-camp-lib.git
$ cd the-camp-lib
$ npm install
모든 코드는 src
디렉토리 아래에 있습니다. npm test
명령으로 API 유효성을 체크하고 유닛 테스트를 실행할 수 있습니다. npm run test:unit
명령과 npm run test:health-check
명령으로 유닛 테스트와 API 체크를 따로 실행할 수도 있습니다. 또한 test/feature
디렉토리 하위에 테스트할 코드를 작성한 뒤 ts-node filename.ts
를 실행하는 방식으로 실제 동작을 테스트할 수 있습니다.
쉘에서 npm run build
를 실행하면 dist
디렉토리에 빌드된 파일이 만들어집니다. test
디렉토리 하위에 예시 디렉토리를 만든 뒤 npm init
, npm install ../../ --save
를 실행하면 해당 디렉토리에 패키지가 설치됩니다. 이렇게 하면 로컬에서 배포 버전을 테스트할 수 있습니다.
Specifications
라이브러리를 사용하기 전에 더 캠프에 가입된 계정이 필요합니다.
Models
interface Cookie
세션 식별을 위한 쿠키.
class Soldier
군인 정보.
missSoldierClassCdNm: SoldierClassName
- 성분missSoldierClassCd: SoldierClass
- 성분 코드grpCdNm: SoldierGroupName
- 군종grpCd: SoldierGroup
- 군종 코드name: string
- 이름birth: string
- 생년월일enterDate: string
- 입열 날짜trainUnitCd: SoldierUnit
- 입영부대 코드trainUnitNm: SoldierUnitNm
- 입영부대missSoldierRelationshipCd: SoldierRelationship
- 관계 코드traineeMgrSeq?: string
- 훈련병 식별 코드
Constructor
name: string
- 이름 (e.g., '박뫄뫄'
)birth: string
- 생년월일 (e.g., '20011129'
)enterDate: string
- 입영날짜 (e.g., '20200829'
)className: SoldierClassName
- 성분 (e.g., '예비군인/훈련병'
)groupName: SoldierGroupName
- 군종 (e.g., '육군'
)unitName: SoldierUnitName
- 입영부대 (e.g., '28사단'
, '육군훈련소(25연대)'
)relationship: SoldierRelationship
- 관계 (e.g., SoldierRelationship.FRIEND
)
enum SoldierClass
성분 코드.
'예비군인/훈련병' = '0000490001'
'병사' = '0000490002'
'장교' = '0000490003'
'부사관' = '0000490004'
'군무원' = '0000490005'
인터넷 편지는 예비군인/훈련병
에게만 발송할 수 있습니다.
enum SoldierGroup
군종 코드.
'육군' = '0000010001'
'해군' = '0000010002'
'공군' = '0000010003'
'해병대' = '0000010004'
인터넷 편지는 육군
에게만 발송할 수 있습니다.
enum SoldierRelationship
관계 코드.
PARENT = '0000420001'
- 부모SPOUSE = '0000420003'
- 배우자SIBLING = '0000420002'
- 형제/자매FRIEND = '0000420006'
- 친구/지인LOVER = '0000420005'
- 애인RELATIVE = '0000420004'
- 친척FAN = '0000420007'
- 팬
class Message
인터넷 편지 정보.
sympathyLetterSubject: string
- 편지 제목sympathyLetterContent: string
- 편지 내용 (1500자 이하)traineeMgrSeq: string
- 훈련병 식별 코드
Constructor
sympathyLetterSubject: string
- 편지 제목 (e.g., 'Title'
)sympathyLetterContent: string
- 편지 내용 (e.g., 'Content'
, '<i>Content</i>'
)traineeMgrSeq: string
- 훈련병 식별 코드 (e.g., soldier.getTraineeMgrSeq()!
)
Services
login(id: string, password: string)
더 캠프에 로그인해 세션 쿠키를 얻는다.
- Parameters
id: string
- 더 캠프 계정 이메일password: string
- 더 캠프 계정 비밀번호
- Return value
Promise<Cookie>
- 세션 식별을 위한 쿠키
addSoldier(cookies: Cookie, soldier: Soldier)
계정에 군인을 추가한다.
- Parameters
cookies: Cookie
- 세션 식별을 위한 쿠키soldier: Soldier
- 군인 정보
- Return value
Promise<boolean>
- 추가에 성공하거나, 이미 해당 군인이 존재하면 true
를 반환한다.
fetchSoldier(cookies: Cookie, soldier: Soldier)
군인 정보를 가져온다.
- Parameters
cookies: Cookie
- 세션 식별을 위한 쿠키soldier: Soldier
- 군인 정보
- Return value
Promise<Soldier[]>
- 계정에 추가한 군인 목록 중 매개변수로 전달한 군인과 이름, 생일, 입영 날짜, 입영 부대 코드가 일치하는 Soldier
리스트를 반환한다.
sendMessage(cookies: Cookie, trainee: Soldier, message: Message)
인터넷 편지를 전송한다.
- Parameters
cookies: Cookie
- 세션 식별을 위한 쿠키trainee: Trainee
- 훈련병 정보message: Message
- 인터넷 편지 정보
- Return value
Promise<boolean>
- 전송에 성공하면 true
를 반환한다.
Examples
Other implementations
License
This project is licensed under the MIT License - see the LICENSE file for details.