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, ]; }