Skip to content

fenicsant/restream_quest

Repository files navigation

Тестовое задание для restream

Назначение

Для прояснения практических навыков тестируемого

Исходные данные

Предлагается написать клиента для вымышленного сервиса базы-кинофильмов. Сервис предоставляет api, который отдает список фильмов. Формат выдачи такой:

https://gist.github.com/numbata/5ed307d7953c3f7e716f/b7887adc444188d8aa8e61d39b82950f28c03966

Можно грузить json напрямую с гитхаба:

https://gist.githubusercontent.com/numbata/5ed307d7953c3f7e716f/raw/b7887adc444188d8aa8e61d39b82950f28c03966/movies.json

Функционал тестового приложения

  • список фильмов с превью
  • клик/тач по элементу списка фильмов перебрасывает на страницу фильма
  • страница фильма состоит из описания фильма и плеера проигрывающего трейлер фильма

Используемые средства

При разработке использовалась Qt5.5 OpenSource на базе minGW-4.9 x86 Для генерации документации Doxygen 1.8.

Компиляция и выполнение

Для компиляции проекта требуются:

  • утилита qmake из состава Qt. Данная утилита формирует Makefile для утилиты make;
  • утилита make. Данная утилита предназначена для пакетной обрабоке файлов по заданному Makefile;
  • компилятор и компоновщик необходимые для компиляции c++ файлов.

Для компиляции проекта в командной строке набрать:

qmake && make

Для ряда платформ таких как Windows Visual Studio, Linux с с предустановленными библиотеками Qt, этот подход не подойдет. Наиболее простым решением для компиляции проекта будет использование среды разработки. Например: qtcreator.

Описание функционала

Логическая структура

Проект делится на следующие части:

  • интерфейсные модули, предназначенные для выполнения операций в фоновом режиме;
  • модули, предназначенные для отображения информации пользователю.
Интерфейсные модули

Интерфейсные модули разделены на две группы файлов:

  • serverintf.h - интерфейс с серверным API. Выделен для более гибкой адаптации модификаций протокола взаимодействия.
  • inetfile.h - интерфейс получения данных из сети. Решает ряд задач по буферизации получаемых данных, контролю получения.
Модули отображения информации

Модули отображения информации пользователю разбиты на следующие группы файлов:

  • filmlistview.h - список фильмов: название, постер, краткое описание;
  • filmlistitem.h - элемент списка фильмов. Производит чтение хранение, отображение;
  • filmpreviewer.h - полное описание фильма, с отображением трейлера. Настраивается через ui файл;
  • mediaplayer.h - медиа проигрыватель. Отличается от базового, что все собрано вместе, добавлены элементы управления.
Что на данный момент не сделано

На данный момент в проекте задумывалось, но еще не реализовано:

  • сбор информации об ошибках, для отправки разработчикам;
  • тестовые модули, они безусловно нужны, но увеличивают время разработки в разы;
  • легкий json парсер, для максимального обхода ошибок лексики. Т.е. чтобы небольшие ошибки документа просто игнорировались бы;
  • обновления фильмов в списке, в фоновом режиме, с определенной периодичностью;
  • реализация конфигурационного файла и модуля работы с ним;

About

Тестовое задание для restream, Архив собранного для Windows:

Resources

License

Stars

Watchers

Forks

Packages

No packages published