Skip to content

Commit

Permalink
Prevent and notify abnormal errors during resource instantiation
Browse files Browse the repository at this point in the history
  • Loading branch information
antonioribeiro committed Dec 2, 2021
1 parent 0554116 commit bd19954
Showing 1 changed file with 28 additions and 18 deletions.
46 changes: 28 additions & 18 deletions src/Support/Resource.php
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,11 @@ class Resource implements JsonSerializable
*/
public $executable;

/**
* @var string
*/
public $internal_error;

/**
* Resource factory.
*
Expand All @@ -108,34 +113,39 @@ public static function factory(Collection $data)

$instance->slug = Str::slug($data['name']);

$instance->graphEnabled = isset($data['graph_enabled'])
? $data['graph_enabled']
: null;
try {
$instance->graphEnabled = isset($data['graph_enabled'])
? $data['graph_enabled']
: null;

$instance->abbreviation = $data['abbreviation'];
$instance->abbreviation = $data['abbreviation'];

$instance->targets = $instance->instantiateTargets(
$data['targets'] ?? collect()
);
$instance->targets = $instance->instantiateTargets(
$data['targets'] ?? collect()
);

$instance->notify =
$data['notify'] ?? config('health.notifications.enabled');
$instance->notify =
$data['notify'] ?? config('health.notifications.enabled');

$instance->style = $instance->keysToCamel(config('health.style'));
$instance->style = $instance->keysToCamel(config('health.style'));

$instance->style['columnSize'] =
$data['column_size'] ?? $instance->style['columnSize'];
$instance->style['columnSize'] =
$data['column_size'] ?? $instance->style['columnSize'];

$instance->errorMessage =
$data['error_message'] ?? config('health.errors.message');
$instance->errorMessage =
$data['error_message'] ?? config('health.errors.message');

$instance->isGlobal = $data['is_global'] ?? false;
$instance->isGlobal = $data['is_global'] ?? false;

$instance->checker = $instance->instantiateChecker($data['checker']);
$instance->checker = $instance->instantiateChecker($data['checker']);

$instance->executable = isset($data['executable']) ? $data['executable'] : null;
$instance->executable = isset($data['executable']) ? $data['executable'] : null;

$instance->importProperties($data);
$instance->importProperties($data);
} catch (\Throwable $exception)
{
$instance->internal_error = "Error instantiating resource: ".$exception->getMessage().". Please check the resource configuration file.";
}

return $instance;
}
Expand Down

0 comments on commit bd19954

Please sign in to comment.