Я работаю с Symfony 2.8 (PHP) и хотел бы получить все версии для каждого проекта в Jira через API Rest Jira, а затем отфильтровать тему, чтобы выбрать только выпущенные версии.
Я нашел этот метод, но я не знаю, как использовать параметр «раскрыть» для достижения версий
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;
}
}
Других решений пока нет …