44
55namespace Sysix \LexOffice ;
66
7+ use GuzzleHttp \Psr7 \Request ;
78use GuzzleHttp \Psr7 \Uri ;
9+ use Psr \Http \Client \ClientInterface ;
10+ use Psr \Http \Message \RequestInterface ;
11+ use Psr \Http \Message \ResponseInterface ;
12+ use Psr \Http \Message \UriInterface ;
13+ use SensitiveParameter ;
814use Sysix \LexOffice \Clients \Contact ;
915use Sysix \LexOffice \Clients \Country ;
1016use Sysix \LexOffice \Clients \CreditNote ;
2127use Sysix \LexOffice \Clients \RecurringTemplate ;
2228use Sysix \LexOffice \Clients \Voucher ;
2329use Sysix \LexOffice \Clients \VoucherList ;
24- use GuzzleHttp \Psr7 \Request ;
25- use Psr \Http \Client \ClientInterface ;
26- use Psr \Http \Message \RequestInterface ;
27- use Psr \Http \Message \ResponseInterface ;
28- use Psr \Http \Message \UriInterface ;
29- use SensitiveParameter ;
30+ use Sysix \LexOffice \Interfaces \ApiInterface ;
3031
31- class Api
32+ class Api implements ApiInterface
3233{
3334 public string $ apiUrl = 'https://api.lexoffice.io ' ;
3435
3536 protected string $ apiVersion = 'v1 ' ;
3637
37- public RequestInterface $ request ;
38+ protected RequestInterface $ request ;
3839
3940 public function __construct (
4041 #[SensitiveParameter] protected string $ apiKey ,
4142 protected ClientInterface $ client
4243 ) {
4344 }
4445
45- /**
46- * @param string[] $headers
47- */
4846 public function newRequest (string $ method , string $ resource , array $ headers = []): self
4947 {
5048 $ this ->setRequest (
@@ -71,16 +69,21 @@ public function setRequest(RequestInterface $request): self
7169 return $ this ;
7270 }
7371
74- protected function createApiUri ( string $ resource ): UriInterface
72+ public function getRequest ( ): RequestInterface
7573 {
76- return new Uri ( $ this ->apiUrl . ' / ' . $ this -> apiVersion . ' / ' . $ resource ) ;
74+ return $ this ->request ;
7775 }
7876
7977 public function getResponse (): ResponseInterface
8078 {
8179 return $ this ->client ->sendRequest ($ this ->request );
8280 }
8381
82+ protected function createApiUri (string $ resource ): UriInterface
83+ {
84+ return new Uri ($ this ->apiUrl . '/ ' . $ this ->apiVersion . '/ ' . $ resource );
85+ }
86+
8487 public function contact (): Contact
8588 {
8689 return new Contact ($ this );
0 commit comments