Closed mikanoz closed 9 years ago
Сделано в тестовом варианте: несколько таблиц, загружаемых из GitHub’а посредством его API.
В командной строке: $ php artisan command:testGitHubApi users --save $ php artisan command:testGitHubApi issues --save $ php artisan command:testGitHubApi comments --save $ php artisan command:testGitHubApi issuesEvents –save Загружаются данные в таблицы соответственно: • пользователей; • задач; • комментарий пользователей к задачам; • коммитов этих задач.
Запуск команды без опции «--save» выводит полученные данные на экран в сокращенном виде (то, что предполагается сохранять в БД). Например, $ php artisan command:testGitHubApi issues
Есть еще параметры запуска: • $ php artisan command:testGitHubApi commits • $ php artisan command:testGitHubApi events
Список пользователей еще под вопросом (кого туда вносить и по каким запросам к GitHub API).
Комментарии по коду команды: https://github.com/fintech-fab/fintech-fab.ru/commit/238f5d49749c1152822ec8b1edb1c86da32336fd
Добавлен маршрут и бланк страницы сайта. Сделана рабочая команда, загружающая данные с GitHub’а. Но она ничего не загружает и не показывает: в ней нет «движка». Команда:
$ php artisan command: fintech-fabFromGitHub
Чтобы получить данные нужно запустить функцию «getFromGitHubApi($httpRequest)» по нужному адресу и сохранить полученные данные в нужную модель данных, функцией «saveInDB($inData, $classDB)»
Сделано в рабочем варианте загрузка данных для одной из таблиц БД:
В командной строке: $ php artisan fintech-fab:git-hub comments
Загружаются все страницы, выдаваемые API GitHub'бом
Сделал ревью. (Важное замечание - автоформат кода настрой обязательно. В инструкции на вики есть)
Сделана загрузка пользователей
В командной строке: $ php artisan fintech-fab:git-hub users
Сделаны повторные запросы, дающие, при отсутствии новых данных, статус ответа 304
В принципе, основное закончено. Данные загружаются из GitHub’а, и отображаются на интернет странице. Только вот один пункт не получилось сделать. Предполагалось загружать общие коммиты (главной ветки), но прямым запросом это не сделать (есть общая куча коммитов…).
На данный момент есть возможность использовать пароль пользователя GitHub’а (в файле app/config/github.php). Это даст лимит запросов 5000 в течение часа (без авторизации — 60 запросов).
На вкладке «Общее» отображаются события открытия/закрытия задач, но показываются только недавние события (старых не видно).
Задачу согласен назвать готовой :-)
Подведу итоги:
1) Все работает - отлично. 2) Без подсказки - учтено время обновления - лишние данные не обрабатываются - молодец. 3) Постраничный сбор - прекрасно. 4) При работе команды выводится подробная информация о процессе - 5 баллов.
Есть предложения по улучшению, но это уже больше эстетика, чем реальная необходимость. Это то, что я бы сделал, решая эту задачу. Если будешь согласен - поставлю отдельными задачами:
1) Еще сильнее почистить команды - чтобы там были только аргументы и "запускатели". Почему так правильно? Например, можно сделать из веб-интерфейса, находясь в конкретной задаче, обновить коммиты по этой задаче. Тогда вынесенный из artisan-команды код пригодится. Вынесение по типу класса GitHubAPI (компонентом).
2) Реализовать задачу в виде отдельного пакета для composer. Стоит сделать, если просто хочется научиться делать независимые пакеты к Laravel.
3) Если делать пункт (1), то хотелось бы иметь не одну команду, а несколько. Также, как делают разработчики фреймворка, например queue:
queue:failed List all of the failed queue jobs
queue:failed-table Create a migration for the failed queue jobs database table
queue:flush Flush all of the failed queue jobs
4) Переделать/оптимизировать работу контроллера при отображении задач. Получились довольно сложные конструкции, можно сделать проще/легче. Пока без деталей - если интересно - поставлю задачу.
5) Это обязательно - добавить в справку команды инфу по последовательности запуска команд. А то я запутался. Наловил эксепшенов с ключами. Но позапускав с разными параметрами, в итоге все получилось.
где скачать приложение?
Приложения нет :) а задача почти закрыта уже.
Не понятно почему нет приложения ((
По п.1 сделаны запускатели (public). По п.5 добавлено в справку, что сначала нужно загружать пользователей «users», затем задачи «issues» (однако по логике, сейчас сбоев не должно быть: если задачи не загружены, то связанные с ними данными просто не должны отображаться на странице; а пользователи каждый раз принудительно проверяются).
По п.4 я предполагаю лишь такой способ: сделать несколько представлений (view) и модели для них. И в контроллере получать данные через эти модели. Но всё это и прочее, лучше как отдельные задачи.
У гитхаба есть API (https://developer.github.com/v3/) В Laravel есть консольные команды (http://laravel.com/docs/commands) Нужно сделать такую вещь:
Это будет похоже на "ленту новостей" с гит-хаба о деятельности стажеров - какие есть задачи, кто чем занимается, какие последние коммиты были, в каких репозиториях и т.п.