1<?php
2
3class GitLabApi {
4    const version = '0.0.1';
5
6    public $client;
7    public $data;
8
9    function __construct($dw_data) {
10        $this->dw_data = $dw_data;
11        $this->client = curl_init();
12    }
13
14    function getAPIUrl() { return $this->dw_data['server'] . '/api/v4/'; }
15
16    function closeClient() { curl_close($this->client); }
17
18    function gitlabRequest($url) {
19        curl_setopt($this->client, CURLOPT_URL, $url);
20        curl_setopt($this->client, CURLOPT_HTTPHEADER, array(
21            'PRIVATE-TOKEN: '.$this->dw_data['token']
22        ));
23        curl_setopt($this->client, CURLOPT_SSL_VERIFYHOST, '1');
24        curl_setopt($this->client, CURLOPT_SSL_VERIFYPEER, '0');
25        curl_setopt($this->client, CURLOPT_RETURNTRANSFER, true);
26
27        $answer = curl_exec($this->client);
28        $answer_decoded = json_decode($answer, true);
29
30        return $answer_decoded;
31    }
32
33    function getProject() {
34        $project_name = basename($this->dw_data['project-path']);
35        $url_request = $this->getAPIUrl().'search?scope=projects&search='.$project_name;
36        $project = $this->gitlabRequest($url_request);
37
38        foreach ($project as $p) {
39            if ($p['path_with_namespace'] == $this->dw_data['project-path'])
40                return $p;
41        }
42    }
43
44    function getCommits($id) {
45        $url_request = $this->getAPIUrl().'projects/'.$id.'/repository/commits';
46        $commits = $this->gitlabRequest($url_request);
47        return $commits;
48    }
49
50    function getIssues($id) {
51        $url_request = $this->getAPIUrl().'projects/'.$id.'/issues';
52        $issues = $this->gitlabRequest($url_request);
53        return $issues;
54    }
55
56    function getMilestones($id) {
57        $url_request = $this->getAPIUrl().'projects/'.$id.'/milestones';
58        $milestones = $this->gitlabRequest($url_request);
59        return $milestones;
60    }
61
62    function getPipelines($id) {
63        $url_request = $this->getAPIUrl().'projects/'.$id.'/pipelines';
64        $pipelines = $this->gitlabRequest($url_request);
65        return $pipelines;
66    }
67}
68
69
70