Code Monkey home page Code Monkey logo

minireddit's Introduction

miniReddit

miniReddit - это приложение для просмотра постов с Reddit.

Imgur

Запуск

miniReddit может загружать посты в режиме инкогнито, для авторизации можно использовать свой личный аккаунт или воспользовать этим:

  • Login: miniredditaccount
  • Psssword: fLyr&63fhFHf

Для работы miniReddit требуется CLIENT_ID, который находится в конфигурацонном файле - /Configuration/Config.xcconfig.

Если он не работает, его можно получить самостоятельно по инструкции или написать мне на почту [email protected].

Сервисы Reddit

Для загрузки постов используется - Reddit API.

Авторизация происходит по протоколу OAuth2 - Reddit OAuth2.

Приложение

В приложении не используются сторонние библиотеки.

Приложение адаптировано для работы в вертикальной и горизонтальной ориентации.

iOS Deployment Target - iOS 13.

Описание

Архитектура

Архитектура приложения в miniReddit строится на координаторах, фабриках, роутере и модулях.

Каждый модуль включает в себя View, ViewController, Model и Provider.

Внутри модуля все части общаются друг с другом через протоколы.

Provider(это viewModel/presenter/interactor и т.д.) - предоставляет данные и сервисы для работы модуля.

Общие сервисы закрыты протоколами и с использованием адаптеров они инжектятся в модули.

Работа приложения

Работа miniReddit начинается со сборки и старта координатора в /Application/Lifecycle/SceneDelegate.swift.

В приложении 2 модуля Posts и Account, каждый собирается с использованием своей фабрики Posts factory и Account factory.

Есть 2 состояния: режим инкогнито и авторизован.

В режиме авторизован, при выполнении запросов к Reddit API, используется accessToken, если его действие истекло, то будет вызван запрос на обновление токена с refreshToken, после чего основной запрос будет выполнен с новым accessToken - Реализация с fallback через unauthorizedFallback.

Хранилищем для токенов выступает Keychain.

Загрузка изображений постов в таблице выполняется с помощью Operation и OperationQueue с последующим кешированием. Реализация.

Для удобства авторизации по OAuth2 используется ASWebAuthenticationSession. Реализация.

minireddit's People

Contributors

alexandersimbirtsev avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.