diff --git a/app/Http/Controllers/Api/ApplicationsController.php b/app/Http/Controllers/Api/ApplicationsController.php index 4762a04b9..aef19af23 100644 --- a/app/Http/Controllers/Api/ApplicationsController.php +++ b/app/Http/Controllers/Api/ApplicationsController.php @@ -18,6 +18,7 @@ use App\Models\Service; use Illuminate\Http\Request; use Illuminate\Validation\Rule; use OpenApi\Attributes as OA; +use Spatie\Url\Url; use Symfony\Component\Yaml\Yaml; use Visus\Cuid2\Cuid2; @@ -811,6 +812,11 @@ class ApplicationsController extends Controller 'docker_compose_raw' => 'string|nullable', 'docker_compose_domains' => 'array|nullable', ]; + // ports_exposes is not required for dockercompose + if ($request->build_pack === 'dockercompose') { + $validationRules['ports_exposes'] = 'string'; + $request->offsetSet('ports_exposes', '80'); + } $validationRules = array_merge(sharedDataApplications(), $validationRules); $validator = customApiValidator($request->all(), $validationRules); if ($validator->fails()) { @@ -822,10 +828,6 @@ class ApplicationsController extends Controller if (! $request->has('name')) { $request->offsetSet('name', generate_application_name($request->git_repository, $request->git_branch)); } - if ($request->build_pack === 'dockercompose') { - $request->offsetSet('ports_exposes', '80'); - } - $return = $this->validateDataApplications($request, $server); if ($return instanceof \Illuminate\Http\JsonResponse) { return $return; @@ -848,7 +850,13 @@ class ApplicationsController extends Controller if ($dockerComposeDomainsJson->count() > 0) { $application->docker_compose_domains = $dockerComposeDomainsJson; } - + $repository_url_parsed = Url::fromString($request->git_repository); + $git_host = $repository_url_parsed->getHost(); + if ($git_host === 'github.com') { + $application->source_type = GithubApp::class; + $application->source_id = GithubApp::find(0)->id; + } + $application->git_repository = $repository_url_parsed->getSegment(1).'/'.$repository_url_parsed->getSegment(2); $application->fqdn = $fqdn; $application->destination_id = $destination->id; $application->destination_type = $destination->getMorphClass();