Skip to content
Snippets Groups Projects
Commit 163580c8 authored by kgaut's avatar kgaut Committed by Jürgen Haas
Browse files

Issue #3183462 by Kgaut, hchonov, szloredan, jurgenhaas: Issues, Projects and namespaces methods

parent 0ca0c8d0
No related branches found
No related tags found
1 merge request!2Issues, Projects and namespaces methods
......@@ -6,6 +6,8 @@ use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\gitlab_api\Entity\GitlabServer;
use Gitlab\Client;
use Gitlab\Exception\InvalidArgumentException;
use Gitlab\ResultPager;
use DateTime;
/**
* Class Api
......@@ -98,6 +100,23 @@ class Api {
return $this->client->projects()->createPipeline($project_id, $commit_ref, $variables);
}
/**
* @param int $project_id
* @param array $additionalParams
*
* @return array
* @throws \Http\Client\Exception
*/
public function listPipelines(int $project_id, $additionalParams = []): array {
$this->init();
$pager = new ResultPager($this->client);
$params = [];
$params += $additionalParams;
return $pager->fetchAll($this->client->projects(), 'pipelines', [$project_id, $params]);
}
/**
* @param int|string $project_id
* @param int $pipeline_id
......@@ -150,4 +169,125 @@ class Api {
$this->init();
return $this->client->repositories->branch($project_id);
}
/**
* @param int $project_id
* @param string $title
* @param string $body
* @param array $assignee_ids
* @param DateTime|null $due_date
* @param array $labels
*
* @return array
*/
public function createIssue(int $project_id, string $title, string $body, $assignee_ids = [], DateTime $due_date = NULL, array $labels = []): array {
$this->init();
$params = [
'title' => $title,
'description' => $body,
'assignee_ids' => $assignee_ids,
];
if ($due_date) {
$params['due_date'] = $due_date->format('Y-m-d');
}
if ($labels && count($labels) > 0) {
$params['labels'] = implode(',', $labels);
}
return $this->client->issues->create($project_id, $params);
}
/**
* @param int $project_id
* @param string|null $state
* @param int|null $assignee_id
* @param array $additionalParams
*
* @return array
* @throws \Http\Client\Exception
*/
public function listIssues(int $project_id, string $state = NULL, int $assignee_id = NULL, $additionalParams = []): array {
$this->init();
$pager = new ResultPager($this->client);
$params = [];
if (in_array($state, ['opened', 'closed'])) {
$params['state'] = $state;
}
if ($assignee_id) {
$params['assignee_id'] = $assignee_id;
}
$params += $additionalParams;
return $pager->fetchAll($this->client->issues(), 'all', [$project_id, $params]);
}
/**
* Return an issue by it's project and id.
* @param int $project_id
* @param int $issue_iid
*
* @return mixed
*/
public function showIssue(int $project_id, int $issue_iid) {
$this->init();
return $this->client->issues()->show($project_id, $issue_iid);
}
/**
* Returns all namespaces on the server
* @return array
*/
public function listNamespaces() : array{
$this->init();
return $this->client->namespaces()->all();
}
/**
* Returns all projects on the server
*
* @param bool $simple
* @param bool $includeArchived
* @param array $additionalParams
*
* @return array
* @throws \Http\Client\Exception
*/
public function listProjects(bool $simple = TRUE, $includeArchived = FALSE, $additionalParams = []) : array {
$this->init();
$pager = new ResultPager($this->client);
$params = [
'simple' => $simple,
'archived' => FALSE,
];
if ($includeArchived) {
unset($params['archived']);
}
$params += $additionalParams;
return $pager->fetchAll($this->client->projects(), 'all', [$params]);
}
/**
* Returns information about a given project.
*
* @param $project_id
*
* @return array
*/
public function showProject($project_id) : array {
$this->init();
return $this->client->projects->show($project_id);
}
/**
* @param int $project_id
* @param int $issue_iid
*
* @return array
* @throws \Http\Client\Exception
*/
public function listIssueLinks(int $project_id, int $issue_iid): array {
$this->init();
$pager = new ResultPager($this->client);
return $pager->fetchAll($this->client->issueLinks(), 'all', [$project_id, $issue_iid]);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment