Как я могу получить выпущенную версию для каждого проекта на Jira?

126
12

Я работаю с Symfony 2.8 (PHP), и я хотел бы получить все версии для каждого проекта на Jira через API Rest Jira, а затем для фильтрации темы, чтобы выбрать только выпущенные версии.

Я нашел эти методы, но я не знаю, как использовать параметр "expand" для достижения версий

Изображение 1

Изображение 2

спросил(а) 2016-05-11T16:32:00+03:00 4 года, 4 месяца назад
1
Решение
112

1-й шаг: в config.yml

Для получения дополнительной информации о конфигурации Guzzle: http://docs.guzzlephp.org/en/latest/quickstart.html

csa_guzzle:
clients:
jira:
config:
base_uri: "https://jira.*****.*****.***/rest/api/2/"
timeout: 20.0
headers:
Accept: "application/json"
Content-Type: "application/json"
verify: false
auth: ['api','password','Basic']

2-й шаг: создать клиентскую службу GuzzleHttp для отправки запроса на api

<?php

namespace AppBundle\Service\Atlassian\Jira\Client;

use GuzzleHttp\Client as GuzzleClientHttp;
use GuzzleHttp\Exception\ServerException;
use Psr\Http\Message\ResponseInterface;

class GuzzleClient
{
/**
* Guzzle Client.
*
* @var GuzzleClientHttp
*/
protected $guzzle;

/**
* Response object of request.
*
* @var ResponseInterface
*/
protected $response;

/**
* GuzzleClient constructor.
*
* @param GuzzleClientHttp $guzzle
*/
public function __construct(GuzzleClientHttp $guzzle)
{
$this->guzzle = $guzzle ?: new GuzzleClientHttp();
}

public function send($method = 'GET', $url, $parameters = [])
{
try {
$this->response = $this->guzzle->request($method, $url, ['query' => $parameters]);
} catch (ServerException $exception) {
$this->response = $exception->getResponse();
}

return $this->getContents();
}

/**
* Return the contents as a string of last request.
*
* @return string
*/
public function getContents()
{
return $this->response->getBody()->getContents();
}

/**
* Getter for GuzzleClient.
*
* @return GuzzleClientHttp
*/
public function getClient()
{
return $this->guzzle;
}

/**
* Getter for last Response.
*
* @return ResponseInterface
*/
public function getResponse()
{
return $this->response;
}

3-й шаг: ящик для получения всех версий

<?php

namespace AppBundle\Service\Atlassian\Jira;

use AppBundle\Service\Atlassian\Jira\Client\GuzzleClient;

class ApiService
{

/**
* Client HTTP.
*
* @var GuzzleClient
*/
protected $client;

/**
* ApiService constructor.
*
* @param GuzzleClient $client
*/
public function __construct(GuzzleClient $client)
{
$this->client = $client;
}

/**
* Get all released versions for a given projectKey.
*
* @param string $projectKey
* @return null|array
*/
public function getVersions($projectKey)
{
$versions = json_decode($this->client->send('GET', 'project/'.$projectKey."/versions/"));
for($i=0;$i< count($versions); $i++)
{
if($versions[$i]->released== false)
{
$result = $versions[$i]->name;
}
}

return $versions;
}

}

ответил(а) 2016-05-13T12:47:00+03:00 4 года, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема