made this thingi work \o/

This commit is contained in:
2024-09-13 04:01:21 +02:00
parent 27fc4b9f99
commit 99417ef9ec
5 changed files with 211 additions and 87 deletions

View File

@@ -14,7 +14,8 @@
"kbsali/redmine-api": "^2.7",
"guzzlehttp/guzzle": "^7",
"symfony/cache-contracts": "^3.5",
"symfony/cache": "^7.1"
"symfony/cache": "^7.1",
"symfony/yaml": "^7.1"
},
"require-dev": {
"phpunit/phpunit": "^9.5 || ^10",

231
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "d59ee548397de88385ff625f1c6cc334",
"content-hash": "905e28463a875d6e2812528b84436e7b",
"packages": [
{
"name": "guzzlehttp/guzzle",
@@ -991,6 +991,85 @@
],
"time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"provide": {
"ext-ctype": "*"
},
"suggest": {
"ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for ctype functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"ctype",
"polyfill",
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/service-contracts",
"version": "v3.5.0",
@@ -1149,6 +1228,77 @@
}
],
"time": "2024-06-28T08:00:31+00:00"
},
{
"name": "symfony/yaml",
"version": "v7.1.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "92e080b851c1c655c786a2da77f188f2dccd0f4b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/92e080b851c1c655c786a2da77f188f2dccd0f4b",
"reference": "92e080b851c1c655c786a2da77f188f2dccd0f4b",
"shasum": ""
},
"require": {
"php": ">=8.2",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
"symfony/console": "<6.4"
},
"require-dev": {
"symfony/console": "^6.4|^7.0"
},
"bin": [
"Resources/bin/yaml-lint"
],
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Yaml\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/yaml/tree/v7.1.4"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-08-12T09:59:40+00:00"
}
],
"packages-dev": [
@@ -3501,85 +3651,6 @@
],
"time": "2024-08-13T14:28:19+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"provide": {
"ext-ctype": "*"
},
"suggest": {
"ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for ctype functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"ctype",
"polyfill",
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.31.0",

View File

@@ -1,3 +1,5 @@
services:
Magdev\RedmineBundle\Client\RedmineClient:
arguments: ['@redmine_api.cache', '%env(REDMINE_URL)%', '%env(REDMINE_APIKEY)%', '%magdev_redmine.ttl%']
redmine.api: '@Magdev\RedmineBundle\Client\RedmineClient'

View File

@@ -6,12 +6,14 @@ use Redmine\Client\Psr18Client;
use GuzzleHttp\Client as GuzzleClient;
use GuzzleHttp\Psr7\HttpFactory as GuzzleHttpFactory;
use Redmine\Api;
use Redmine\Client\Client;
use Redmine\Http\HttpClient;
use Redmine\Http\Request;
use Redmine\Http\Response;
use Symfony\Contracts\Cache\ItemInterface;
use Symfony\Contracts\Cache\TagAwareCacheInterface;
use Symfony\Component\DependencyInjection\Attribute\AsAlias;
#[AsAlias(id: 'redmine.api', public: true)]
final class RedmineClient
final class RedmineClient implements Client, HttpClient
{
private ?Psr18Client $client = null;
@@ -54,8 +56,58 @@ final class RedmineClient
return $this->client;
}
public function request(Request $request): Response
{
return $this->getClient()->request($request);
}
public function getApi(string $name): Api
{
return $this->getClient()->getApi($name);
}
public function startImpersonateUser(string $username): void
{
$this->getClient()->startImpersonateUser($username);
}
public function stopImpersonateUser(): void
{
$this->getClient()->stopImpersonateUser();
}
public function requestGet(string $path): bool
{
return $this->getClient()->requestGet($path);
}
public function requestPost(string $path, string $body): bool
{
return $this->getClient()->requestPost($path, $body);
}
public function requestPut(string $path, string $body): bool
{
return $this->getClient()->requestPut($path, $body);
}
public function requestDelete(string $path): bool
{
return $this->getClient()->requestDelete($path);
}
public function getLastResponseStatusCode(): int
{
return $this->getClient()->getLastResponseStatusCode();
}
public function getLastResponseContentType(): string
{
return $this->getClient()->getLastResponseContentType();
}
public function getLastResponseBody(): string
{
return $this->getClient()->getLastResponseBody();
}
}

View File

@@ -22,8 +22,6 @@ class MagdevRedmineExtensionTest extends TestCase
],
], $container);
$this->assertTrue($container->has('magdev_redmine.ttl'));
$this->assertSame(1800, $container->get('magdev_redmine.ttl'));
$this->assertInstanceOf(RedmineClient::class, $container->get('redmine.api'));
#$this->assertInstanceOf(RedmineClient::class, $container->get('redmine.api'));
}
}