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