Тестовое задание можно выполнить на любом веб-фреймворке (django/flask/pyramid/falcon/aiohttp/sanic) и прислать нам ссылку на репозиторий, либо архив с вашим кодом и документацией по нему. Имейте в виду, что выбранных вами библиотек может не быть на компьютере проверяющего, поэтому укажите все зависимости в отдельном файле (requirements/Pipfile). Если вы достаточно хорошо знакомы с Docker, то можете написать docker-compose конфиг и упаковать приложение в контейнер, где все необходимое уже будет установлено, а ваш код собран и готов к запуску. Это идеальный вариант.
После проверки задания мы обязательно сообщим вам о нашем решении.
Необходимо написать приложение, которое будет парсить новостную ленту Hacker News (главную страницу), сохранять данные в БД (на ваш выбор) и иметь HTTP API, с помощью которого можно получить список новостей. Парсить нужно заголовок и URL новости, а так же сохранять время, когда новость была добавлена в БД. Приложение должно периодически приходить на HN и парсить главную страницу опять, сохраняя в БД только новые посты.
API метод для получения списка новостей. На запрос:
curl -X GET http://localhost:8000/posts
Должен возвращаться список новостей в формате JSON:
[
{"id": 1, "title": "Announcing Rust 1.33.0", "url": "https://example.com"},
{"id": 2, "title": "Redesigning GitHub Repository Page", "url": "https://example.com"}
]
Должна работать сортировка по заданному атрибуту, по возрастанию и убыванию.
curl -X GET http://localhost:8000/posts?order=title
Так же клиент должен иметь возможность запросить подмножество данных, указав offset и limit. Пусть по-умолчанию API возвращает 5 постов.
curl -X GET http://localhost:8000/posts?offset=10&limit=10
Разумеется, клиент может указать и сортировку, и лимит одновременно.
- Инструкции по запуску приложения должны находиться в README
- Приложение должно быть развернуто и доступно по URL
- Код должен быть покрыт тестами. Вы можете использовать любую библиотеку (unittest, nose, pytest)