WekanAPI와 jq를 사용하여 카드에서 작업 시간을 추출해 본 이야기
13905 단어 Wekanchocolateyjq
소개
칸반 방식 태스크 관리 툴 「Wekan」을 이용해 태스크 관리를 하고 있다.
다양한 API도 제공되고 있는 것 같기 때문에, 그들을 사용해 카드로부터 정보를 추출해 본다.
환경
Wekan의 API 호출
Wekan이 REST API을 제공하고 있기 때문에 그것을 사용합니다.
할 수있는 일을 요약하면 다음과 같습니다.
- 로그인 처리
- 사용자 목록, 로그인된 사용자 목록
- 사용자 등록, 활성화, 비활성화, 정보 획득
- 카드 등록, 삭제, 갱신 등을 들 수 있다.
공식적으로도 기재되어 있지만, 아직 미완성 상태인 것 같다.
액세스 토큰 얻기
로그인 상태가 아니면 카드를 볼 수 없기 때문에, 사전에 토큰을 발행한다.
※
${ServerName}
, ${email}
, ${password}
는 적절히 입력하는 것HTTP Method
Url
Short Description
POST
/users/login
Authenticate with the REST API.$ curl http://${ServerName}/users/login \
-d "email=${email}&password=${password}" -s
{"id":"FtDartLCavnm2NbFC","token":"YLerKsBaQMP3MwX7iLRioWKHXbewQ-e9jyPLcFbL1Nw","tokenExpires":"2019-03-17T01:28:38.347Z"}
이후의 처리에서는 헤더에 토큰 정보를 설정하여 카드 정보를 취득한다.
swinlaneid 얻기
대상 수영 차선 목록을 가져옵니다. ※칸반의 각 행의 id에 해당하는 개소
HTTP Method
Url
Short Description
GET
/api/boards/:boardId/swimlanes
REST API Swimlanes$ curl -X GET -H "Authorization: Bearer YLerKsBaQMP3MwX7iLRioWKHXbewQ-e9jyPLcFbL1Nw" \
http://${ServerName}/api/boards/pMBEMbm2KfrR2P73n/swimlanes -s
[{"_id":"qHg6qGGShDPmgdrN4","title":"tasks"},{"_id":"sSjG6txBwCGcSviPW","title":"event"},{"_id":"AYcP8gYYDpK2niCxX","title":"backlog"},{"_id":"w53X5PSWDt28dzxxN","title":"sprint"}]
카드 획득
상기에서 취득한 수영 차선 내의 카드 일람을 취득한다. ※ 특정 행에 포함된 모든 카드
HTTP Method
Url
Short Description
GET
/api/boards/:boardId/swimlanes/:swimlaneId/cards
REST-API-Cards$ curl -X GET -H "Authorization: Bearer YLerKsBaQMP3MwX7iLRioWKHXbewQ-e9jyPLcFbL1Nw" \
http://${ServerName}/api/boards/pMBEMbm2KfrR2P73n/swimlanes/w53X5PSWDt28dzxxN/cards -s
[{"_id":"FRDjZf9FQcZ4ayXip","title":"Java11検証:2h","description":"","listId":"uK7Thp97rGdtEXQvC"},{"_id":"EmXHtfv7d3y2FQkkM","title":"UnitTest:3h","description":"","listId":"uK7Thp97rGdtEXQvC"},]
jq 도구 사용
반환된 JSON 형식 데이터는 콘솔에 한 줄로 표시되므로 보기 힘들다.
그 때문에, 문자열의 정형이나 데이터의 추출 기능을 가지는 툴 「jq 」를 사용한다.
설치
공식 다운로드에서 설치하려고했지만 exe를 실행할 수 없으므로 다른 방법으로 시도하십시오.
아래의 사이트를 참고로, 다른 방법으로서 Windows의 패키지 매니저 Chocolatey로 넣는다.
json을 쉽게 처리 할 수있는 jq 명령 도입 (Mac, Windows)
확인 OK
$ chocolatey list jq
Chocolatey v0.10.11
jq 1.5
JSON을 성형하여 출력
파이프로
jq .
를 연결합니다.
$ curl -X GET -H "Authorization: Bearer YLerKsBaQMP3MwX7iLRioWKHXbewQ-e9jyPLcFbL1Nw" \
http://${ServerName}/api/boards/pMBEMbm2KfrR2P73n/swimlanes/w53X5PSWDt28dzxxN/cards -s | jq .
[
{
"_id": "FRDjZf9FQcZ4ayXip",
"title": "Java11検証:2h",
"description": "",
"listId": "uK7Thp97rGdtEXQvC"
},
{
"_id": "n7dHW6KsDMGaRjkTA",
"title": "UnitTest:3h",
"description": "",
"listId": "uK7Thp97rGdtEXQvC"
}
]
jq 도구 활용
:
이후에 2h
와 같이 작업 시간을 기재하고 있으므로, 모든 카드의 합계치를 계산해 본다.목록의 카드로 필터링
작업의 상태가 'TODO', 'DOING', 'DONE'으로 나뉘어 있기 때문에,
select
함수를 사용하여 목록 ID로 "TODO"로 필터링합니다. ※칸반의 각 행의 id에 해당하는 개소$ curl -X GET -H "Authorization: Bearer YLerKsBaQMP3MwX7iLRioWKHXbewQ-e9jyPLcFbL1Nw" \
http://${ServerName}/api/boards/pMBEMbm2KfrR2P73n/swimlanes/w53X5PSWDt28dzxxN/cards -s \
| jq '.[] | select(.listId == "uK7Thp97rGdtEXQvC" or.listId == "JCsuKobA4wBL8jvmb")'
{
"_id": "FRDjZf9FQcZ4ayXip",
"title": "Java11検証:2h",
"description": "",
"listId": "uK7Thp97rGdtEXQvC"
}
{
"_id": "n7dHW6KsDMGaRjkTA",
"title": "UnitTest:3h",
"description": "",
"listId": "uK7Thp97rGdtEXQvC"
}
카드 내용으로 필터링
카드내의 타이틀만을 원하기 때문에 키(title)로 좁힌다.
$ curl -X GET -H "Authorization: Bearer YLerKsBaQMP3MwX7iLRioWKHXbewQ-e9jyPLcFbL1Nw" \
http://${ServerName}/api/boards/pMBEMbm2KfrR2P73n/swimlanes/w53X5PSWDt28dzxxN/cards | \
jq '.[] | select(.listId == "uK7Thp97rGdtEXQvC" or.listId == "JCsuKobA4wBL8jvmb") | .title'
"Java11検証:2h"
"UnitTest:3h"
불필요한 이중 인용구 삭제
옵션
-r
를 부여한다.$ curl -X GET -H "Authorization: Bearer YLerKsBaQMP3MwX7iLRioWKHXbewQ-e9jyPLcFbL1Nw" \
http://${ServerName}/api/boards/pMBEMbm2KfrR2P73n/swimlanes/w53X5PSWDt28dzxxN/cards -s | \
jq '.[] | select(.listId == "uK7Thp97rGdtEXQvC" or.listId == "JCsuKobA4wBL8jvmb") | .title' -r
Java11検証:2h
UnitTest:3h
작업 시간만 추출
split
에서 :
뒤의 문자열을 가져오고 gsub
에서 h
를 삭제합니다.$ curl -X GET -H "Authorization: Bearer YLerKsBaQMP3MwX7iLRioWKHXbewQ-e9jyPLcFbL1Nw" \
http:/${ServerName}/api/boards/pMBEMbm2KfrR2P73n/swimlanes/w53X5PSWDt28dzxxN/cards -s | \
jq -c '.[] | select(.listId == "uK7Thp97rGdtEXQvC" or.listId == "JCsuKobA4wBL8jvmb") | .title | split(":")[1] | gsub("h";"") | tonumber' -r
2
3
작업 시간을 배열로 설정
수치형식의 배열이 아니면 합계치를 산출할 수 없기 때문에,
tonumber
로 수치 변환 또한 []
로 둘러싼다.$ curl -X GET -H "Authorization: Bearer YLerKsBaQMP3MwX7iLRioWKHXbewQ-e9jyPLcFbL1Nw" \
http://${ServerName}/api/boards/pMBEMbm2KfrR2P73n/swimlanes/w53X5PSWDt28dzxxN/cards -s | \
jq -c '[.[] | select(.listId == "uK7Thp97rGdtEXQvC" or.listId == "JCsuKobA4wBL8jvmb") | .title | split(":")[1] | gsub("h";"") | tonumber]' -r
[2,3]
합계 계산
add
로 배열의 수치의 합계치를 구한다.$ curl -X GET -H "Authorization: Bearer YLerKsBaQMP3MwX7iLRioWKHXbewQ-e9jyPLcFbL1Nw" \
http://${ServerName}/api/boards/pMBEMbm2KfrR2P73n/swimlanes/w53X5PSWDt28dzxxN/cards -s | \
jq -c '[.[] | select(.listId == "uK7Thp97rGdtEXQvC" or.listId == "JCsuKobA4wBL8jvmb") | \
.title | split(":")[1] | gsub("h";"") | tonumber] | add' -r
5
참고
Reference
이 문제에 관하여(WekanAPI와 jq를 사용하여 카드에서 작업 시간을 추출해 본 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sakazoo/items/de989c286d55b1ee1ca6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)