From a4f51d76ec0c7daa5962112fbe618b519c943b0a Mon Sep 17 00:00:00 2001 From: Hounddog Date: Fri, 26 Oct 2012 18:50:37 +0200 Subject: [PATCH] Refactored for use with new EdpGithub module --- .gitmodules | 3 --- config/application.config.php | 4 ++-- module/Application/Module.php | 13 +++++++++-- .../Controller/IndexController.php | 3 +++ .../src/Application/Service/Repository.php | 19 +++++---------- .../Application/View/Helper/ListModules.php | 18 +++++++++------ module/User/Module.php | 10 ++++++++ .../src/User/View/Helper/UserRepositories.php | 23 ++++++++++++------- public/index.php | 2 -- 9 files changed, 58 insertions(+), 37 deletions(-) diff --git a/.gitmodules b/.gitmodules index b0a38601..23386191 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,9 +16,6 @@ [submodule "vendor/ZF2"] path = vendor/ZF2 url = https://github.com/zendframework/zf2.git -[submodule "vendor/EdpGithub"] - path = vendor/EdpGithub - url = https://github.com/Hounddog/EdpGithub.git [submodule "vendor/ScnSocialAuth"] path = vendor/ScnSocialAuth url = https://github.com/Hounddog/ScnSocialAuth.git diff --git a/config/application.config.php b/config/application.config.php index 225e5f51..811915d8 100644 --- a/config/application.config.php +++ b/config/application.config.php @@ -7,11 +7,11 @@ 'ZfcBase', 'ZfcUser', 'ScnSocialAuth', + 'HybridAuth', + 'EdpGithub', 'Application', 'AssetManager', 'Assetic', - 'HybridAuth', - 'EdpGithub', 'User', ), 'module_listener_options' => array( diff --git a/module/Application/Module.php b/module/Application/Module.php index c9f7b836..ae060e21 100644 --- a/module/Application/Module.php +++ b/module/Application/Module.php @@ -50,14 +50,23 @@ public function getServiceConfig() }, 'application_module_service' => function($sm) { $service = new Service\Module; - $service->setApi($sm->get('edpgithub_api_factory')); + $service->setApi($sm->get('EdpGithubClient')); return $service; }, 'application_service_repository' => function($sm) { $service = new Service\Repository; - $service->setApi($sm->get('edpgithub_api_factory')); + $service->setApi($sm->get('EdpGithubClient')); return $service; }, + 'github_client' => function($sm) { + $hybridAuth = $sm->get('HybridAuth'); + $adapter = $hybridAuth->getAdapter('github'); + $token = $adapter->getAccessToken(); + + $client = $sm->get('EdpGithubClient'); + $client->authenticate('url_token',$token['access_token'], null); + return $client; + } ), ); } diff --git a/module/Application/src/Application/Controller/IndexController.php b/module/Application/src/Application/Controller/IndexController.php index dae6b2e5..5b1a393a 100644 --- a/module/Application/src/Application/Controller/IndexController.php +++ b/module/Application/src/Application/Controller/IndexController.php @@ -16,6 +16,9 @@ class IndexController extends AbstractActionController { public function indexAction() { + $sm = $this->getServiceLocator(); + $repos = $sm->get('EdpGithub\Client')->api('current_user')->repos(); + $mapper = $this->getServiceLocator()->get('application_module_mapper'); $repositories = $mapper->findAll(); return array('repositories' => $repositories); diff --git a/module/Application/src/Application/Service/Repository.php b/module/Application/src/Application/Service/Repository.php index b44990ac..0a763792 100644 --- a/module/Application/src/Application/Service/Repository.php +++ b/module/Application/src/Application/Service/Repository.php @@ -2,14 +2,14 @@ namespace Application\Service; -use EdpGithub\ApiClient\ApiClient; +use EdpGithub\Client; class Repository { /** * @var array */ - protected $repository; + protected $repositories; /** * @var EdpGithub\ApiClient\ApiFactory @@ -24,16 +24,9 @@ class Repository public function getAllRepository($type) { if(!isset($this->repository[$type])) { - echo $this->api->getOauthToken(); - exit; - $service = $this->api->getService('Repo'); - $params['per_page'] = 100; - $params['page'] = 1; - $this->repositories[$type] = $service->listRepositories(null, $type, $params); - if($this->api->getNext() && $this->api->getNext() != $this->api->getCurrent()) { - $params['page'] = $this->api->getNext(); - $this->getRepositoriesRecursive($this->repositories[$type], $params); - } + $client = $this->api; + + $this->repositories[$type] = $client->api('current_user')->repos($type); } return $this->repositories[$type]; } @@ -52,7 +45,7 @@ protected function getRepositoriesRecursive(&$repos, $params) { $this->getAllRepos($repos, $params); } } - public function setApi(ApiClient $api) + public function setApi(Client $api) { $this->api = $api; } diff --git a/module/Application/src/Application/View/Helper/ListModules.php b/module/Application/src/Application/View/Helper/ListModules.php index c90274e0..f933afb9 100644 --- a/module/Application/src/Application/View/Helper/ListModules.php +++ b/module/Application/src/Application/View/Helper/ListModules.php @@ -35,24 +35,28 @@ public function __invoke($options = null) $mapper = $sm->get('application_module_mapper'); $user = isset($options['user'])? $options['user']:false; + $modules = array(); //limit modules to only user modules if($user) { $service = $service = $sm->get('application_service_repository'); - $ownerRepos = $service->getAllRepository('owner'); - $memberRepos = $service->getAllRepository('member'); + $repositories = array(); - foreach($ownerRepos as $key => $repo) { - if($repo->getFork()) { - unset($ownerRepos[$key]); + $ownerRepos = $service->getAllRepository('owner'); + foreach($ownerRepos as $repo) { + if(!$repo->fork) { + $repositories[] = $repo; } } - $repositories = array_merge($ownerRepos, $memberRepos); + $memberRepos = $service->getAllRepository('member'); + foreach($memberRepos as $repo) { + $repositories[] = $repo; + } foreach($repositories as $key => $repo) { - $module = $mapper->findByName($repo->getName()); + $module = $mapper->findByName($repo->name); if($module) { $modules[] = $module; } diff --git a/module/User/Module.php b/module/User/Module.php index 58fac2b6..d7b7122b 100644 --- a/module/User/Module.php +++ b/module/User/Module.php @@ -11,6 +11,7 @@ class Module extends AbstractModule public function bootstrap(ModuleManager $moduleManager, ApplicationInterface $app) { $em = $app->getEventManager()->getSharedManager(); + $sm = $app->getServiceManager(); $em->attach('ScnSocialAuth\Authentication\Adapter\HybridAuth','githubToLocalUser', function($e) { $localUser = $e->getTarget(); @@ -22,6 +23,15 @@ public function bootstrap(ModuleManager $moduleManager, ApplicationInterface $ap $localUser->setUsername($nickname); $localUser->setPhotoUrl($userProfile->photoURL); }); + + $em->attach('EdpGithub\Client', 'api', function($e) use ($sm) { + $hybridAuth = $sm->get('HybridAuth'); + $adapter = $hybridAuth->getAdapter('github'); + $token = $adapter->getAccessToken(); + + $client = $e->getTarget(); + $client->authenticate('url_token', $token['access_token']); + } ); } public function getServiceConfig() diff --git a/module/User/src/User/View/Helper/UserRepositories.php b/module/User/src/User/View/Helper/UserRepositories.php index 48a33bca..5aae8144 100644 --- a/module/User/src/User/View/Helper/UserRepositories.php +++ b/module/User/src/User/View/Helper/UserRepositories.php @@ -33,27 +33,34 @@ public function __invoke($options = array()) $sm = $sm->getServiceLocator(); $service = $sm->get('application_service_repository'); - $ownerRepos = $service->getAllRepository('owner'); - $memberRepos = $service->getAllRepository('member'); + $repositories = array(); + $ownerRepos = $service->getAllRepository('owner'); + foreach($ownerRepos as $repo) { + if(!$repo->fork) { + $repositories[] = $repo; + } + } - $repositories = array_merge($ownerRepos, $memberRepos); + $memberRepos = $service->getAllRepository('member'); + foreach($memberRepos as $repo) { + $repositories[] = $repo; + } $mapper = $sm->get('application_module_mapper'); - foreach($repositories as $key => $repo) { - if($repo->getFork()) { + if($repo->fork) { unset($repositories[$key]); } else { - $module = $mapper->findByName($repo->getName()); + $module = $mapper->findByName($repo->name); if($module) { unset($repositories[$key]); - } + } } } return $repositories; - } + } /** * Retrieve service manager instance diff --git a/public/index.php b/public/index.php index 77f165e5..29a83da7 100644 --- a/public/index.php +++ b/public/index.php @@ -4,8 +4,6 @@ * to the application root now. */ chdir(dirname(__DIR__)); -ini_set('display_startup_errors', 1); -ini_set('display_errors', 1); // Setup autoloading include 'init_autoloader.php';