https://voltblogapi.herokuapp.com/ Регистрация осуществляется через web форму, после аунтификации на странице пользователя находится токен, который нужно передавать в Хэдере через поле Authorization, для аунтификации при post запросе.
Часть 1. REST API для блога 1.1 Модели Post — записи в блоге
title — строковое, обязательное body — строковое, обязательное author — ссылка на автора published_at — дата-время размещения записи Comment — комментарии к записям
body — строковое, обязательное published_at — дата-время размещения комментария User -- пользователи. Поскольку у нас есть авторы, нужна модель в которой мы будем их хранить.
nickname — строковое, обязательное email — строковое, обязательное password — строковое, обязательное 1.2 Эндпоинты 1.2.1 Реализовать эндпойнт для аутентификации. Как его сделать, up to you.
1.2.2 POST /api/v1/posts.json
Отправляем:
title body published_at В ответ получаем json с полями:
id title body published_at author_nickname Если в запросе не передали published_at, то нужно подставлять текущий момент времени. Если передали не все поля, то ответ должен содержать одно поле errors — массив ошибок.
1.2.3 GET /api/v1/posts/:post_id.json Получить post по его id, поля в ответе как в эндпойнте POST /api/v1/posts.json
1.2.4 GET /api/v1/posts.json
Отправляем:
page per_page Получаем в ответ список записей отсортированных полю published_at по убыванию поля каждой записи как в эндпойнте POST /api/v1/posts.json. В заголовках ответа нужно передать общее количество страниц и записей.
1.2.5 Эндпойнты для комментариев можно не делать, необязательная часть
1.3 Прочие требования Rails 5.x Postgres 9.x Rspec 3.x Json — ActiveModelSerializer или jsonapi-resources В таблицах нужно указывать все необходимые индексы Код моделей и контроллеров нужно покрыть тестами Работающее приложение нужно разместить на heroku, указав в README репозитория ссылку на него Часть 2. Интерфейс, загрузка файлов и фоновые задачи 2.1 Загрузка аватара На базе первой части сделать страницу, где пользователь может загрузить свой аватар. Интерфейс может быть простейшим, сделанным на дефолтном бутстрапе. Пользователю нужно выбирать файл jpg/png размером до 3мб, загружать его и видеть его превью после загрузки, урезанный до 300x300px. Файлы нужно загружать на S3
2.2 Аналитический отчет На базе первой части , сделать аналитический отчёт. Эндпоинт: POST /api/v1/reports/by_author.json
Параметры запроса:
start_date — начало интервала end_date — конец интервала email — куда отправить отчёт Поля в ответе:
message — “Report generation started” Эндпоинт добавляет задачу на генерацию отчёта в очередь, очередь обрабатывается отдельным процесом. Готовый отчёт отправляется на email указанный в задаче.
Отчёт должен представлять собой таблицу со столбцами: nickname
email количество записей за период количество комментариев за период Строки в отчёте должны быть отсортированы по значению вычисляемому как (количество постов + количество комментариев/10). Таблицу можно оформить как в виде html таблицы так и при помощи ASCII символов. Для этого задания нужно заполнить базу тестовыми данными, для чего удобно использовать gem faker.
2.3 Общие требования ко второй части Результат выполнения второй части тестового задания так же нужно опубликовать на heroku в виде работающего приложения, указав в README репозитория ссылку на него