- Регистрация
- 23.09.18
- Сообщения
- 12.347
- Реакции
- 176
- Репутация
- 0
Есть замечательное приложение
Актуальная документация по работе с Youtrack
Как это работает:
Чтобы получить доступ к Youtrack из стороннего приложения, нужен токен для работы.
1. Логинимся в YouTrack в браузере
2. Идем в профиль «
3. Находим пункт «Update personal information and manage logins»
4. Открываем вкладку «Authentication»
5. Жмем кнопку «New token...»
6. Заполняем поле клиента «YoutrackTimerec»
7. Выбираем к каким подсистемам нам нужен доступ — для начала «YouTrack»
8. Нажимаем кнопку «Create Token»
9. Копируем токен, потому что он показывается только один раз.
Примеры в виде сurl запросов, но их легко переложить в нужную форму.
Для начала нужно проверить, что введенный адрес корректный и на стороне сервера есть REST API.
curl -X GET "
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"
если сервис доступен и ключ верный, в ответ придет json c данными учетки
{"login":"s.user",
"email":"[email protected]",
"name":"S User",
"id":"1-325",
"$type":"Me"}
Какой же Agile без задач? Упрощенно, задачи живут обычно в спринтах, а спринты в бордах. Как раз активные борды и надо получить, чтобы потом выбрать задачи для учета времени.
curl -X GET "
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"
Ответ содержит список доступных бордов для конкретного пользователя:
[
{
"projects":[{ "shortName":"OPS", "name":"Operations",
"id":"04", "$type":"Project" }],
"columnSettings":{
"columns":[
{ "presentation":"Open", "$type":"AgileColumn"},
{ "presentation":"In Progress, Paused","$type":"AgileColumn" },
{ "presentation":"Postponed", "$type":"AgileColumn" },
{ "presentation":"Closed, Resolved", "$type":"AgileColumn" },
{ "presentation":"Feedback, On Review", "$type":"AgileColumn" }
],
"$type":"ColumnSettings"
},
"name":"Web",
"id":"15",
"$type":"Agile"
}
]
Следующий этап — получение задач из борды:
— `Board Some Name:` указывается имя после пробела, заканчиваем `:`
— `{Current sprint}` берутся только задачи из текущего спринта
— `#Unresolved` берутся только незакрытые задачи
curl -X GET "
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"
Задачи придут массивом объектов, там довольно много свойств, но для учета времени будут нужны поля ID, Summary — заголовок, Spent Time — потраченное время в минутах, и sprint — ID спринта, если понадобится с ним работать.
{
"issue":[
{
"id":"38-1234",
"entityId":"2-12345",
"jiraId":null,
"field":[
{ "name":"projectShortName", "value":"38" },
{ "name":"summary", "value":"[system] [tech] Huge hard task" },
{ "name":"created", "value":"1582624816973" },
{ "name":"Spent time", "value":[ "399" ], "valueId":["6h 39m"],"color":null },
{ "name":"sprint", "value":[ { "value":"Value", "id":"ID" } ] }
],
}]
}
Полученных данных достаточно для отображений и перемещения по списку задач. Основная идея приложения считать время, проведенное в работе над конкретной задачей. Для этого надо послать серверу количество минут (WorkItem), следующим запросом
curl -i -X POST "
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/xml"
-d
UnixEpocTime*1000
10
added by Honsu
Development
Почему XML? По какой-то причине, тестовый сервер не принимает WorkItem в виде json-объекта.
История задач по дням:
Можно запросить задачи, у которых поле Spent Time > 0, обработав их WorkItem можно составить историю работы.
Запрос всех задач текущего спринта
curl -X GET "
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"
Далее обрабатываем пришедший массив задач, и делаем запросы для тех, которые имеют списанное время
curl -X GET "
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"
Обработав пришедшие данные, можно показать его в удобном виде
Где живет Honsu:
Собирается вместе с остальными примерами
или тут в виде exe (Windows):
Для чего это сделано:
+ вести учет времени, потраченного на задачи
+ посмотреть как работать rest api youtrack
+ по возможности сделать моноапп, без зависимостей
+ интересно
Что умеет:
+ забирать таски из youtrack
+ показывает активные boards
+ отмечать собранное время в виде workItem в задаче
+ отсекать время простоя
+ напоминать об отсутствии задачи при обнаружении активности
+ показывать историю учета времени с разбивкой по дням
+ не хранит локально данные, кроме ключа и сервера
Чего не умеет:
+ использовать несколько аккаунтов
+ хранить потреканное время если нет инета
+ создавать новые задачи инапп
+ отображать цвет задачек
+ строить графики времени работы
+ обновляться из релизов гита
На чем написано:
+ CMake + С++11 + OpenGL (или другой gapi)
+ OpenSSL
+ cpp-httplib
+ Активно поддерживается версия под Windows, на другие платформы (Ubuntu\MacOS) собирается и даже работает
You must be registered for see links
позволяющее трэкать время, потраченное на задачи в Youtrack, и записывающее его в таску. Но автор забросил его больше двух лет назад, плюс старые зависимости, постоянная загрузка одного ядра (тут видимо виноват electron) и периодические падения привели к тому, что пользоваться им стало «неудобно». Решил написать свой, с тем же функционалом, только на плюсах, так появился Honsu…Актуальная документация по работе с Youtrack
You must be registered for see links
Как это работает:
Чтобы получить доступ к Youtrack из стороннего приложения, нужен токен для работы.
1. Логинимся в YouTrack в браузере
2. Идем в профиль «
You must be registered for see links
»3. Находим пункт «Update personal information and manage logins»
4. Открываем вкладку «Authentication»
5. Жмем кнопку «New token...»
6. Заполняем поле клиента «YoutrackTimerec»
7. Выбираем к каким подсистемам нам нужен доступ — для начала «YouTrack»
8. Нажимаем кнопку «Create Token»
9. Копируем токен, потому что он показывается только один раз.
Примеры в виде сurl запросов, но их легко переложить в нужную форму.
Для начала нужно проверить, что введенный адрес корректный и на стороне сервера есть REST API.
curl -X GET "
You must be registered for see links
" -H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"
если сервис доступен и ключ верный, в ответ придет json c данными учетки
{"login":"s.user",
"email":"[email protected]",
"name":"S User",
"id":"1-325",
"$type":"Me"}
Какой же Agile без задач? Упрощенно, задачи живут обычно в спринтах, а спринты в бордах. Как раз активные борды и надо получить, чтобы потом выбрать задачи для учета времени.
curl -X GET "
You must be registered for see links
" -H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"
Ответ содержит список доступных бордов для конкретного пользователя:
[
{
"projects":[{ "shortName":"OPS", "name":"Operations",
"id":"04", "$type":"Project" }],
"columnSettings":{
"columns":[
{ "presentation":"Open", "$type":"AgileColumn"},
{ "presentation":"In Progress, Paused","$type":"AgileColumn" },
{ "presentation":"Postponed", "$type":"AgileColumn" },
{ "presentation":"Closed, Resolved", "$type":"AgileColumn" },
{ "presentation":"Feedback, On Review", "$type":"AgileColumn" }
],
"$type":"ColumnSettings"
},
"name":"Web",
"id":"15",
"$type":"Agile"
}
]
Следующий этап — получение задач из борды:
— `Board Some Name:` указывается имя после пробела, заканчиваем `:`
— `{Current sprint}` берутся только задачи из текущего спринта
— `#Unresolved` берутся только незакрытые задачи
curl -X GET "
You must be registered for see links
"-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"
Задачи придут массивом объектов, там довольно много свойств, но для учета времени будут нужны поля ID, Summary — заголовок, Spent Time — потраченное время в минутах, и sprint — ID спринта, если понадобится с ним работать.
{
"issue":[
{
"id":"38-1234",
"entityId":"2-12345",
"jiraId":null,
"field":[
{ "name":"projectShortName", "value":"38" },
{ "name":"summary", "value":"[system] [tech] Huge hard task" },
{ "name":"created", "value":"1582624816973" },
{ "name":"Spent time", "value":[ "399" ], "valueId":["6h 39m"],"color":null },
{ "name":"sprint", "value":[ { "value":"Value", "id":"ID" } ] }
],
}]
}
Полученных данных достаточно для отображений и перемещения по списку задач. Основная идея приложения считать время, проведенное в работе над конкретной задачей. Для этого надо послать серверу количество минут (WorkItem), следующим запросом
curl -i -X POST "
You must be registered for see links
" -H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/xml"
-d
UnixEpocTime*1000
10
added by Honsu
Development
Почему XML? По какой-то причине, тестовый сервер не принимает WorkItem в виде json-объекта.
История задач по дням:
Можно запросить задачи, у которых поле Spent Time > 0, обработав их WorkItem можно составить историю работы.
Запрос всех задач текущего спринта
curl -X GET "
You must be registered for see links
"-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"
Далее обрабатываем пришедший массив задач, и делаем запросы для тех, которые имеют списанное время
curl -X GET "
You must be registered for see links
"-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"
Обработав пришедшие данные, можно показать его в удобном виде
Где живет Honsu:
You must be registered for see links
Собирается вместе с остальными примерами
или тут в виде exe (Windows):
You must be registered for see links
Для чего это сделано:
+ вести учет времени, потраченного на задачи
+ посмотреть как работать rest api youtrack
+ по возможности сделать моноапп, без зависимостей
+ интересно
Что умеет:
+ забирать таски из youtrack
+ показывает активные boards
+ отмечать собранное время в виде workItem в задаче
+ отсекать время простоя
+ напоминать об отсутствии задачи при обнаружении активности
+ показывать историю учета времени с разбивкой по дням
+ не хранит локально данные, кроме ключа и сервера
Чего не умеет:
+ использовать несколько аккаунтов
+ хранить потреканное время если нет инета
+ создавать новые задачи инапп
+ отображать цвет задачек
+ строить графики времени работы
+ обновляться из релизов гита
На чем написано:
+ CMake + С++11 + OpenGL (или другой gapi)
+ OpenSSL
+ cpp-httplib
+ Активно поддерживается версия под Windows, на другие платформы (Ubuntu\MacOS) собирается и даже работает