Merge branch 'feature/mg-Defaults' of AVENCY/Gitea into master

Reviewed-by: Lisa Kampert <lisa.kampert@avency.de>
This commit is contained in:
Michael Gerdemann
2020-01-17 16:36:05 +00:00
3 changed files with 54 additions and 8 deletions

View File

@ -5,12 +5,16 @@ declare(strict_types=1);
namespace Avency\Gitea;
use Avency\Gitea\Endpoint\EndpointInterface;
use Avency\Gitea\Endpoint\Miscellaneous;
use Avency\Gitea\Endpoint\Repositories;
use Exception;
use Psr\Http\Message\ResponseInterface;
/**
* Gitea Client
*
* @method Repositories repositories()
* @method Miscellaneous miscellaneous()
*/
class Client
{
@ -45,18 +49,20 @@ class Client
}
/**
* @param string $api
* @param $method
* @param $args
* @return EndpointInterface
* @throws Exception
*/
public function api(string $api): EndpointInterface
public function __call($method, $args)
{
switch ($api) {
case 'repositories':
return new Repositories($this);
$interfaceName = EndpointInterface::class;
$endpointClassName = str_replace('\\EndpointInterface', '\\' . ucfirst($method), $interfaceName);
if (class_exists($endpointClassName)) {
return new $endpointClassName($this);
}
throw new Exception('Endpoint not found', 1579246217);
throw new Exception('Endpoint "' . ucfirst($method) . '" not found!', 1579274712);
}
/**

View File

@ -0,0 +1,37 @@
<?php
declare(strict_types=1);
namespace Avency\Gitea\Endpoint;
use Avency\Gitea\Client;
/**
* Miscellaneous endpoint
*/
class Miscellaneous implements EndpointInterface
{
const BASE_URI = 'api/v1';
/**
* @var Client
*/
protected $client;
/**
* @param Client $client
*/
public function __construct(Client $client)
{
$this->client = $client;
}
/**
* @return string
*/
public function version(): string
{
$response = $this->client->request(self::BASE_URI . '/version');
return \GuzzleHttp\json_decode($response->getBody(), true)['version'];
}
}

View File

@ -53,7 +53,10 @@ $giteaClient = new Avency\Gitea\Client(
// - - - - -
// Get a single repository
$repository = $giteaClient->api('repositories')->get('owner', 'repoName');
$repository = $giteaClient->repositories()->get('owner', 'repoName');
// Get version
$repository = $giteaClient->miscellaneous()->version();
```
## Versioning
@ -95,7 +98,7 @@ Status | Method | Endpoint
❌ | POST | /markdown
❌ | POST | /markdown/raw
❌ | GET | /signing-key.gpg
| GET | /version
| GET | /version
#### Organization