fintech-fab / fintech-fab.ru

Fintech Fab Website - стажировка, обучение, тренинги
4 stars 16 forks source link

Виджет группы стажировки с гит-хаба #14

Closed mikanoz closed 9 years ago

mikanoz commented 10 years ago

У гитхаба есть API (https://developer.github.com/v3/) В Laravel есть консольные команды (http://laravel.com/docs/commands) Нужно сделать такую вещь:

Это будет похоже на "ленту новостей" с гит-хаба о деятельности стажеров - какие есть задачи, кто чем занимается, какие последние коммиты были, в каких репозиториях и т.п.

k17-sergey commented 10 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).

mikanoz commented 10 years ago

Комментарии по коду команды: https://github.com/fintech-fab/fintech-fab.ru/commit/238f5d49749c1152822ec8b1edb1c86da32336fd

k17-sergey commented 10 years ago

Добавлен маршрут и бланк страницы сайта. Сделана рабочая команда, загружающая данные с GitHub’а. Но она ничего не загружает и не показывает: в ней нет «движка». Команда:

$ php artisan command: fintech-fabFromGitHub

Чтобы получить данные нужно запустить функцию «getFromGitHubApi($httpRequest)» по нужному адресу и сохранить полученные данные в нужную модель данных, функцией «saveInDB($inData, $classDB)»

k17-sergey commented 10 years ago

Сделано в рабочем варианте загрузка данных для одной из таблиц БД:

В командной строке: $ php artisan fintech-fab:git-hub comments

Загружаются все страницы, выдаваемые API GitHub'бом

mikanoz commented 10 years ago

Сделал ревью. (Важное замечание - автоформат кода настрой обязательно. В инструкции на вики есть)

k17-sergey commented 10 years ago

Сделана загрузка пользователей

В командной строке: $ php artisan fintech-fab:git-hub users

Сделаны повторные запросы, дающие, при отсутствии новых данных, статус ответа 304

k17-sergey commented 10 years ago

В принципе, основное закончено. Данные загружаются из GitHub’а, и отображаются на интернет странице. Только вот один пункт не получилось сделать. Предполагалось загружать общие коммиты (главной ветки), но прямым запросом это не сделать (есть общая куча коммитов…).

k17-sergey commented 10 years ago

На данный момент есть возможность использовать пароль пользователя GitHub’а (в файле app/config/github.php). Это даст лимит запросов 5000 в течение часа (без авторизации — 60 запросов).

На вкладке «Общее» отображаются события открытия/закрытия задач, но показываются только недавние события (старых не видно).

mikanoz commented 10 years ago

Задачу согласен назвать готовой :-)

Подведу итоги:

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) Это обязательно - добавить в справку команды инфу по последовательности запуска команд. А то я запутался. Наловил эксепшенов с ключами. Но позапускав с разными параметрами, в итоге все получилось.

Quazar99 commented 10 years ago

где скачать приложение?

mikanoz commented 10 years ago

Приложения нет :) а задача почти закрыта уже.

Quazar99 commented 10 years ago

Не понятно почему нет приложения ((

k17-sergey commented 10 years ago

По п.1 сделаны запускатели (public). По п.5 добавлено в справку, что сначала нужно загружать пользователей «users», затем задачи «issues» (однако по логике, сейчас сбоев не должно быть: если задачи не загружены, то связанные с ними данными просто не должны отображаться на странице; а пользователи каждый раз принудительно проверяются).

По п.4 я предполагаю лишь такой способ: сделать несколько представлений (view) и модели для них. И в контроллере получать данные через эти модели. Но всё это и прочее, лучше как отдельные задачи.