190 lines
3.5 KiB
PHP
190 lines
3.5 KiB
PHP
<?php
|
|
/**
|
|
*
|
|
* This file is part of phpFastCache.
|
|
*
|
|
* @license MIT License (MIT)
|
|
*
|
|
* For full copyright and license information, please see the docs/CREDITS.txt file.
|
|
*
|
|
* @author Khoa Bui (khoaofgod) <khoaofgod@gmail.com> https://www.phpfastcache.com
|
|
* @author Georges.L (Geolim4) <contact@geolim4.com>
|
|
*
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Phpfastcache\Drivers\Couchdb;
|
|
|
|
use Phpfastcache\Config\ConfigurationOption;
|
|
use Phpfastcache\Exceptions\PhpfastcacheInvalidArgumentException;
|
|
|
|
class Config extends ConfigurationOption
|
|
{
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $host = '127.0.0.1';
|
|
|
|
/**
|
|
* @var int
|
|
*/
|
|
protected $port = 5984;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $username = '';
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $password = '';
|
|
/**
|
|
* @var bool
|
|
*/
|
|
protected $ssl = false;
|
|
/**
|
|
* @var int
|
|
*/
|
|
protected $timeout = 10;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $database = Driver::COUCHDB_DEFAULT_DB_NAME;
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getDatabase(): string
|
|
{
|
|
return $this->database;
|
|
}
|
|
|
|
/**
|
|
* @param string $database
|
|
* @return Config
|
|
*/
|
|
public function setDatabase(string $database): Config
|
|
{
|
|
/** @see https://docs.couchdb.org/en/latest/api/database/common.html#put--db */
|
|
if(\preg_match('#^[a-z][a-z0-9_\-+\$()/]+$#', $database)){
|
|
$this->database = $database;
|
|
return $this;
|
|
}
|
|
|
|
throw new PhpfastcacheInvalidArgumentException(sprintf(
|
|
"Error: illegal_database_name Name: '%s'. Only lowercase characters (a-z), digits (0-9), and any of the characters _, $, (, ), +, -, and / are allowed. Must begin with a letter.",
|
|
$database
|
|
));
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getHost(): string
|
|
{
|
|
return $this->host;
|
|
}
|
|
|
|
/**
|
|
* @param string $host
|
|
* @return self
|
|
*/
|
|
public function setHost(string $host): self
|
|
{
|
|
$this->host = $host;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return int
|
|
*/
|
|
public function getPort(): int
|
|
{
|
|
return $this->port;
|
|
}
|
|
|
|
/**
|
|
* @param int $port
|
|
* @return self
|
|
*/
|
|
public function setPort(int $port): self
|
|
{
|
|
$this->port = $port;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getUsername(): string
|
|
{
|
|
return $this->username;
|
|
}
|
|
|
|
/**
|
|
* @param string $username
|
|
* @return self
|
|
*/
|
|
public function setUsername(string $username): self
|
|
{
|
|
$this->username = $username;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getPassword(): string
|
|
{
|
|
return $this->password;
|
|
}
|
|
|
|
/**
|
|
* @param string $password
|
|
* @return self
|
|
*/
|
|
public function setPassword(string $password): self
|
|
{
|
|
$this->password = $password;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
public function isSsl(): bool
|
|
{
|
|
return $this->ssl;
|
|
}
|
|
|
|
/**
|
|
* @param bool $ssl
|
|
* @return self
|
|
*/
|
|
public function setSsl(bool $ssl): self
|
|
{
|
|
$this->ssl = $ssl;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return int
|
|
*/
|
|
public function getTimeout(): int
|
|
{
|
|
return $this->timeout;
|
|
}
|
|
|
|
/**
|
|
* @param int $timeout
|
|
* @return self
|
|
*/
|
|
public function setTimeout(int $timeout): self
|
|
{
|
|
$this->timeout = $timeout;
|
|
return $this;
|
|
}
|
|
}
|