Skip to content

Commit

Permalink
Merge pull request #11 from SDPM-lab/dev
Browse files Browse the repository at this point in the history
2023.05.04 added guzzle handler
  • Loading branch information
monkenWu authored May 4, 2023
2 parents ccf3d30 + 4846e03 commit fea7b07
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 17 deletions.
1 change: 0 additions & 1 deletion src/Service/Action.php
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,6 @@ function do(): ActionInterface
if ($this->numOfAction > $this->retry) {
throw $th;
}
sleep($this->retryDelay);
continue;
}
}
Expand Down
54 changes: 38 additions & 16 deletions src/Service/ServiceList.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,34 @@
namespace SDPMlab\Anser\Service;

use SDPMlab\Anser\Service\ServiceSettings;
use GuzzleHttp\HandlerStack;

class ServiceList
{

/**
* 本地服務清單
* Local Service List
*
* @var array
*/
protected static $localServiceList = [];

/**
* Global HandlerStack callback
*
* @var null|callable
*/
protected static $globalHandlerCallback = null;

/**
* Guzzle7 HTTP Client 實體
* Guzzle7 HTTP Client Instance
*
* @var \GuzzleHttp\Client
*/
protected static $client;

/**
* 設定 Local Service List
* Set local service list
*
* @return void
*/
Expand All @@ -39,12 +47,23 @@ public static function setLocalServices(array $services): void
}

/**
* 新增一筆 Service 資料至 service list
* Guzzel will use this HandlerStack to handle the Request.
*
* @param HandlerStack $handlerStack
* @return void
*/
public static function setGlobalHandlerStack(callable $handler)
{
static::$globalHandlerCallback = $handler;
}

/**
* Add a new service to local service list.
*
* @param string $name 服務名稱
* @param string $address 服務地址
* @param integer $port 服務埠號
* @param boolean $isHttps 是否為 Https 連線
* @param string $name Service Name
* @param string $address Service Address
* @param integer $port Service Port
* @param boolean $isHttps Is HTTPS or not
* @return void
*/
public static function addLocalService(string $name, string $address, int $port, bool $isHttps): void
Expand All @@ -58,7 +77,7 @@ public static function addLocalService(string $name, string $address, int $port,
}

/**
* 取得本地服務清單陣列
* Get local service list
*
* @return array
*/
Expand All @@ -68,14 +87,13 @@ public static function getServiceList(): array
}

/**
* 取得單一服務設定
* get single service data
*
* @param string $serviceName 服務名稱
* @return ServiceSettings|null
*/
public static function getServiceData(string $serviceName): ?ServiceSettings
{
//如果 Service Name 是 URL
if (filter_var($serviceName, FILTER_VALIDATE_URL) !== false) {
$parseUrl = parse_url($serviceName);
if(isset($parseUrl["port"])){
Expand All @@ -91,7 +109,6 @@ public static function getServiceData(string $serviceName): ?ServiceSettings
);
}

//如果 Service Name 已被全域紀錄
if (isset(static::$localServiceList[$serviceName])) {
return static::$localServiceList[$serviceName];
} else {
Expand All @@ -100,7 +117,7 @@ public static function getServiceData(string $serviceName): ?ServiceSettings
}

/**
* 清空服務清單陣列
* Clear the list of local services
*
* @return void
*/
Expand All @@ -110,7 +127,7 @@ public static function cleanServiceList(): void
}

/**
* 移除服務清單中的某個服務設定
* Remove a service from local service list
*
* @param string $serviceName 服務名稱
* @return void
Expand All @@ -123,14 +140,19 @@ public static function removeService(string $serviceName): void
}

/**
* 回傳共享服務實體
* Get Guzzle7 HTTP Client shared instance
*
* @return \GuzzleHttp\Client
*/
public static function getHttpClient(): \GuzzleHttp\Client
{
if(!static::$client instanceof \GuzzleHttp\Client){
static::$client = new \GuzzleHttp\Client();
if(static::$globalHandlerStack === null){
static::$client = new \GuzzleHttp\Client();
} else {
$stack = HandlerStack::create(self::$globalHandlerCallback); // Wrap w/ middleware
static::$client = new \GuzzleHttp\Client(['handler' => $stack]);
}
}
return static::$client;
}
Expand Down

0 comments on commit fea7b07

Please sign in to comment.