url = rtrim($configuration['url'], '/'); $this->authorizationMethod = AuthenticationEnum::from($configuration['auth'] ?: AuthenticationEnum::Basic->value); $this->authorization = new CurlAuthorization($configuration); $this->headers = $configuration['headers'] ?? []; $this->options = $configuration['options'] ?? []; $this->parameters = $configuration['parameters'] ?? []; } public function connect(): object { $this->authorization = $this->authorization->fromAuthenticationEnum($this->authorizationMethod); return new CurlClient([], $this->options, $this->authorization); } public function buildDataSourceName(): string { return "https"; } public function writableValue(mixed $value) : mixed { switch (true) { case $value instanceof \UnitEnum: return Ulmus::convertEnum($value); case is_object($value): return Ulmus::convertObject($value); # case is_array($value): # return json_encode($value); case is_bool($value): return (int) $value; } return $value; } public function repositoryClass(): string { return ApiRepository::class; } public function queryBuilderClass(): string { return RequestBuilder::class; } public function getCurlOptions() : array { return $this->options; } public function getHeaders() : array { return $this->headers; } public function getParameters() : array { return $this->parameters; } public function escapeIdentifier(string $segment, int $type): string { return $segment; } }