Skip to content

Latest commit

 

History

History
48 lines (29 loc) · 3.95 KB

File metadata and controls

48 lines (29 loc) · 3.95 KB

Задача 4 | Список спецпредложений – получение данных

⬅️ назад

ТЗ

Необходимо реализовать логику получения данных для отображения виджета с информацией о пользователе.

Запрос 1

Метод 1: BundlesApi.getBundles()

Результат запроса должен представляться списком объектов типа BundleInfo и получаться из JSON jsonProvider.bundlesJson.

Полученные данные нужно сохранять в кеш. До совершения сетевого запроса нужно проверять наличие кеша (если непусто, то сразу возвращать данные)

Запрос 2

Метод 2: OffersApi.getOffers(userId=<ID пользователя>, recomendation=true/false)

Значение параметра recomendation равно true или false в зависимости от вызываемого метода

Результат запроса должен представляться массивом модели OfferInfo и получаться из JSON jsonProvider.offersJson

Возможные значения для поля type объекта bonuses:

  • cashback – кэшбэк (процент)
  • special_points – бонусные баллы value в bonuses – дробное число

Массив restrictions содержит ограничения по отображению и доступности спецпредложения (может быть пустой, но поле обязательное). Возможные значения элементов:

  • for_bundles – описывает ограничения по подпискам. Внутри содержится массив bundles_ids с кодами подписок, для которых доступно данное спецпредложение, а также newValue, которое указывает то, на какое значение необходимо заменить бонус из bonuses->value

Запрос 3

Метод 3: OffersApi.getFullOffer(userId = <ID пользователя>, id=<ID спецпредложения>)

Результат запроса должен представляться моделью OfferFullInfo и получаться из JSON jsonProvider.offersJson

Контракт объекта спецпредложения содержит в себе все то, что описано в запросе 2. Особенностью данного метода является то, что он содержит расширенную информацию об конкретном спецпредложении.

Ожидаемое решение

  • Необходимо реализовать DefaultBundlesApi, который получает JSON из jsonProvider.bundlesJson и возвращает список объектов типа BundleInfo
  • DefaultBundlesApi должен реализовывать интерфейс BundlesApi
  • Необходимо реализовать DefaultOffersApi, который получает JSON из jsonProvider.offersJson и возвращает список объектов типа OfferInfo в одном методе и объект типа OfferFullInfo в другом
  • DefaultOffersApi должен реализовывать интерфейс OffersApi
  • Необходимо реализовать BundlesRepositoryImpl для данных о подписках и выбора между данными из кеша BundlesLocalDataSource или BundlesRemoteDataSource в зависимости от наличия данных.
  • BundlesRepositoryImpl должен реализовывать интерфейс BundlesRepository