client = new Client([ 'url' => $this->influxdbUrl, 'token' => $this->influxdbToken, 'bucket' => $this->influxdbBucket, 'org' => $this->influxdbOrg, 'precision' => WritePrecision::MS, ]); } public function addRdapQueryPoint(RdapServer $rdapServer, string $ldhName, array $info): void { $this->writePoints(new Point('rdap_query', [ 'ldh_name' => $ldhName, 'tld' => $rdapServer->getTld()->getTld(), 'rdap_server' => $rdapServer->getUrl(), 'primary_ip' => $info['primary_ip'], 'http_code' => $info['http_code'], ], [ 'total_time_us' => $info['total_time_us'], 'namelookup_time_us' => $info['namelookup_time_us'], 'connect_time_us' => $info['connect_time_us'], 'starttransfer_time_us' => $info['starttransfer_time_us'], 'size_download' => $info['size_download'], 'ssl_verify_result' => $info['ssl_verify_result'], ], (int) floor($info['start_time'] * 1e3), WritePrecision::MS) ); } public function addDomainOrderPoint(Connector $connector, Domain $domain, bool $success): void { $this->writePoints(new Point('domain_order', [ 'domain' => $domain->getLdhName(), 'tld' => $domain->getTld()->getTld(), 'provider' => $connector->getProvider()->value, ], [ 'success' => $success, ])); } public function addDomainNotificationPoint(Domain $domain, TriggerAction $triggerAction, bool $success): void { $this->writePoints(new Point('domain_notification', [ 'domain' => $domain->getLdhName(), 'tld' => $domain->getTld()->getTld(), 'medium' => $triggerAction->value, ], [ 'success' => $success, ])); } private function writePoints(Point ...$points): void { try { $writeApi = $this->client->createWriteApi(['writeType' => WriteType::BATCHING, 'batchSize' => count($points)]); foreach ($points as $point) { $writeApi->write($point); } $writeApi->close(); } catch (\Throwable) { // TODO: Add a retry mechanism if writing fails } } }