Skip to content

Instantly share code, notes, and snippets.

@dabonka
Created June 14, 2019 13:38
Show Gist options
  • Save dabonka/2d738a48cb98aaa8def89da762928dc9 to your computer and use it in GitHub Desktop.
Save dabonka/2d738a48cb98aaa8def89da762928dc9 to your computer and use it in GitHub Desktop.
Задача
В рамках тестового задания предлагается реализовать rest сервис на Ruby/Elixir, который позволит просматривать список репозиториев пользователей github.com, а так же коммиты в конкретном репозитории.
В качестве тестовых данных можно использовать имя пользователя matz и его репозиторий streem.
Требования к реализации
• Реализовать приложение с помощью Ruby/Elixir
• Использовать graphql api github.com (https://developer.github.com/v4/)
• Для формирования запросов к api github использовать любой http клиент (использовать официальные клиенты под github api нельзя)
• Приложение должно запускаться локально и быть доступно по порту 4000, для этого можно использовать любой web фрэймворк (Sinatra, Rails, Rack etc)
• Плюсом будет документация Readme.md и тесты на проект
Результат выполнения работы выложить на github.com.
Функциональные требования
BREQ1 Просмотр репозиториев пользователя
При запросе ресурса /user/:login приложение должно возвращать в ответе последние 10 репозиториев пользователя.
Ресурс: /user/:login
Тип запроса: GET
Формат ответа: JSON
Структура ответа:
{
"response": {
"user": {
"name": "user name"
},
"repositories": [
{
"name": "repo name",
"created_at": "repo created at date"
}
]
}
}
В противном случае, если искомого логина не существует, необходимо вернуть ошибку.
Структура ответа:
{
"response": {
"error": “<Reason>"
}
}
BREQ2 Отображение коммитов в репозитории
При запросе ресурса GET /user/:login/:repo приложение должно возвращать в ответе последние 10 коммитов из master ветки запрашиваемого репозитория.
Ресурс: /user/:login/:repo
Тип запроса: GET
Формат ответа: JSON
Структура ответа:
{
"response": {
"repo": {
"name": "repo name",
"commits": [
{
"message": "commit message",
"commit_date": "date-of-commit"
}
]
}
}
}
В противном случае, если искомого репозитория не существует, необходимо вернуть ошибку.
Структура ответа:
{
"response": {
"error": “<Reason>"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment