%PDF- %PDF-
| Direktori : /home/graphicd/public_html/vebto/common/Settings/Validators/ |
| Current File : /home/graphicd/public_html/vebto/common/Settings/Validators/AnalyticsCredentialsValidator.php |
<?php
namespace Common\Settings\Validators;
use Config;
use Exception;
use Arr;
Use Str;
use Google_Service_Exception;
use Common\Admin\Analytics\Actions\GetGoogleAnalyticsData;
class AnalyticsCredentialsValidator
{
const KEYS = ['analytics_view_id', 'analytics_service_email', 'analytics.tracking_code', 'certificate'];
public function fails($settings)
{
$this->setConfigDynamically($settings);
try {
app(GetGoogleAnalyticsData::class)->execute(null);
} catch (Exception $e) {
return $this->getErrorMessage($e);
}
}
private function setConfigDynamically($settings)
{
if ($viewId = Arr::get($settings, 'analytics_view_id')) {
Config::set('analytics.view_id', $viewId);
}
}
/**
* @param Exception $e
* @return array
*/
private function getErrorMessage($e)
{
if ($e instanceof Google_Service_Exception) {
$message = Arr::get($e->getErrors(), '0.message');
} else if (Str::contains($e->getMessage(), "Could not find a credentials file at")) {
return ['certificate' => 'Google Service Account Key File is required and has not been uploaded yet.'];
} else {
$message = $e->getMessage();
}
return ['analytics_group' => 'Invalid credentials: ' . $message];
}
}