Хотите расти как разработчик и найти крутую работу? Не протирайте штаны — займитесь Open Source проектами. Так легче всего попасть в лучшие команды разработчиков и положить себе в резюме настоящий проект, вместо нелепых «примеров кода». Но найти подходящий проект для участия сложно. Начинаются лень и отговорки, а за ними — отсутствие профессионального роста, критики по-настоящему крутых программистов, уныние и застой.
На Cult of Martians мы собираем интересные задачи для современных веб-программистов. Можно выбрать подходящую по сложности, продолжительности и специализации. Задачи не выдуманы «из воздуха» — каждая решает насущную проблему, и решить ее можно через создание нового Open Source проекта или улучшение существующего. Решайте задачи, прокачивайтесь, присылайте решение на оценку. Лучших могут пригласить к себе на работу компании, программистам которых понравится ваше решен ие.
Для новичков, задача на неделю
Необходимо разработать OmniAuth-стратегию для входа в приложения на Ruby с учетной записью eBay в виде отдельного гема.
Сейчас есть гемы, которые реализуют вход через метод Auth’n’auth (например, подзаброшенный гем omniauth-ebay), а через метод OAuth — нет. (Технически оба метода работают по протоколу OAuth, что вносит путаницу).
Для работы с новыми REST API eBay пользователь должен входить именно через новый метод входа.
Польза: возможность разобраться, как же работает вход через соцсети протокол OAuth и библиотека OmniAuth.
Решение: итоговая реализация основана на решении Игната Закревского, но и Андрей Падерин и Илья Долгирев прислали рабочие решения, за что им выражается благодарность.
Что нужно реализовать:
Ruby gem с OmniAuth-стратегией и тестами на взаимодействие с eBay.
Советы по реализации
Язык реализации: Ruby.
Документация начинается здесь и продолжается здесь.
Примечание: После успешной аутентификации пользователя на стороне eBay, у нас нет никакой информации, кто же к нам пришел. Для этих целей провайдеры обычно предоставляют так называемый UserInfo endpoint, но проблема в том, что в новых eBay REST API такого нет. Поэтому для получения информации необходимо делать запрос к методу getUser
старого Trading API с указанием нового токена заголовке X-EBAY-API-IAF-TOKEN
(мы пишем это здесь, потому что в документации этого не найти).
Инструкции по выполнению