Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Feb 11, 2020. It is now read-only.

Commitd25bc8e

Browse files
committed
Merge branch 'API_testing'
2 parents75aaf56 +374115b commitd25bc8e

23 files changed

+4172
-69
lines changed

‎.gitignore‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ node_modules
22
.serverless
33
.idea
44
.webpack
5-
.webpack
5+
.env
6+
coverage

‎api/KBF/KBF.ts‎

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
importaxiosfrom'axios'
2+
import{SubTask,Task,TaskNumber}from'../../types/kanbanflow'
3+
import{getTasksByColumnParams}from'./types/requests'
4+
5+
require('dotenv').config()
6+
consttoken=process.env.KBF_TESTING_API_TOKEN
7+
8+
constgenAPIkey=(token?:string)=>{
9+
if(!token)throw'Please provide an API token'
10+
returnBuffer.from('apiToken:'+token).toString('base64')
11+
}
12+
13+
exportconstkanbanGet=
14+
async<T>(resource:string,
15+
params?:getTasksByColumnParams,
16+
apiKey=genAPIkey(token))=>{
17+
constres=awaitaxios.get<T>(`https://kanbanflow.com/api/v1/${resource}`,
18+
{
19+
headers:{
20+
'Authorization':`Basic${apiKey}`
21+
},
22+
params
23+
})
24+
25+
returnres.data
26+
}
27+
28+
exporttypepostReply={taskId:string,taskNumber:TaskNumber}
29+
30+
exporttypecreateTaskParams=
31+
Omit<Task,'_id'|'totalSecondsSpent'|'color'|'description'>
32+
&Partial<Pick<Task,'color'|'description'>>
33+
34+
interfaceKanbanPost{
35+
apiKey?:string;
36+
}
37+
38+
interfaceModifyTask{
39+
taskId:Task['_id'];
40+
41+
}
42+
43+
44+
interfaceCreateParamsextendsKanbanPost{
45+
params:createTaskParams;
46+
}
47+
48+
interfaceUpdateParamsextendsKanbanPost,ModifyTask{
49+
params:Partial<createTaskParams>;
50+
}
51+
52+
53+
typeAddOrModifyPropTypes='subtask'
54+
55+
exportconstAddParams:{[keyinAddOrModifyPropTypes]:string}={
56+
subtask:'subtasks'
57+
}
58+
59+
60+
interfaceAddSubtaskParamsextendsKanbanPost,ModifyTask{
61+
params:Pick<SubTask,'name'>&Partial<SubTask>;
62+
addParam:'subtask'
63+
}
64+
65+
interfaceModifySubtaskParamsextendsKanbanPost,ModifyTask{
66+
params:Partial<SubTask>;
67+
modifyParam:AddOrModifyPropTypes
68+
}
69+
70+
interfaceImplementationParamsextendsKanbanPost{
71+
params:createTaskParams|Partial<createTaskParams>;
72+
taskId?:Task['_id'];
73+
addParam?:string
74+
modifyParam?:AddOrModifyPropTypes
75+
}
76+
77+
// create
78+
exportasyncfunctionkanbanPost({params, apiKey}:CreateParams):Promise<postReply>
79+
// update
80+
exportasyncfunctionkanbanPost({params, taskId, apiKey}:UpdateParams):Promise<void>
81+
// add subtask
82+
exportasyncfunctionkanbanPost({params, taskId, apiKey, addParam}:AddSubtaskParams):Promise<{insertIndex:number}>
83+
// modify subtask
84+
exportasyncfunctionkanbanPost({params, taskId, apiKey, modifyParam}:ModifySubtaskParams):Promise<void>
85+
86+
87+
// implementation
88+
exportasyncfunctionkanbanPost({params, taskId, addParam, modifyParam, apiKey=genAPIkey(token)}:ImplementationParams){
89+
leturl=`https://kanbanflow.com/api/v1/tasks${taskId ?'/'+taskId :''}`
90+
addParam==='subtask' ?url+='/'+AddParams['subtask'] :url
91+
modifyParam ?url+='/'+AddParams[modifyParam] :url
92+
constres=awaitaxios.post(
93+
url,
94+
params,
95+
{
96+
headers:{
97+
'Authorization':`Basic${apiKey}`,
98+
'Content-type':'application/json'
99+
100+
}
101+
})
102+
returnres.data
103+
104+
}

‎api/KBF/requests.ts‎

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import{Board,RequestProps,Task,Tasks}from'../../types/kanbanflow'
2+
import{kanbanGet,kanbanPost,createTaskParams}from'./KBF'
3+
import{getTasksByColumnAndSwimlaneParams,getTasksByColumnParams}from'./types/requests'
4+
5+
constgetBoard=()=>
6+
kanbanGet<Board>('board')
7+
8+
constgetTaskByID=(id:Task['_id'])=>
9+
kanbanGet<Task>(`tasks/${id}`)
10+
11+
constgetTaskDetailsById=<TextendsRequestProps,KextendskeyofT>
12+
(id:Task['_id'],fetchOnlyProperty:K)=>
13+
kanbanGet<T[K]>(`tasks/${id}/${fetchOnlyProperty}`)
14+
15+
constgetTasksByColumn=(params:getTasksByColumnParams)=>
16+
kanbanGet<Tasks>('tasks',params)
17+
18+
constgetTasksByColumnAndSwimlane=(params:getTasksByColumnAndSwimlaneParams)=>
19+
kanbanGet<Tasks>('tasks',params)
20+
21+
constgetAllTasksFromBoard=()=>
22+
kanbanGet<Tasks>('tasks')
23+
24+
////
25+
26+
27+
constcreateTask=
28+
(params:createTaskParams)=>
29+
kanbanPost({params:params})
30+
31+
constcreateOrModifyTask=
32+
(params:createTaskParams,taskId?:Task['_id'])=>
33+
kanbanPost({params:params,apiKey:taskId})
34+
35+
36+
export{
37+
getBoard,
38+
getTaskByID,
39+
getTasksByColumn,
40+
getTasksByColumnAndSwimlane,
41+
getAllTasksFromBoard,
42+
createTask,
43+
getTaskDetailsById,
44+
createOrModifyTask
45+
}
46+

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp