Skip to content

Latest commit

 

History

History
33 lines (17 loc) · 3.28 KB

automated_keyword_search.md

File metadata and controls

33 lines (17 loc) · 3.28 KB

RoR + Selenium: автоматизированный поиск тем по ключевым словам на форуме

Необходимо продемонстрировать умение не только решать поставленную задачу, но и качественно оформлять код:

  • выбирать содержательные названия для классов, методов и переменных;

  • писать разумные комментарии к каждому классу и методу, указывать тип и описание для каждого параметра;

  • создавать методы и классы разумного размера (по количеству строк);

  • использовать константы с понятными названиями вместо «магических чисел».

Необходимо обдумать не только «позитивный» случай, но и возможные ошибки в процессе обработки (на практике они более чем возможны). В том числе случай, когда меняется структура страниц и алгоритм перестаёт функционировать корректно. Все такие ошибки должны правильно и, по возможности, унифицированно обрабатываться.

Задание

Реализуйте автоматизированный поиск тем по ключевым словам на вашем любимом форуме.

Предполагаемый алгоритм решения задачи

  • залогиниться на форуме, используя предоставленные логин и пароль аккаунта, если это требуется для получения списка пользователей;

  • получить список тем с ключевыми словами, используя поиск по форуму;

  • собрать все названия и URL тем из списка результатов, а также количество сообщений в каждой из них;

  • желательно также получить стартовое сообщение темы.

Технологии

Задание нужно реализовать на Ruby On Rails в виде API-вызова, где логин и пароль аккаунта, а также поисковая фраза (query) являются GET-параметрами, а ответ — JSON-объектом с полем success: true, data - списком объектов с полями title, body, replies_count, url, описывающих найденные темы.

Рекомендуем продумать архитектуру решения: желательно выделить «низкий уровень» элементарных запросов и «высокий уровень» управления навигацией и обработки ошибок навигации. Обязательно использовать принцип «тонких контроллеров» для resque jobs.