/**
* 生成七牛云防盗链,防盗链基于时间戳
*
* @param string $url
* @param string $antiLinkKey
* @param integer $deadline
* @param array $query
* @return void
*
* @see https://developer.qiniu.com/fusion/kb/1670/timestamp-hotlinking-prevention
*/
public function getAntiLinkUrl(string $url, string $antiLinkKey, int $deadline, array $query = [])
{
$urlInfo = parse_url($url);
if (empty($urlInfo['path'])) {
return null;
}
$qiniuOriginUrl = sprintf('/%s', ltrim($urlInfo['path'], '/'));
$accessUrl = $qiniuOriginUrl;
$accessUrl = implode("/", array_map("rawurlencode", explode("/", $accessUrl)));
$key = $antiLinkKey;
$hexDeadline = dechex($deadline);
$lowerHexDeadline = strtolower($hexDeadline);
$signString = sprintf('%s%s%s', $key, $accessUrl, $lowerHexDeadline);
$sign = strtolower(md5($signString));
$querystring = http_build_query(array_merge($query, [
'sign' => $sign,
't' => $lowerHexDeadline,
]));
if (str_contains($url, '?')) {
$url .= "&{$querystring}";
} else {
$url .= "?{$querystring}";
}
return $url;
}