Написать веб. сервис использующий Github REST API и предоставляющиий API c информацией о самых популярных (наибольшее кол-во stars) репозиториях пользователей.
Оценивать будем умение выполнять задачу имея неполные данные о ней, умение самостоятельно принимать решения и качество кода.
-
Реализовать сервис с API endpoint, возвращающий информацию о самых популярных (имеющих наибольшее количество stars) репозиториях пользователя (находящихся на его аккаунте). Endpoint должен принимать Github username пользователя, максимальное кол-во результатов (по умолчанию 10) и возвращать список с информацией о репозиториях (id, name, stars, url) отсортированных по кол-ву звезд.
Пример запроса (для юзера https://github.com/wkentaro):
HTTP GET /api/top/wkentaro?limit=4 [ { "id": 58374888, "name": "labelme", "stars": 7560, "html_url": "https://github.com/wkentaro/labelme" }, { "id": 44421756, "name": "gdown", "stars": 1485, "html_url": "https://github.com/wkentaro/gdown" }, { "id": 82214976, "name": "pytorch-fcn", "stars": 1480, "html_url": "https://github.com/wkentaro/pytorch-fcn" }, { "id": 91914165, "name": "pytorch-for-numpy-users", "stars": 582, "html_url": "https://github.com/wkentaro/pytorch-for-numpy-users" } ]
Подумайте какие ситуации должны обрабатываться.
-
Реализовать кеширование результатов (хранить данные в sqlite, время жизни кеша 1 час). Должен использоваться кеш, если данные в нём актуальны, в противном случае после выполнения запроса кеш должен быть обновлен.
-
Добавить тесты в проект
- Python 3.7+
- Использовать любой асинхронный (asyncio) фреймворк
- Результаты должны быть представлены в виде ссылки на github репозиторий
- Репозиторий должен содержать инструкции по сборке (запуску) приложения и тестов