seatplus/eveapi

View on GitHub
src/Services/ResolveLocation/ResolveLocationService.php

Summary

Maintainability
A
35 mins
Test Coverage
A
94%
<?php
 
namespace Seatplus\Eveapi\Services\ResolveLocation;
 
use Exception;
use Seatplus\Eveapi\Models\RefreshToken;
use Seatplus\Eveapi\Models\Universe\Location;
use Seatplus\Eveapi\Services\ResolveLocation\Resolver\ResolverInterface;
use Seatplus\Eveapi\Services\ResolveLocation\Resolver\StationResolver;
use Seatplus\Eveapi\Services\ResolveLocation\Resolver\StructureResolver;
 
class ResolveLocationService
{
public function __construct(
private ?RefreshToken $refresh_token = null
) {}
 
public static function make(?RefreshToken $refresh_token = null): self
{
return new self($refresh_token);
}
 
/**
* @throws Exception
*/
Function `handle` has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
public function handle(int $location_id): void
{
$location = Location::with('locatable')->firstOrNew([
'location_id' => $location_id,
]);
 
$resolvers = [
new StationResolver,
new StructureResolver($this->refresh_token),
];
 
foreach ($resolvers as $resolver) {
if ($resolver instanceof ResolverInterface) {
$is_resolved = $resolver->handle($location);
 
if ($is_resolved) {
break;
}
}
}
}
}