wip
This commit is contained in:
@@ -1,17 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Actions;
|
||||
|
||||
use App\Services\ServerProviders\HetznerService;
|
||||
use App\Services\ServerProviders\ServerProviderService;
|
||||
|
||||
class GetProviderService
|
||||
{
|
||||
public function execute(string $provider): ?ServerProviderService
|
||||
{
|
||||
return match ($provider) {
|
||||
'hetzner' => new HetznerService,
|
||||
default => null,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -4,10 +4,10 @@ namespace App\Http\Controllers;
|
||||
|
||||
use App\Actions\GenerateRandomSlug;
|
||||
use App\Actions\GetProviderService;
|
||||
use App\Enums\ServerProvider;
|
||||
use App\Enums\ServerStatus;
|
||||
use App\Jobs\Servers\WaitForServerToConnect;
|
||||
use App\Models\Organisation;
|
||||
use App\Models\Provider;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Str;
|
||||
@@ -30,7 +30,8 @@ class ServerController extends Controller
|
||||
$images = null;
|
||||
|
||||
if ($request->has('provider')) {
|
||||
$providerService = app(GetProviderService::class)->execute($request->provider);
|
||||
$provider = Provider::findOrFail($request->provider);
|
||||
$providerService = $provider->service();
|
||||
|
||||
if ($providerService) {
|
||||
$locations = Cache::remember($request->provider.'.locations', now()->addHour(), function () use ($providerService) {
|
||||
|
||||
@@ -2,10 +2,16 @@
|
||||
|
||||
namespace App\Http\Integrations\Connectors;
|
||||
|
||||
use App\Models\Provider;
|
||||
use Saloon\Http\Connector;
|
||||
|
||||
class HetznerConnector extends Connector
|
||||
{
|
||||
public function __construct(protected readonly Provider $provider)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function resolveBaseUrl(): string
|
||||
{
|
||||
return 'https://api.hetzner.cloud/v1';
|
||||
@@ -16,7 +22,7 @@ class HetznerConnector extends Connector
|
||||
return [
|
||||
'Content-Type' => 'application/json',
|
||||
'Accept' => 'application/json',
|
||||
'Authorization' => 'Bearer '.config('services.hetzner.key'),
|
||||
'Authorization' => 'Bearer '.$this->provider->token,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
namespace App\Models;
|
||||
|
||||
use App\Enums\NetworkType;
|
||||
use App\Enums\ServerProvider;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
namespace App\Models;
|
||||
|
||||
use App\Enums\ProviderType;
|
||||
use App\Services\ServerProviders\HetznerService;
|
||||
use App\Services\ServerProviders\ServerProviderService;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
|
||||
@@ -27,4 +29,12 @@ class Provider extends Model
|
||||
{
|
||||
return $this->hasMany(Server::class);
|
||||
}
|
||||
|
||||
public function service(): ?ServerProviderService
|
||||
{
|
||||
return match ($this->type) {
|
||||
ProviderType::HETZNER => new HetznerService($this),
|
||||
default => null,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Enums\ServerProvider;
|
||||
use App\Enums\ServerStatus;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
@@ -11,14 +11,15 @@ use App\Http\Integrations\Requests\Hetzner\Images\GetImagesRequest;
|
||||
use App\Http\Integrations\Requests\Hetzner\Locations\GetLocationsRequest;
|
||||
use App\Http\Integrations\Requests\Hetzner\Servers\CreateServerRequest;
|
||||
use App\Http\Integrations\Requests\Hetzner\ServerTypes\GetServerTypesRequest;
|
||||
use App\Models\Provider;
|
||||
use Exception;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
class HetznerService extends ServerProviderService
|
||||
{
|
||||
public function __construct()
|
||||
public function __construct(Provider $provider)
|
||||
{
|
||||
$this->connector = new HetznerConnector;
|
||||
$this->connector = new HetznerConnector($provider);
|
||||
}
|
||||
|
||||
public function createServer(
|
||||
|
||||
Reference in New Issue
Block a user