Skip to content

Test job. The implementation of Web and API interfaces.

Notifications You must be signed in to change notification settings

Vslava/volt_test_web

Repository files navigation

Как пользоваться

Формат ошибок

Если после запроса возникла ошибка на сервере, то ответ будет возвращенн в виде JSON в cледующем формате:

{ errors: [{ code: ...., message: .... },...] }

где:

  • code - это символьный код ошибки
  • message - пояснение к ошибке

а также соответствующего HTTP статуса ответа

Формат времени

Для кодирование даты и времени используем стандарт ISO8601. Если не указана временная зона, то предполагается что это UTC.

Настройки

Необходимо в файле .env в корне проекта прописать следующие переменные

Для сохранения аватарок пользователя

  • AWS_S3_ACCESS_KEY_ID - access_key_id для Amazon S3
  • AWS_S3_SECRET_ACCESS_KEY - secret_access_key для Amazon S3
  • AWS_S3_BUCKET_NAME - наименовани Bucket на Amazon S3 куда сохраняются файл. Его необходимо заранее создать. Для отправки отчета
  • FROM_EMAIL - адрес для поля From письма с отчетом
  • SMTP_SERVER - сервер через который будет производится отправка
  • SMTP_PORT - порт через который будет производится отправка писем
  • SMTP_AUTH_LOGIN - логин для авторизации отправки почты
  • SMTP_AUTH_PASS - пароль для авторизации отправки почты

В файле application.rb, либо в файле для соответствующего рабочего окружения надо прописать

config.auth_token_expiration_time = 1.days

Для работы фоновых задач необходимо установить sidekiq с настройками по умолчанию

Авторизация

Интерфейса для создания пользвателя нет, поэтому перед авторизацией необходимо создать пользователя вручную в базе. Для облегчения создания тестового пользователя можно запустить

$ bin/rails db:seed

Будет созданы 2 пользователя с параметрами:

Запрос

GET: /authenticate.json

Параметры

  • email - email пользователя
  • password - пароль

Ответ

в результате получаем JSON c полем

  • auth_token - авторизационный токен.

Данный токен необходимо добавлять к любому запросу как допольнительный параметр auth_token. Если токен будет пропущен при запросе, то в результате придет ошибка с кодом missing_token. Если токен будет неправильный или невалидный, то придет ошибка с кодом invalid_token.

Ошибки

  • invalid_credentials - возникает если логин или пароль неправильные или отсутствуют

Создание записи в блоге

Запрос

POST: /api/v1/posts.json

Параметры

  • title - заголовок записи (не более 200 символов)
  • body - текст записи (не более 10000 символов)
  • published_at - дата/время публикации (если не указана, то берется текущая дата/время)

Ответ

В ответ получаем JSON-запись с полями

  • id - идентификатор записи в базе
  • title - заголовок созданной записи
  • body - текст записи
  • published_at - дата/время публикации
  • author_nickname - nickname пользователя создавшего данную запись

Ошибки

  • post_create_failed - проблема при создании записи. Таких ошибок может быть несколько.

Запрос записи в блоге

Запрос

GET: /api/v1/posts/:id.json где id - это идентификатор записи в базе

Ответ

Аналогичен ответу при создании записи в блоге

Ошибки

  • not_found - если запись не найдена в базе

Запрос списка записей из блога

Запрос

GET: /api/v1/posts.json

Параметры

  • page - номер страницы
  • per_page - кол-во записей на страницу

Ответ

В ответ получаем JSON-запись со списком записей отсортированных по полю published_at по убыванию. Каждая запись в формате аналогичном ответу при создании записи в блоге. Дополнительно в HTTP-заголовке ответа передаются поля

  • Full-Page-Count - общее количество страниц
  • Full-Record-Count - общее количество записей в блоге

Генерация отчета

Запрос

GET: /api/v1/reports/by_author.json

Параметры

  • start_date - начальная дата выборки для отчета
  • end_date - конечная дата выборки для отчета
  • email - email куда надо выслать отчет

Ответ

В ответ получаем JSON-запись: { message: "Report generation started" }

About

Test job. The implementation of Web and API interfaces.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published