You've already forked joomla_test
							
							
		
			
				
	
	
		
			227 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			227 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * @package     Joomla.Platform
 | |
|  * @subpackage  GitHub
 | |
|  *
 | |
|  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 | |
|  * @license     GNU General Public License version 2 or later; see LICENSE
 | |
|  */
 | |
| 
 | |
| defined('JPATH_PLATFORM') or die;
 | |
| 
 | |
| /**
 | |
|  * GitHub API Hooks class for the Joomla Platform.
 | |
|  *
 | |
|  * @package     Joomla.Platform
 | |
|  * @subpackage  GitHub
 | |
|  * @since       12.3
 | |
|  */
 | |
| class JGithubHooks extends JGithubObject
 | |
| {
 | |
| 	/**
 | |
| 	 * Array containing the allowed hook events
 | |
| 	 *
 | |
| 	 * @var    array
 | |
| 	 * @since  12.3
 | |
| 	 */
 | |
| 	protected $events = array(
 | |
| 						'push', 'issues', 'issue_comment', 'commit_comment', 'pull_request', 'gollum', 'watch', 'download', 'fork', 'fork_apply',
 | |
| 						'member', 'public', 'status'
 | |
| 	);
 | |
| 
 | |
| 	/**
 | |
| 	 * Method to create a hook on a repository.
 | |
| 	 *
 | |
| 	 * @param   string   $user    The name of the owner of the GitHub repository.
 | |
| 	 * @param   string   $repo    The name of the GitHub repository.
 | |
| 	 * @param   string   $name    The name of the service being called.
 | |
| 	 * @param   array    $config  Array containing the config for the service.
 | |
| 	 * @param   array    $events  The events the hook will be triggered for.
 | |
| 	 * @param   boolean  $active  Flag to determine if the hook is active
 | |
| 	 *
 | |
| 	 * @return  object
 | |
| 	 *
 | |
| 	 * @since   12.3
 | |
| 	 * @throws  DomainException
 | |
| 	 * @throws  RuntimeException
 | |
| 	 */
 | |
| 	public function create($user, $repo, $name, array $config, array $events = array('push'), $active = true)
 | |
| 	{
 | |
| 		// Build the request path.
 | |
| 		$path = '/repos/' . $user . '/' . $repo . '/hooks';
 | |
| 
 | |
| 		// Check to ensure all events are in the allowed list
 | |
| 		foreach ($events as $event)
 | |
| 		{
 | |
| 			if (!in_array($event, $this->events))
 | |
| 			{
 | |
| 				throw new RuntimeException('Your events array contains an unauthorized event.');
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		$data = json_encode(
 | |
| 			array('name' => $name, 'config' => $config, 'events' => $events, 'active' => $active)
 | |
| 		);
 | |
| 
 | |
| 		return $this->processResponse(
 | |
| 			$this->client->post($this->fetchUrl($path), $data),
 | |
| 			201
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Method to delete a hook
 | |
| 	 *
 | |
| 	 * @param   string   $user  The name of the owner of the GitHub repository.
 | |
| 	 * @param   string   $repo  The name of the GitHub repository.
 | |
| 	 * @param   integer  $id    ID of the hook to delete.
 | |
| 	 *
 | |
| 	 * @return  object
 | |
| 	 *
 | |
| 	 * @since   12.3
 | |
| 	 * @throws  DomainException
 | |
| 	 */
 | |
| 	public function delete($user, $repo, $id)
 | |
| 	{
 | |
| 		// Build the request path.
 | |
| 		$path = '/repos/' . $user . '/' . $repo . '/hooks/' . $id;
 | |
| 
 | |
| 		return $this->processResponse(
 | |
| 			$this->client->delete($this->fetchUrl($path)),
 | |
| 			204
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Method to edit a hook.
 | |
| 	 *
 | |
| 	 * @param   string   $user          The name of the owner of the GitHub repository.
 | |
| 	 * @param   string   $repo          The name of the GitHub repository.
 | |
| 	 * @param   integer  $id            ID of the hook to edit.
 | |
| 	 * @param   string   $name          The name of the service being called.
 | |
| 	 * @param   array    $config        Array containing the config for the service.
 | |
| 	 * @param   array    $events        The events the hook will be triggered for.  This resets the currently set list
 | |
| 	 * @param   array    $addEvents     Events to add to the hook.
 | |
| 	 * @param   array    $removeEvents  Events to remove from the hook.
 | |
| 	 * @param   boolean  $active        Flag to determine if the hook is active
 | |
| 	 *
 | |
| 	 * @return  object
 | |
| 	 *
 | |
| 	 * @since   12.3
 | |
| 	 * @throws  DomainException
 | |
| 	 * @throws  RuntimeException
 | |
| 	 */
 | |
| 	public function edit($user, $repo, $id, $name, array $config, array $events = array('push'), array $addEvents = array(),
 | |
| 		array $removeEvents = array(), $active = true)
 | |
| 	{
 | |
| 		// Check to ensure all events are in the allowed list
 | |
| 		foreach ($events as $event)
 | |
| 		{
 | |
| 			if (!in_array($event, $this->events))
 | |
| 			{
 | |
| 				throw new RuntimeException('Your events array contains an unauthorized event.');
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		foreach ($addEvents as $event)
 | |
| 		{
 | |
| 			if (!in_array($event, $this->events))
 | |
| 			{
 | |
| 				throw new RuntimeException('Your active_events array contains an unauthorized event.');
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		foreach ($removeEvents as $event)
 | |
| 		{
 | |
| 			if (!in_array($event, $this->events))
 | |
| 			{
 | |
| 				throw new RuntimeException('Your remove_events array contains an unauthorized event.');
 | |
| 			}
 | |
| 		}
 | |
| 		// Build the request path.
 | |
| 		$path = '/repos/' . $user . '/' . $repo . '/hooks/' . $id;
 | |
| 
 | |
| 		$data = json_encode(
 | |
| 			array(
 | |
| 				'name' => $name,
 | |
| 				'config' => $config,
 | |
| 				'events' => $events,
 | |
| 				'add_events' => $addEvents,
 | |
| 				'remove_events' => $removeEvents,
 | |
| 				'active' => $active)
 | |
| 		);
 | |
| 
 | |
| 		return $this->processResponse(
 | |
| 			$this->client->patch($this->fetchUrl($path), $data)
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Method to get details about a single hook for the repository.
 | |
| 	 *
 | |
| 	 * @param   string   $user  The name of the owner of the GitHub repository.
 | |
| 	 * @param   string   $repo  The name of the GitHub repository.
 | |
| 	 * @param   integer  $id    ID of the hook to retrieve
 | |
| 	 *
 | |
| 	 * @return  object
 | |
| 	 *
 | |
| 	 * @since   12.3
 | |
| 	 * @throws  DomainException
 | |
| 	 */
 | |
| 	public function get($user, $repo, $id)
 | |
| 	{
 | |
| 		// Build the request path.
 | |
| 		$path = '/repos/' . $user . '/' . $repo . '/hooks/' . $id;
 | |
| 
 | |
| 		return $this->processResponse(
 | |
| 			$this->client->get($this->fetchUrl($path))
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Method to list hooks for a repository.
 | |
| 	 *
 | |
| 	 * @param   string   $user   The name of the owner of the GitHub repository.
 | |
| 	 * @param   string   $repo   The name of the GitHub repository.
 | |
| 	 * @param   integer  $page   Page to request
 | |
| 	 * @param   integer  $limit  Number of results to return per page
 | |
| 	 *
 | |
| 	 * @return  object
 | |
| 	 *
 | |
| 	 * @since   12.3
 | |
| 	 * @throws  DomainException
 | |
| 	 */
 | |
| 	public function getList($user, $repo, $page = 0, $limit = 0)
 | |
| 	{
 | |
| 		// Build the request path.
 | |
| 		$path = '/repos/' . $user . '/' . $repo . '/hooks';
 | |
| 
 | |
| 		return $this->processResponse(
 | |
| 			$this->client->get($this->fetchUrl($path))
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Method to test a hook against the latest repository commit
 | |
| 	 *
 | |
| 	 * @param   string   $user  The name of the owner of the GitHub repository.
 | |
| 	 * @param   string   $repo  The name of the GitHub repository.
 | |
| 	 * @param   integer  $id    ID of the hook to delete
 | |
| 	 *
 | |
| 	 * @return  object
 | |
| 	 *
 | |
| 	 * @since   12.3
 | |
| 	 * @throws  DomainException
 | |
| 	 */
 | |
| 	public function test($user, $repo, $id)
 | |
| 	{
 | |
| 		// Build the request path.
 | |
| 		$path = '/repos/' . $user . '/' . $repo . '/hooks/' . $id . '/test';
 | |
| 
 | |
| 		return $this->processResponse(
 | |
| 			$this->client->post($this->fetchUrl($path), json_encode('')),
 | |
| 			204
 | |
| 		);
 | |
| 	}
 | |
| }
 | 
