From b715e1ba1d558bf0f5cef0a7a78a681e0139e507 Mon Sep 17 00:00:00 2001 From: Mathias Palmqvist Date: Mon, 30 Jun 2025 10:24:16 +0200 Subject: [PATCH 1/3] Created BokioClient --- composer.json | 4 +- config/bokio-api-laravel.php | 6 -- config/bokio.php | 7 +++ src/{BokioApiLaravel.php => Bokio.php} | 2 +- src/BokioApiLaravelServiceProvider.php | 21 ------- src/BokioClient.php | 62 +++++++++++++++++++ src/BokioServiceProvider.php | 29 +++++++++ .../{BokioApiLaravel.php => Bokio.php} | 6 +- tests/TestCase.php | 6 +- 9 files changed, 107 insertions(+), 36 deletions(-) delete mode 100644 config/bokio-api-laravel.php create mode 100644 config/bokio.php rename src/{BokioApiLaravel.php => Bokio.php} (63%) delete mode 100644 src/BokioApiLaravelServiceProvider.php create mode 100644 src/BokioClient.php create mode 100644 src/BokioServiceProvider.php rename src/Facades/{BokioApiLaravel.php => Bokio.php} (53%) diff --git a/composer.json b/composer.json index f90f44b..9fdbd74 100644 --- a/composer.json +++ b/composer.json @@ -64,10 +64,10 @@ "extra": { "laravel": { "providers": [ - "Mattitja\\BokioApiLaravel\\BokioApiLaravelServiceProvider" + "Mattitja\\BokioApiLaravel\\BokioServiceProvider" ], "aliases": { - "BokioApiLaravel": "Mattitja\\BokioApiLaravel\\Facades\\BokioApiLaravel" + "Bokio": "Mattitja\\BokioApiLaravel\\Facades\\Bokio" } } }, diff --git a/config/bokio-api-laravel.php b/config/bokio-api-laravel.php deleted file mode 100644 index b890cb6..0000000 --- a/config/bokio-api-laravel.php +++ /dev/null @@ -1,6 +0,0 @@ - env('BOKIO_TOKEN'), + 'company_id' => env('BOKIO_COMPANY_ID'), +]; diff --git a/src/BokioApiLaravel.php b/src/Bokio.php similarity index 63% rename from src/BokioApiLaravel.php rename to src/Bokio.php index 4a36193..48aff62 100755 --- a/src/BokioApiLaravel.php +++ b/src/Bokio.php @@ -2,4 +2,4 @@ namespace Mattitja\BokioApiLaravel; -class BokioApiLaravel {} +class Bokio {} diff --git a/src/BokioApiLaravelServiceProvider.php b/src/BokioApiLaravelServiceProvider.php deleted file mode 100644 index 2e527b6..0000000 --- a/src/BokioApiLaravelServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -name('bokio-api-laravel') - ->hasConfigFile(); - } -} diff --git a/src/BokioClient.php b/src/BokioClient.php new file mode 100644 index 0000000..85efa04 --- /dev/null +++ b/src/BokioClient.php @@ -0,0 +1,62 @@ +request = Http::acceptJson() + ->asJson() + ->withToken($this->accessToken) + ->baseUrl("{$this->baseUrl}/companies/{$this->companyId}"); + } + + public function get(string $endpoint, array $query = []): object + { + return $this->request + ->get($endpoint, $query) + ->throw() + ->object(); + } + + public function post(string $endpoint, array $data = []): object + { + return $this->request + ->post($endpoint, $data) + ->throw() + ->object(); + } + + public function put(string $endpoint, array $data = []): object + { + return $this->request + ->put($endpoint, $data) + ->throw() + ->object(); + } + + public function delete(string $endpoint): bool + { + return $this->request + ->delete($endpoint) + ->throw() + ->ok(); + } + + public function contents(string $endpoint, array $query = []): string + { + return $this->request + ->get($endpoint, $query) + ->throw() + ->body(); + } +} diff --git a/src/BokioServiceProvider.php b/src/BokioServiceProvider.php new file mode 100644 index 0000000..7b8a262 --- /dev/null +++ b/src/BokioServiceProvider.php @@ -0,0 +1,29 @@ +name('bokio-api-laravel') + ->hasConfigFile(); + } + + public function register(): void + { + parent::register(); + + $this->app->singleton(BokioClient::class, function () { + return new BokioClient( + config('bokio.token'), + config('bokio.company_id'), + config('bokio.base_url', 'https://api.bokio.se'), + ); + }); + } +} diff --git a/src/Facades/BokioApiLaravel.php b/src/Facades/Bokio.php similarity index 53% rename from src/Facades/BokioApiLaravel.php rename to src/Facades/Bokio.php index 44b163a..3319b16 100644 --- a/src/Facades/BokioApiLaravel.php +++ b/src/Facades/Bokio.php @@ -5,12 +5,12 @@ namespace Mattitja\BokioApiLaravel\Facades; use Illuminate\Support\Facades\Facade; /** - * @see \Mattitja\BokioApiLaravel\BokioApiLaravel + * @see \Mattitja\BokioApiLaravel\Bokio */ -class BokioApiLaravel extends Facade +class Bokio extends Facade { protected static function getFacadeAccessor(): string { - return \Mattitja\BokioApiLaravel\BokioApiLaravel::class; + return \Mattitja\BokioApiLaravel\Bokio::class; } } diff --git a/tests/TestCase.php b/tests/TestCase.php index 842a3ed..6975b4c 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -3,7 +3,7 @@ namespace Mattitja\BokioApiLaravel\Tests; use Illuminate\Database\Eloquent\Factories\Factory; -use Mattitja\BokioApiLaravel\BokioApiLaravelServiceProvider; +use Mattitja\BokioApiLaravel\BokioServiceProvider; use Orchestra\Testbench\TestCase as Orchestra; class TestCase extends Orchestra @@ -13,14 +13,14 @@ class TestCase extends Orchestra parent::setUp(); Factory::guessFactoryNamesUsing( - fn (string $modelName) => 'Mattitja\\BokioApiLaravel\\Database\\Factories\\'.class_basename($modelName).'Factory' + fn (string $modelName) => 'Mattitja\\Bokio\\Database\\Factories\\'.class_basename($modelName).'Factory' ); } protected function getPackageProviders($app) { return [ - BokioApiLaravelServiceProvider::class, + BokioServiceProvider::class, ]; } From b28eefb1aa86a00ea3c6073f9dc5fa61d84b475c Mon Sep 17 00:00:00 2001 From: Mathias Palmqvist Date: Mon, 30 Jun 2025 10:25:55 +0200 Subject: [PATCH 2/3] Update BokioServiceProvider.php --- src/BokioServiceProvider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BokioServiceProvider.php b/src/BokioServiceProvider.php index 7b8a262..854baf8 100644 --- a/src/BokioServiceProvider.php +++ b/src/BokioServiceProvider.php @@ -10,7 +10,7 @@ class BokioServiceProvider extends PackageServiceProvider public function configurePackage(Package $package): void { $package - ->name('bokio-api-laravel') + ->name('bokio') ->hasConfigFile(); } From b298baf18dd2fb0edddf2cc922cf2b5d8e810b00 Mon Sep 17 00:00:00 2001 From: Mathias Palmqvist Date: Mon, 30 Jun 2025 10:28:52 +0200 Subject: [PATCH 3/3] Update phpstan.neon.dist --- phpstan.neon.dist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 4a0559d..5fb9094 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -9,3 +9,5 @@ parameters: tmpDir: build/phpstan checkOctaneCompatibility: true checkModelProperties: true + excludePaths: + - %currentWorkingDirectory%/config/*