@geonheeye/dooray-mcp 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +149 -0
- package/dist/api/client.d.ts +85 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +272 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/common.d.ts +14 -0
- package/dist/api/common.d.ts.map +1 -0
- package/dist/api/common.js +25 -0
- package/dist/api/common.js.map +1 -0
- package/dist/api/drive.d.ts +22 -0
- package/dist/api/drive.d.ts.map +1 -0
- package/dist/api/drive.js +86 -0
- package/dist/api/drive.js.map +1 -0
- package/dist/api/messenger.d.ts +56 -0
- package/dist/api/messenger.d.ts.map +1 -0
- package/dist/api/messenger.js +49 -0
- package/dist/api/messenger.js.map +1 -0
- package/dist/api/projects.d.ts +147 -0
- package/dist/api/projects.d.ts.map +1 -0
- package/dist/api/projects.js +485 -0
- package/dist/api/projects.js.map +1 -0
- package/dist/api/wiki.d.ts +38 -0
- package/dist/api/wiki.d.ts.map +1 -0
- package/dist/api/wiki.js +139 -0
- package/dist/api/wiki.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +736 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/common/get-my-member-info.d.ts +29 -0
- package/dist/tools/common/get-my-member-info.d.ts.map +1 -0
- package/dist/tools/common/get-my-member-info.js +95 -0
- package/dist/tools/common/get-my-member-info.js.map +1 -0
- package/dist/tools/drive/copy-drive-file.d.ts +62 -0
- package/dist/tools/drive/copy-drive-file.d.ts.map +1 -0
- package/dist/tools/drive/copy-drive-file.js +91 -0
- package/dist/tools/drive/copy-drive-file.js.map +1 -0
- package/dist/tools/drive/create-drive-folder.d.ts +55 -0
- package/dist/tools/drive/create-drive-folder.d.ts.map +1 -0
- package/dist/tools/drive/create-drive-folder.js +91 -0
- package/dist/tools/drive/create-drive-folder.js.map +1 -0
- package/dist/tools/drive/delete-drive-file.d.ts +48 -0
- package/dist/tools/drive/delete-drive-file.d.ts.map +1 -0
- package/dist/tools/drive/delete-drive-file.js +87 -0
- package/dist/tools/drive/delete-drive-file.js.map +1 -0
- package/dist/tools/drive/download-drive-file.d.ts +55 -0
- package/dist/tools/drive/download-drive-file.d.ts.map +1 -0
- package/dist/tools/drive/download-drive-file.js +160 -0
- package/dist/tools/drive/download-drive-file.js.map +1 -0
- package/dist/tools/drive/get-drive-file-list.d.ts +77 -0
- package/dist/tools/drive/get-drive-file-list.d.ts.map +1 -0
- package/dist/tools/drive/get-drive-file-list.js +89 -0
- package/dist/tools/drive/get-drive-file-list.js.map +1 -0
- package/dist/tools/drive/get-drive-file-meta.d.ts +41 -0
- package/dist/tools/drive/get-drive-file-meta.d.ts.map +1 -0
- package/dist/tools/drive/get-drive-file-meta.js +74 -0
- package/dist/tools/drive/get-drive-file-meta.js.map +1 -0
- package/dist/tools/drive/get-drive-list.d.ts +63 -0
- package/dist/tools/drive/get-drive-list.d.ts.map +1 -0
- package/dist/tools/drive/get-drive-list.js +84 -0
- package/dist/tools/drive/get-drive-list.js.map +1 -0
- package/dist/tools/drive/move-drive-file.d.ts +55 -0
- package/dist/tools/drive/move-drive-file.d.ts.map +1 -0
- package/dist/tools/drive/move-drive-file.js +92 -0
- package/dist/tools/drive/move-drive-file.js.map +1 -0
- package/dist/tools/drive/rename-drive-file.d.ts +55 -0
- package/dist/tools/drive/rename-drive-file.d.ts.map +1 -0
- package/dist/tools/drive/rename-drive-file.js +88 -0
- package/dist/tools/drive/rename-drive-file.js.map +1 -0
- package/dist/tools/drive/update-drive-file.d.ts +55 -0
- package/dist/tools/drive/update-drive-file.d.ts.map +1 -0
- package/dist/tools/drive/update-drive-file.js +119 -0
- package/dist/tools/drive/update-drive-file.js.map +1 -0
- package/dist/tools/drive/upload-drive-file.d.ts +55 -0
- package/dist/tools/drive/upload-drive-file.d.ts.map +1 -0
- package/dist/tools/drive/upload-drive-file.js +118 -0
- package/dist/tools/drive/upload-drive-file.js.map +1 -0
- package/dist/tools/messenger/get-channel-messages.d.ts +55 -0
- package/dist/tools/messenger/get-channel-messages.d.ts.map +1 -0
- package/dist/tools/messenger/get-channel-messages.js +115 -0
- package/dist/tools/messenger/get-channel-messages.js.map +1 -0
- package/dist/tools/messenger/get-channels.d.ts +30 -0
- package/dist/tools/messenger/get-channels.d.ts.map +1 -0
- package/dist/tools/messenger/get-channels.js +87 -0
- package/dist/tools/messenger/get-channels.js.map +1 -0
- package/dist/tools/messenger/send-channel-message.d.ts +48 -0
- package/dist/tools/messenger/send-channel-message.d.ts.map +1 -0
- package/dist/tools/messenger/send-channel-message.js +108 -0
- package/dist/tools/messenger/send-channel-message.js.map +1 -0
- package/dist/tools/messenger/send-direct-message.d.ts +48 -0
- package/dist/tools/messenger/send-direct-message.d.ts.map +1 -0
- package/dist/tools/messenger/send-direct-message.js +112 -0
- package/dist/tools/messenger/send-direct-message.js.map +1 -0
- package/dist/tools/projects/create-project-template.d.ts +305 -0
- package/dist/tools/projects/create-project-template.d.ts.map +1 -0
- package/dist/tools/projects/create-project-template.js +262 -0
- package/dist/tools/projects/create-project-template.js.map +1 -0
- package/dist/tools/projects/create-tag.d.ts +55 -0
- package/dist/tools/projects/create-tag.d.ts.map +1 -0
- package/dist/tools/projects/create-tag.js +134 -0
- package/dist/tools/projects/create-tag.js.map +1 -0
- package/dist/tools/projects/create-task-comment.d.ts +92 -0
- package/dist/tools/projects/create-task-comment.d.ts.map +1 -0
- package/dist/tools/projects/create-task-comment.js +171 -0
- package/dist/tools/projects/create-task-comment.js.map +1 -0
- package/dist/tools/projects/create-task.d.ts +198 -0
- package/dist/tools/projects/create-task.d.ts.map +1 -0
- package/dist/tools/projects/create-task.js +230 -0
- package/dist/tools/projects/create-task.js.map +1 -0
- package/dist/tools/projects/delete-attachment.d.ts +55 -0
- package/dist/tools/projects/delete-attachment.d.ts.map +1 -0
- package/dist/tools/projects/delete-attachment.js +115 -0
- package/dist/tools/projects/delete-attachment.js.map +1 -0
- package/dist/tools/projects/delete-project-template.d.ts +48 -0
- package/dist/tools/projects/delete-project-template.d.ts.map +1 -0
- package/dist/tools/projects/delete-project-template.js +108 -0
- package/dist/tools/projects/delete-project-template.js.map +1 -0
- package/dist/tools/projects/download-attachment.d.ts +62 -0
- package/dist/tools/projects/download-attachment.d.ts.map +1 -0
- package/dist/tools/projects/download-attachment.js +195 -0
- package/dist/tools/projects/download-attachment.js.map +1 -0
- package/dist/tools/projects/get-attachment-list.d.ts +48 -0
- package/dist/tools/projects/get-attachment-list.d.ts.map +1 -0
- package/dist/tools/projects/get-attachment-list.js +118 -0
- package/dist/tools/projects/get-attachment-list.js.map +1 -0
- package/dist/tools/projects/get-attachment-metadata.d.ts +55 -0
- package/dist/tools/projects/get-attachment-metadata.d.ts.map +1 -0
- package/dist/tools/projects/get-attachment-metadata.js +120 -0
- package/dist/tools/projects/get-attachment-metadata.js.map +1 -0
- package/dist/tools/projects/get-milestone-list.d.ts +49 -0
- package/dist/tools/projects/get-milestone-list.d.ts.map +1 -0
- package/dist/tools/projects/get-milestone-list.js +112 -0
- package/dist/tools/projects/get-milestone-list.js.map +1 -0
- package/dist/tools/projects/get-project-list.d.ts +50 -0
- package/dist/tools/projects/get-project-list.d.ts.map +1 -0
- package/dist/tools/projects/get-project-list.js +113 -0
- package/dist/tools/projects/get-project-list.js.map +1 -0
- package/dist/tools/projects/get-project-member-group-list.d.ts +55 -0
- package/dist/tools/projects/get-project-member-group-list.d.ts.map +1 -0
- package/dist/tools/projects/get-project-member-group-list.js +127 -0
- package/dist/tools/projects/get-project-member-group-list.js.map +1 -0
- package/dist/tools/projects/get-project-member-list.d.ts +66 -0
- package/dist/tools/projects/get-project-member-list.d.ts.map +1 -0
- package/dist/tools/projects/get-project-member-list.js +159 -0
- package/dist/tools/projects/get-project-member-list.js.map +1 -0
- package/dist/tools/projects/get-project-template-list.d.ts +55 -0
- package/dist/tools/projects/get-project-template-list.d.ts.map +1 -0
- package/dist/tools/projects/get-project-template-list.js +127 -0
- package/dist/tools/projects/get-project-template-list.js.map +1 -0
- package/dist/tools/projects/get-project-template.d.ts +48 -0
- package/dist/tools/projects/get-project-template.d.ts.map +1 -0
- package/dist/tools/projects/get-project-template.js +132 -0
- package/dist/tools/projects/get-project-template.js.map +1 -0
- package/dist/tools/projects/get-project-workflow-list.d.ts +41 -0
- package/dist/tools/projects/get-project-workflow-list.d.ts.map +1 -0
- package/dist/tools/projects/get-project-workflow-list.js +107 -0
- package/dist/tools/projects/get-project-workflow-list.js.map +1 -0
- package/dist/tools/projects/get-project.d.ts +41 -0
- package/dist/tools/projects/get-project.d.ts.map +1 -0
- package/dist/tools/projects/get-project.js +110 -0
- package/dist/tools/projects/get-project.js.map +1 -0
- package/dist/tools/projects/get-tag-list.d.ts +55 -0
- package/dist/tools/projects/get-tag-list.d.ts.map +1 -0
- package/dist/tools/projects/get-tag-list.js +145 -0
- package/dist/tools/projects/get-tag-list.js.map +1 -0
- package/dist/tools/projects/get-tag.d.ts +48 -0
- package/dist/tools/projects/get-tag.d.ts.map +1 -0
- package/dist/tools/projects/get-tag.js +124 -0
- package/dist/tools/projects/get-tag.js.map +1 -0
- package/dist/tools/projects/get-task-comment-list.d.ts +63 -0
- package/dist/tools/projects/get-task-comment-list.d.ts.map +1 -0
- package/dist/tools/projects/get-task-comment-list.js +136 -0
- package/dist/tools/projects/get-task-comment-list.js.map +1 -0
- package/dist/tools/projects/get-task-list.d.ts +184 -0
- package/dist/tools/projects/get-task-list.d.ts.map +1 -0
- package/dist/tools/projects/get-task-list.js +257 -0
- package/dist/tools/projects/get-task-list.js.map +1 -0
- package/dist/tools/projects/get-task.d.ts +48 -0
- package/dist/tools/projects/get-task.d.ts.map +1 -0
- package/dist/tools/projects/get-task.js +130 -0
- package/dist/tools/projects/get-task.js.map +1 -0
- package/dist/tools/projects/update-project-template.d.ts +312 -0
- package/dist/tools/projects/update-project-template.d.ts.map +1 -0
- package/dist/tools/projects/update-project-template.js +266 -0
- package/dist/tools/projects/update-project-template.js.map +1 -0
- package/dist/tools/projects/update-tag-group.d.ts +62 -0
- package/dist/tools/projects/update-tag-group.d.ts.map +1 -0
- package/dist/tools/projects/update-tag-group.js +162 -0
- package/dist/tools/projects/update-tag-group.js.map +1 -0
- package/dist/tools/projects/update-task-comment.d.ts +92 -0
- package/dist/tools/projects/update-task-comment.d.ts.map +1 -0
- package/dist/tools/projects/update-task-comment.js +176 -0
- package/dist/tools/projects/update-task-comment.js.map +1 -0
- package/dist/tools/projects/update-task.d.ts +203 -0
- package/dist/tools/projects/update-task.d.ts.map +1 -0
- package/dist/tools/projects/update-task.js +261 -0
- package/dist/tools/projects/update-task.js.map +1 -0
- package/dist/tools/projects/upload-attachment.d.ts +55 -0
- package/dist/tools/projects/upload-attachment.d.ts.map +1 -0
- package/dist/tools/projects/upload-attachment.js +143 -0
- package/dist/tools/projects/upload-attachment.js.map +1 -0
- package/dist/tools/wiki/create-wiki-comment.d.ts +55 -0
- package/dist/tools/wiki/create-wiki-comment.d.ts.map +1 -0
- package/dist/tools/wiki/create-wiki-comment.js +72 -0
- package/dist/tools/wiki/create-wiki-comment.js.map +1 -0
- package/dist/tools/wiki/create-wiki-page.d.ts +127 -0
- package/dist/tools/wiki/create-wiki-page.d.ts.map +1 -0
- package/dist/tools/wiki/create-wiki-page.js +116 -0
- package/dist/tools/wiki/create-wiki-page.js.map +1 -0
- package/dist/tools/wiki/delete-wiki-comment.d.ts +55 -0
- package/dist/tools/wiki/delete-wiki-comment.d.ts.map +1 -0
- package/dist/tools/wiki/delete-wiki-comment.js +72 -0
- package/dist/tools/wiki/delete-wiki-comment.js.map +1 -0
- package/dist/tools/wiki/delete-wiki-page-file.d.ts +55 -0
- package/dist/tools/wiki/delete-wiki-page-file.d.ts.map +1 -0
- package/dist/tools/wiki/delete-wiki-page-file.js +115 -0
- package/dist/tools/wiki/delete-wiki-page-file.js.map +1 -0
- package/dist/tools/wiki/download-wiki-attach-file.d.ts +55 -0
- package/dist/tools/wiki/download-wiki-attach-file.d.ts.map +1 -0
- package/dist/tools/wiki/download-wiki-attach-file.js +176 -0
- package/dist/tools/wiki/download-wiki-attach-file.js.map +1 -0
- package/dist/tools/wiki/download-wiki-page-file.d.ts +62 -0
- package/dist/tools/wiki/download-wiki-page-file.d.ts.map +1 -0
- package/dist/tools/wiki/download-wiki-page-file.js +189 -0
- package/dist/tools/wiki/download-wiki-page-file.js.map +1 -0
- package/dist/tools/wiki/get-wiki-comment-list.d.ts +62 -0
- package/dist/tools/wiki/get-wiki-comment-list.d.ts.map +1 -0
- package/dist/tools/wiki/get-wiki-comment-list.js +74 -0
- package/dist/tools/wiki/get-wiki-comment-list.js.map +1 -0
- package/dist/tools/wiki/get-wiki-comment.d.ts +55 -0
- package/dist/tools/wiki/get-wiki-comment.d.ts.map +1 -0
- package/dist/tools/wiki/get-wiki-comment.js +72 -0
- package/dist/tools/wiki/get-wiki-comment.js.map +1 -0
- package/dist/tools/wiki/get-wiki-list.d.ts +47 -0
- package/dist/tools/wiki/get-wiki-list.d.ts.map +1 -0
- package/dist/tools/wiki/get-wiki-list.js +76 -0
- package/dist/tools/wiki/get-wiki-list.js.map +1 -0
- package/dist/tools/wiki/get-wiki-page-list.d.ts +48 -0
- package/dist/tools/wiki/get-wiki-page-list.d.ts.map +1 -0
- package/dist/tools/wiki/get-wiki-page-list.js +70 -0
- package/dist/tools/wiki/get-wiki-page-list.js.map +1 -0
- package/dist/tools/wiki/get-wiki-page.d.ts +48 -0
- package/dist/tools/wiki/get-wiki-page.d.ts.map +1 -0
- package/dist/tools/wiki/get-wiki-page.js +78 -0
- package/dist/tools/wiki/get-wiki-page.js.map +1 -0
- package/dist/tools/wiki/update-wiki-comment.d.ts +62 -0
- package/dist/tools/wiki/update-wiki-comment.d.ts.map +1 -0
- package/dist/tools/wiki/update-wiki-comment.js +74 -0
- package/dist/tools/wiki/update-wiki-comment.js.map +1 -0
- package/dist/tools/wiki/update-wiki-page.d.ts +117 -0
- package/dist/tools/wiki/update-wiki-page.d.ts.map +1 -0
- package/dist/tools/wiki/update-wiki-page.js +111 -0
- package/dist/tools/wiki/update-wiki-page.js.map +1 -0
- package/dist/tools/wiki/upload-wiki-file.d.ts +49 -0
- package/dist/tools/wiki/upload-wiki-file.d.ts.map +1 -0
- package/dist/tools/wiki/upload-wiki-file.js +145 -0
- package/dist/tools/wiki/upload-wiki-file.js.map +1 -0
- package/dist/tools/wiki/upload-wiki-page-file.d.ts +55 -0
- package/dist/tools/wiki/upload-wiki-page-file.d.ts.map +1 -0
- package/dist/tools/wiki/upload-wiki-page-file.js +147 -0
- package/dist/tools/wiki/upload-wiki-page-file.js.map +1 -0
- package/dist/types/config.d.ts +18 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/dooray-api.d.ts +717 -0
- package/dist/types/dooray-api.d.ts.map +1 -0
- package/dist/types/dooray-api.js +7 -0
- package/dist/types/dooray-api.js.map +1 -0
- package/dist/utils/errors.d.ts +28 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +60 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +22 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +50 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/member-transform.d.ts +20 -0
- package/dist/utils/member-transform.d.ts.map +1 -0
- package/dist/utils/member-transform.js +48 -0
- package/dist/utils/member-transform.js.map +1 -0
- package/dist/utils/response-filters.d.ts +105 -0
- package/dist/utils/response-filters.d.ts.map +1 -0
- package/dist/utils/response-filters.js +152 -0
- package/dist/utils/response-filters.js.map +1 -0
- package/package.json +54 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Jae Hyung Lee
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Dooray MCP Server
|
|
2
|
+
|
|
3
|
+
MCP server for [Dooray!](https://dooray.com) - enabling AI assistants to interact with Dooray projects, tasks, wikis, and more.
|
|
4
|
+
|
|
5
|
+
## 설치
|
|
6
|
+
|
|
7
|
+
### NPM (권장)
|
|
8
|
+
```bash
|
|
9
|
+
npm install -g @geonheeye/dooray-mcp
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## 설정
|
|
13
|
+
|
|
14
|
+
### 1. API 토큰 발급 (필수)
|
|
15
|
+
두레이 개인설정 > API > 개인 인증 토큰 메뉴에서 생성할 수 있습니다. [가이드](https://helpdesk.dooray.com/share/pages/9wWo-xwiR66BO5LGshgVTg/2939987647631384419#%EA%B0%9C%EC%9D%B8-API-%EC%9D%B8%EC%A6%9D-%ED%86%A0%ED%81%B0-%EB%B0%9C%EA%B8%89-%EA%B3%BC%EC%A0%95)
|
|
16
|
+
|
|
17
|
+
### 2. 환경변수 등록 (필수)
|
|
18
|
+
```bash
|
|
19
|
+
export DOORAY_API_TOKEN=<발급 받은 API 토큰>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## MCP 등록
|
|
23
|
+
|
|
24
|
+
### 1. Claude Code 등록
|
|
25
|
+
```bash
|
|
26
|
+
claude mcp add -s user dooray-mcp npx @geonheeye/dooray-mcp@latest
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### 2. Claude Desktop 설정
|
|
30
|
+
|
|
31
|
+
설정 파일 위치: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"mcpServers": {
|
|
36
|
+
"dooray": {
|
|
37
|
+
"command": "npx @geonheeye/dooray-mcp@latest",
|
|
38
|
+
"env": { "DOORAY_API_TOKEN": "발급받은_토큰" }
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Tool 목록
|
|
45
|
+
|
|
46
|
+
### 공통
|
|
47
|
+
- `get-my-member-info` - 사용자 정보 조회
|
|
48
|
+
|
|
49
|
+
### 프로젝트
|
|
50
|
+
- `get-project-list` - 프로젝트 목록
|
|
51
|
+
- `get-project` - 프로젝트 상세정보
|
|
52
|
+
- `get-project-workflow-list` - 업무 상태 목록
|
|
53
|
+
- `get-task-list` - 업무 검색/필터링
|
|
54
|
+
- `get-task` - 업무 상세정보
|
|
55
|
+
- `create-task` - 업무 생성
|
|
56
|
+
- `update-task` - 업무 수정
|
|
57
|
+
- `create-task-comment` - 댓글 작성
|
|
58
|
+
- `get-task-comment-list` - 댓글 목록
|
|
59
|
+
- `update-task-comment` - 댓글 수정 (이메일 댓글 수정 불가)
|
|
60
|
+
- `get-milestone-list` - 마일스톤 목록
|
|
61
|
+
- `get-tag-list` - 태그 목록
|
|
62
|
+
- `get-tag` - 태그 상세정보
|
|
63
|
+
- `create-tag` - 태그 생성 (개별/그룹 태그)
|
|
64
|
+
- `update-tag-group` - 태그 그룹 설정 수정
|
|
65
|
+
- `get-project-template-list` - 템플릿 목록
|
|
66
|
+
- `get-project-template` - 템플릿 상세정보
|
|
67
|
+
- `create-project-template` - 템플릿 생성
|
|
68
|
+
- `update-project-template` - 템플릿 수정
|
|
69
|
+
- `delete-project-template` - 템플릿 삭제
|
|
70
|
+
- `get-project-member-list` - 프로젝트 멤버 목록
|
|
71
|
+
- `get-project-member-group-list` - 멤버 그룹 목록
|
|
72
|
+
|
|
73
|
+
### 첨부파일
|
|
74
|
+
- `upload-attachment` - 파일 업로드
|
|
75
|
+
- `get-attachment-list` - 첨부파일 목록
|
|
76
|
+
- `get-attachment-metadata` - 첨부파일 메타데이터
|
|
77
|
+
- `download-attachment` - 파일 다운로드 (savePath 옵션으로 로컬 저장 지원)
|
|
78
|
+
- `delete-attachment` - 첨부파일 삭제
|
|
79
|
+
|
|
80
|
+
### 드라이브
|
|
81
|
+
- `get-drive-list` - 드라이브 목록 (개인/프로젝트)
|
|
82
|
+
- `get-drive-file-list` - 파일/폴더 목록 조회
|
|
83
|
+
- `get-drive-file-meta` - 파일 메타정보 조회 (file ID만으로)
|
|
84
|
+
- `create-drive-folder` - 폴더 생성
|
|
85
|
+
- `rename-drive-file` - 파일/폴더 이름 변경
|
|
86
|
+
- `move-drive-file` - 파일/폴더 이동 (휴지통 이동 포함)
|
|
87
|
+
- `copy-drive-file` - 파일 복사
|
|
88
|
+
- `delete-drive-file` - 휴지통 파일 영구삭제
|
|
89
|
+
- `upload-drive-file` - 파일 업로드
|
|
90
|
+
- `download-drive-file` - 파일 다운로드 (savePath 옵션으로 로컬 저장 지원)
|
|
91
|
+
- `update-drive-file` - 파일 새버전 업로드
|
|
92
|
+
|
|
93
|
+
### 위키
|
|
94
|
+
- `get-wiki-list` - 위키 목록
|
|
95
|
+
- `get-wiki-page-list` - 위키 페이지 목록
|
|
96
|
+
- `get-wiki-page` - 위키 페이지 상세정보
|
|
97
|
+
- `create-wiki-page` - 위키 페이지 생성
|
|
98
|
+
- `update-wiki-page` - 위키 페이지 수정
|
|
99
|
+
- `get-wiki-page-comment-list` - 위키 페이지 댓글 목록
|
|
100
|
+
- `get-wiki-page-comment` - 위키 페이지 댓글 상세정보
|
|
101
|
+
- `create-wiki-page-comment` - 위키 페이지 댓글 작성
|
|
102
|
+
- `update-wiki-page-comment` - 위키 페이지 댓글 수정
|
|
103
|
+
- `delete-wiki-page-comment` - 위키 페이지 댓글 삭제
|
|
104
|
+
|
|
105
|
+
### 위키 파일
|
|
106
|
+
- `upload-wiki-file` - 위키에 파일 업로드 (페이지 생성 전 pre-upload용, attachFileId 반환)
|
|
107
|
+
- `upload-wiki-page-file` - 기존 위키 페이지에 파일 업로드
|
|
108
|
+
- `download-wiki-page-file` - 위키 페이지 첨부파일 다운로드 (fileId 사용, savePath 옵션으로 로컬 저장 지원)
|
|
109
|
+
- `download-wiki-attach-file` - 위키 첨부파일 다운로드 (attachFileId 사용, savePath 옵션으로 로컬 저장 지원)
|
|
110
|
+
- `delete-wiki-page-file` - 위키 페이지 첨부파일 삭제
|
|
111
|
+
|
|
112
|
+
## 개발
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
npm run build # 빌드
|
|
116
|
+
npm run dev # 개발 모드
|
|
117
|
+
npm run watch # Watch 모드
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Prompts (프롬프트)
|
|
121
|
+
|
|
122
|
+
사전 정의된 프롬프트 템플릿을 제공합니다:
|
|
123
|
+
|
|
124
|
+
| Prompt | 설명 |
|
|
125
|
+
|--------|------|
|
|
126
|
+
| `create-task-with-template` | 구조화된 템플릿으로 새 업무 생성 (bug, feature, improvement, general) |
|
|
127
|
+
| `weekly-task-summary` | 주간 업무 요약 생성 |
|
|
128
|
+
| `project-status-report` | 프로젝트 상태 리포트 생성 |
|
|
129
|
+
| `task-review-checklist` | 업무 검토 체크리스트 생성 |
|
|
130
|
+
|
|
131
|
+
## Resources (리소스)
|
|
132
|
+
|
|
133
|
+
컨텍스트 데이터를 제공하는 리소스:
|
|
134
|
+
|
|
135
|
+
| URI | 설명 |
|
|
136
|
+
|-----|------|
|
|
137
|
+
| `dooray://api/info` | Dooray API 정보 및 사용 가능한 도구 목록 |
|
|
138
|
+
| `dooray://workflows/reference` | 워크플로우 상태 참조 가이드 (backlog, registered, working, closed) |
|
|
139
|
+
| `dooray://priority/reference` | 업무 우선순위 참조 가이드 |
|
|
140
|
+
|
|
141
|
+
## 라이선스
|
|
142
|
+
|
|
143
|
+
MIT
|
|
144
|
+
|
|
145
|
+
## 참고
|
|
146
|
+
|
|
147
|
+
- [Dooray](https://dooray.com)
|
|
148
|
+
- [Model Context Protocol](https://modelcontextprotocol.io)
|
|
149
|
+
- [Dooray API 문서](https://dooray.com/docs/api)
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dooray API HTTP Client
|
|
3
|
+
* Handles authentication and HTTP requests to Dooray API
|
|
4
|
+
*/
|
|
5
|
+
import { AxiosInstance } from 'axios';
|
|
6
|
+
import { DoorayConfig, DoorayHeaders } from '../types/config.js';
|
|
7
|
+
/**
|
|
8
|
+
* Dooray API Client
|
|
9
|
+
* Provides authenticated HTTP client for Dooray API calls
|
|
10
|
+
*/
|
|
11
|
+
export declare class DoorayClient {
|
|
12
|
+
private client;
|
|
13
|
+
private config;
|
|
14
|
+
constructor(config: DoorayConfig);
|
|
15
|
+
/**
|
|
16
|
+
* Make a GET request
|
|
17
|
+
*/
|
|
18
|
+
get<T>(url: string, params?: Record<string, unknown>, headers?: DoorayHeaders): Promise<T>;
|
|
19
|
+
/**
|
|
20
|
+
* Make a POST request
|
|
21
|
+
*/
|
|
22
|
+
post<T>(url: string, data?: unknown, headers?: DoorayHeaders): Promise<T>;
|
|
23
|
+
/**
|
|
24
|
+
* Make a PUT request
|
|
25
|
+
*/
|
|
26
|
+
put<T>(url: string, data?: unknown, headers?: DoorayHeaders): Promise<T>;
|
|
27
|
+
/**
|
|
28
|
+
* Make a PATCH request
|
|
29
|
+
*/
|
|
30
|
+
patch<T>(url: string, data?: unknown, headers?: DoorayHeaders): Promise<T>;
|
|
31
|
+
/**
|
|
32
|
+
* Make a DELETE request
|
|
33
|
+
*/
|
|
34
|
+
delete<T>(url: string, headers?: DoorayHeaders): Promise<T>;
|
|
35
|
+
/**
|
|
36
|
+
* Upload a file with 307 Redirect handling
|
|
37
|
+
* Dooray file API uses a two-step process:
|
|
38
|
+
* 1. First request returns 307 with Location header
|
|
39
|
+
* 2. Second request to Location URL performs actual upload
|
|
40
|
+
*/
|
|
41
|
+
uploadFile(url: string, formData: FormData, headers?: DoorayHeaders): Promise<any>;
|
|
42
|
+
/**
|
|
43
|
+
* Extract result from Dooray API response
|
|
44
|
+
*/
|
|
45
|
+
private extractResult;
|
|
46
|
+
/**
|
|
47
|
+
* Extract paginated result from Dooray API response
|
|
48
|
+
* Dooray paginated responses have: { header, result: [], totalCount }
|
|
49
|
+
* This method combines result and totalCount into PaginatedResponse format
|
|
50
|
+
*/
|
|
51
|
+
private extractPaginatedResult;
|
|
52
|
+
/**
|
|
53
|
+
* GET request that returns paginated result
|
|
54
|
+
* For endpoints that return { header, result: [], totalCount }
|
|
55
|
+
*/
|
|
56
|
+
getPaginated<T>(url: string, params?: Record<string, unknown>): Promise<{
|
|
57
|
+
totalCount: number;
|
|
58
|
+
data: T[];
|
|
59
|
+
}>;
|
|
60
|
+
/**
|
|
61
|
+
* Download a file as binary data with 307 Redirect handling
|
|
62
|
+
* Dooray file API uses a two-step process:
|
|
63
|
+
* 1. First request returns 307 with Location header
|
|
64
|
+
* 2. Second request to Location URL performs actual download
|
|
65
|
+
*/
|
|
66
|
+
downloadFile(url: string, params?: Record<string, unknown>): Promise<{
|
|
67
|
+
data: ArrayBuffer;
|
|
68
|
+
contentType: string;
|
|
69
|
+
contentDisposition?: string;
|
|
70
|
+
contentLength?: number;
|
|
71
|
+
}>;
|
|
72
|
+
/**
|
|
73
|
+
* Get the raw axios instance for advanced use cases
|
|
74
|
+
*/
|
|
75
|
+
getRawClient(): AxiosInstance;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Initialize the Dooray client with configuration
|
|
79
|
+
*/
|
|
80
|
+
export declare function initializeClient(config: DoorayConfig): DoorayClient;
|
|
81
|
+
/**
|
|
82
|
+
* Get the initialized Dooray client
|
|
83
|
+
*/
|
|
84
|
+
export declare function getClient(): DoorayClient;
|
|
85
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,aAAa,EAAqC,MAAM,OAAO,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOjE;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,YAAY;IAsDhC;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAQhG;;OAEG;IACG,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAO/E;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAO9E;;OAEG;IACG,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAOhF;;OAEG;IACG,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAOjE;;;;;OAKG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IA+CxF;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;;OAGG;IACG,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,EAAE,CAAA;KAAE,CAAC;IAQhH;;;;;OAKG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QACzE,IAAI,EAAE,WAAW,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IA2DF;;OAEG;IACH,YAAY,IAAI,aAAa;CAG9B;AAID;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAGnE;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,YAAY,CAKxC"}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dooray API HTTP Client
|
|
4
|
+
* Handles authentication and HTTP requests to Dooray API
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.DoorayClient = void 0;
|
|
11
|
+
exports.initializeClient = initializeClient;
|
|
12
|
+
exports.getClient = getClient;
|
|
13
|
+
const axios_1 = __importDefault(require("axios"));
|
|
14
|
+
const errors_js_1 = require("../utils/errors.js");
|
|
15
|
+
const logger_js_1 = require("../utils/logger.js");
|
|
16
|
+
const DEFAULT_BASE_URL = 'https://api.dooray.com';
|
|
17
|
+
/**
|
|
18
|
+
* Dooray API Client
|
|
19
|
+
* Provides authenticated HTTP client for Dooray API calls
|
|
20
|
+
*/
|
|
21
|
+
class DoorayClient {
|
|
22
|
+
client;
|
|
23
|
+
config;
|
|
24
|
+
constructor(config) {
|
|
25
|
+
if (!config.apiToken) {
|
|
26
|
+
throw new errors_js_1.AuthenticationError('DOORAY_API_TOKEN is required as environment variable');
|
|
27
|
+
}
|
|
28
|
+
this.config = config;
|
|
29
|
+
const baseUrl = config.baseUrl || DEFAULT_BASE_URL;
|
|
30
|
+
this.client = axios_1.default.create({
|
|
31
|
+
baseURL: baseUrl,
|
|
32
|
+
timeout: 30000,
|
|
33
|
+
headers: {
|
|
34
|
+
'Content-Type': 'application/json',
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
// Request interceptor - add authentication
|
|
38
|
+
this.client.interceptors.request.use((config) => {
|
|
39
|
+
config.headers.Authorization = `dooray-api ${this.config.apiToken}`;
|
|
40
|
+
logger_js_1.logger.debug(`Request: ${config.method?.toUpperCase()} ${config.url}`);
|
|
41
|
+
return config;
|
|
42
|
+
}, (error) => {
|
|
43
|
+
logger_js_1.logger.error('Request interceptor error:', error);
|
|
44
|
+
return Promise.reject(error);
|
|
45
|
+
});
|
|
46
|
+
// Response interceptor - handle errors
|
|
47
|
+
this.client.interceptors.response.use((response) => {
|
|
48
|
+
logger_js_1.logger.debug(`Response: ${response.status} ${response.config.url}`);
|
|
49
|
+
return response;
|
|
50
|
+
}, (error) => {
|
|
51
|
+
if (error.response) {
|
|
52
|
+
const { status, data, config } = error.response;
|
|
53
|
+
logger_js_1.logger.error(`API Error: ${status} ${config?.url}`, data);
|
|
54
|
+
if (status === 401) {
|
|
55
|
+
throw new errors_js_1.AuthenticationError('Invalid or expired API token');
|
|
56
|
+
}
|
|
57
|
+
const message = data?.header?.resultMessage || data?.message || 'API request failed';
|
|
58
|
+
throw new errors_js_1.DoorayAPIError(message, status, data);
|
|
59
|
+
}
|
|
60
|
+
logger_js_1.logger.error('Network error:', error.message);
|
|
61
|
+
throw new errors_js_1.DoorayAPIError('Network error: ' + error.message);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Make a GET request
|
|
66
|
+
*/
|
|
67
|
+
async get(url, params, headers) {
|
|
68
|
+
const response = await this.client.get(url, {
|
|
69
|
+
params,
|
|
70
|
+
headers: headers,
|
|
71
|
+
});
|
|
72
|
+
return this.extractResult(response);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Make a POST request
|
|
76
|
+
*/
|
|
77
|
+
async post(url, data, headers) {
|
|
78
|
+
const response = await this.client.post(url, data, {
|
|
79
|
+
headers: headers,
|
|
80
|
+
});
|
|
81
|
+
return this.extractResult(response);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Make a PUT request
|
|
85
|
+
*/
|
|
86
|
+
async put(url, data, headers) {
|
|
87
|
+
const response = await this.client.put(url, data, {
|
|
88
|
+
headers: headers,
|
|
89
|
+
});
|
|
90
|
+
return this.extractResult(response);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Make a PATCH request
|
|
94
|
+
*/
|
|
95
|
+
async patch(url, data, headers) {
|
|
96
|
+
const response = await this.client.patch(url, data, {
|
|
97
|
+
headers: headers,
|
|
98
|
+
});
|
|
99
|
+
return this.extractResult(response);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Make a DELETE request
|
|
103
|
+
*/
|
|
104
|
+
async delete(url, headers) {
|
|
105
|
+
const response = await this.client.delete(url, {
|
|
106
|
+
headers: headers,
|
|
107
|
+
});
|
|
108
|
+
return this.extractResult(response);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Upload a file with 307 Redirect handling
|
|
112
|
+
* Dooray file API uses a two-step process:
|
|
113
|
+
* 1. First request returns 307 with Location header
|
|
114
|
+
* 2. Second request to Location URL performs actual upload
|
|
115
|
+
*/
|
|
116
|
+
async uploadFile(url, formData, headers) {
|
|
117
|
+
const baseUrl = this.config.baseUrl || DEFAULT_BASE_URL;
|
|
118
|
+
const fullUrl = url.startsWith('http') ? url : `${baseUrl}${url}`;
|
|
119
|
+
const authHeader = `dooray-api ${this.config.apiToken}`;
|
|
120
|
+
// Step 1: Make initial request with redirect disabled to get 307
|
|
121
|
+
const initialClient = axios_1.default.create({
|
|
122
|
+
timeout: 60000,
|
|
123
|
+
maxRedirects: 0, // Disable automatic redirect following
|
|
124
|
+
validateStatus: (status) => status === 307 || (status >= 200 && status < 300),
|
|
125
|
+
});
|
|
126
|
+
logger_js_1.logger.debug(`File upload step 1: POST ${fullUrl}`);
|
|
127
|
+
const initialResponse = await initialClient.post(fullUrl, formData, {
|
|
128
|
+
headers: {
|
|
129
|
+
Authorization: authHeader,
|
|
130
|
+
...headers,
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
// If we got a direct success response (not 307), return it
|
|
134
|
+
if (initialResponse.status !== 307) {
|
|
135
|
+
logger_js_1.logger.debug('File upload completed without redirect');
|
|
136
|
+
return initialResponse.data;
|
|
137
|
+
}
|
|
138
|
+
// Step 2: Extract Location header and make second request
|
|
139
|
+
const locationUrl = initialResponse.headers['location'];
|
|
140
|
+
if (!locationUrl) {
|
|
141
|
+
throw new errors_js_1.DoorayAPIError('307 redirect received but no Location header found');
|
|
142
|
+
}
|
|
143
|
+
logger_js_1.logger.debug(`File upload step 2: POST ${locationUrl}`);
|
|
144
|
+
const uploadClient = axios_1.default.create({
|
|
145
|
+
timeout: 60000,
|
|
146
|
+
});
|
|
147
|
+
const response = await uploadClient.post(locationUrl, formData, {
|
|
148
|
+
headers: {
|
|
149
|
+
Authorization: authHeader,
|
|
150
|
+
...headers,
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
return response.data;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Extract result from Dooray API response
|
|
157
|
+
*/
|
|
158
|
+
extractResult(response) {
|
|
159
|
+
const { header, result } = response.data;
|
|
160
|
+
if (!header.isSuccessful) {
|
|
161
|
+
throw new errors_js_1.DoorayAPIError(header.resultMessage || 'API request failed', response.status, response.data);
|
|
162
|
+
}
|
|
163
|
+
return result;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Extract paginated result from Dooray API response
|
|
167
|
+
* Dooray paginated responses have: { header, result: [], totalCount }
|
|
168
|
+
* This method combines result and totalCount into PaginatedResponse format
|
|
169
|
+
*/
|
|
170
|
+
extractPaginatedResult(response) {
|
|
171
|
+
const { header, result, totalCount } = response.data;
|
|
172
|
+
if (!header.isSuccessful) {
|
|
173
|
+
throw new errors_js_1.DoorayAPIError(header.resultMessage || 'API request failed', response.status, response.data);
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
totalCount,
|
|
177
|
+
data: result,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* GET request that returns paginated result
|
|
182
|
+
* For endpoints that return { header, result: [], totalCount }
|
|
183
|
+
*/
|
|
184
|
+
async getPaginated(url, params) {
|
|
185
|
+
const response = await this.client.get(url, {
|
|
186
|
+
params,
|
|
187
|
+
});
|
|
188
|
+
return this.extractPaginatedResult(response);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Download a file as binary data with 307 Redirect handling
|
|
192
|
+
* Dooray file API uses a two-step process:
|
|
193
|
+
* 1. First request returns 307 with Location header
|
|
194
|
+
* 2. Second request to Location URL performs actual download
|
|
195
|
+
*/
|
|
196
|
+
async downloadFile(url, params) {
|
|
197
|
+
const baseUrl = this.config.baseUrl || DEFAULT_BASE_URL;
|
|
198
|
+
const fullUrl = url.startsWith('http') ? url : `${baseUrl}${url}`;
|
|
199
|
+
const authHeader = `dooray-api ${this.config.apiToken}`;
|
|
200
|
+
// Step 1: Make initial request with redirect disabled to get 307
|
|
201
|
+
const initialClient = axios_1.default.create({
|
|
202
|
+
timeout: 60000,
|
|
203
|
+
maxRedirects: 0,
|
|
204
|
+
validateStatus: (status) => status === 307 || (status >= 200 && status < 300),
|
|
205
|
+
});
|
|
206
|
+
logger_js_1.logger.debug(`File download step 1: GET ${fullUrl}`);
|
|
207
|
+
const initialResponse = await initialClient.get(fullUrl, {
|
|
208
|
+
params,
|
|
209
|
+
headers: {
|
|
210
|
+
Authorization: authHeader,
|
|
211
|
+
},
|
|
212
|
+
responseType: 'arraybuffer',
|
|
213
|
+
});
|
|
214
|
+
// If we got a direct success response (not 307), return it
|
|
215
|
+
if (initialResponse.status !== 307) {
|
|
216
|
+
logger_js_1.logger.debug('File download completed without redirect');
|
|
217
|
+
return {
|
|
218
|
+
data: initialResponse.data,
|
|
219
|
+
contentType: initialResponse.headers['content-type'] || 'application/octet-stream',
|
|
220
|
+
contentDisposition: initialResponse.headers['content-disposition'],
|
|
221
|
+
contentLength: parseInt(initialResponse.headers['content-length'] || '0', 10),
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
// Step 2: Extract Location header and make second request
|
|
225
|
+
const locationUrl = initialResponse.headers['location'];
|
|
226
|
+
if (!locationUrl) {
|
|
227
|
+
throw new errors_js_1.DoorayAPIError('307 redirect received but no Location header found');
|
|
228
|
+
}
|
|
229
|
+
logger_js_1.logger.debug(`File download step 2: GET ${locationUrl}`);
|
|
230
|
+
const downloadClient = axios_1.default.create({
|
|
231
|
+
timeout: 60000,
|
|
232
|
+
});
|
|
233
|
+
const response = await downloadClient.get(locationUrl, {
|
|
234
|
+
params,
|
|
235
|
+
headers: {
|
|
236
|
+
Authorization: authHeader,
|
|
237
|
+
},
|
|
238
|
+
responseType: 'arraybuffer',
|
|
239
|
+
});
|
|
240
|
+
return {
|
|
241
|
+
data: response.data,
|
|
242
|
+
contentType: response.headers['content-type'] || 'application/octet-stream',
|
|
243
|
+
contentDisposition: response.headers['content-disposition'],
|
|
244
|
+
contentLength: parseInt(response.headers['content-length'] || '0', 10),
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Get the raw axios instance for advanced use cases
|
|
249
|
+
*/
|
|
250
|
+
getRawClient() {
|
|
251
|
+
return this.client;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
exports.DoorayClient = DoorayClient;
|
|
255
|
+
let clientInstance = null;
|
|
256
|
+
/**
|
|
257
|
+
* Initialize the Dooray client with configuration
|
|
258
|
+
*/
|
|
259
|
+
function initializeClient(config) {
|
|
260
|
+
clientInstance = new DoorayClient(config);
|
|
261
|
+
return clientInstance;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get the initialized Dooray client
|
|
265
|
+
*/
|
|
266
|
+
function getClient() {
|
|
267
|
+
if (!clientInstance) {
|
|
268
|
+
throw new Error('Dooray client not initialized. Call initializeClient() first.');
|
|
269
|
+
}
|
|
270
|
+
return clientInstance;
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dooray Common API
|
|
3
|
+
* Handles common/shared operations like member info
|
|
4
|
+
*/
|
|
5
|
+
import { MyMemberInfo, MemberDetails } from '../types/dooray-api.js';
|
|
6
|
+
/**
|
|
7
|
+
* Get information about the authenticated user
|
|
8
|
+
*/
|
|
9
|
+
export declare function getMyMemberInfo(): Promise<MyMemberInfo>;
|
|
10
|
+
/**
|
|
11
|
+
* Get detailed information about a specific member
|
|
12
|
+
*/
|
|
13
|
+
export declare function getMemberDetails(memberId: string): Promise<MemberDetails>;
|
|
14
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/api/common.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAIrE;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAG7D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAG/E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dooray Common API
|
|
4
|
+
* Handles common/shared operations like member info
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.getMyMemberInfo = getMyMemberInfo;
|
|
8
|
+
exports.getMemberDetails = getMemberDetails;
|
|
9
|
+
const client_js_1 = require("./client.js");
|
|
10
|
+
const COMMON_BASE = '/common/v1';
|
|
11
|
+
/**
|
|
12
|
+
* Get information about the authenticated user
|
|
13
|
+
*/
|
|
14
|
+
async function getMyMemberInfo() {
|
|
15
|
+
const client = (0, client_js_1.getClient)();
|
|
16
|
+
return client.get(`${COMMON_BASE}/members/me`);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get detailed information about a specific member
|
|
20
|
+
*/
|
|
21
|
+
async function getMemberDetails(memberId) {
|
|
22
|
+
const client = (0, client_js_1.getClient)();
|
|
23
|
+
return client.get(`${COMMON_BASE}/members/${memberId}`);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/api/common.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAUH,0CAGC;AAKD,4CAGC;AAnBD,2CAAwC;AAGxC,MAAM,WAAW,GAAG,YAAY,CAAC;AAEjC;;GAEG;AACI,KAAK,UAAU,eAAe;IACnC,MAAM,MAAM,GAAG,IAAA,qBAAS,GAAE,CAAC;IAC3B,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,aAAa,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,MAAM,MAAM,GAAG,IAAA,qBAAS,GAAE,CAAC;IAC3B,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,YAAY,QAAQ,EAAE,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dooray Drive API
|
|
3
|
+
* Handles drive file and folder operations
|
|
4
|
+
*/
|
|
5
|
+
import { Drive, DriveListParams, DriveFile, DriveFileListParams, CreateDriveFolderParams, RenameDriveFileParams, MoveDriveFileParams, CopyDriveFileParams, PaginatedResponse } from '../types/dooray-api.js';
|
|
6
|
+
export declare function getDrives(params?: DriveListParams): Promise<PaginatedResponse<Drive>>;
|
|
7
|
+
export declare function getDriveFiles(params: DriveFileListParams): Promise<PaginatedResponse<DriveFile>>;
|
|
8
|
+
export declare function getDriveFileMeta(fileId: string): Promise<DriveFile>;
|
|
9
|
+
export declare function createDriveFolder(params: CreateDriveFolderParams): Promise<{
|
|
10
|
+
id: string;
|
|
11
|
+
}>;
|
|
12
|
+
export declare function renameDriveFile(params: RenameDriveFileParams): Promise<void>;
|
|
13
|
+
export declare function moveDriveFile(params: MoveDriveFileParams): Promise<void>;
|
|
14
|
+
export declare function copyDriveFile(params: CopyDriveFileParams): Promise<void>;
|
|
15
|
+
export declare function deleteDriveFile(driveId: string, fileId: string): Promise<void>;
|
|
16
|
+
export declare function downloadDriveFile(driveId: string, fileId: string): Promise<{
|
|
17
|
+
data: ArrayBuffer;
|
|
18
|
+
contentType: string;
|
|
19
|
+
contentDisposition?: string;
|
|
20
|
+
contentLength?: number;
|
|
21
|
+
}>;
|
|
22
|
+
//# sourceMappingURL=drive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drive.d.ts","sourceRoot":"","sources":["../../src/api/drive.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,KAAK,EACL,eAAe,EACf,SAAS,EACT,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAKhC,wBAAsB,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAQ3F;AAGD,wBAAsB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAStG;AAGD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAGzE;AAGD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAMhG;AAGD,wBAAsB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMlF;AAGD,wBAAsB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9E;AAGD,wBAAsB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAS9E;AAGD,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpF;AAGD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAChF,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC,CAGD"}
|