ctms/vendor/huawei/obsclient/TemporarySignature.php
2025-04-10 23:19:13 +08:00

173 lines
5.9 KiB
PHP
Executable File

<?php
# @Author: 嗨噜客(三亚) <fm453>
# @Date: 2022-05-19T08:30:15+08:00
# @Email: fm453@lukegzs.com
# @Last modified by: fm453
# @Last modified time: 2022-05-21T00:23:46+08:00
# @Copyright: www.hiluker.cn
namespace vendor\huawei\obsclient;
// 引入依赖库
require('vendor/autoload.php');
require('obs-autoloader.php');
use Obs\ObsClient;
use Obs\ObsException;
use GuzzleHttp\Exception\ClientException;
//生成带授权信息的URL,默认有效期300s
class TemporarySignature extends Common
{
public function init()
{
$obsClient = new ObsClient([
'key' => $this->ak,
'secret' => $this->sk,
'endpoint' => $this->endpoint,
]);
$obsClient->initLog([
'FilePath' => './logs',
'FileName' => 'eSDK-OBS-PHP.log',
'MaxFiles' => 10,
'Level' => WARN
]);
$this->obsClient = $obsClient;
}
public function createBucket($bucketName)
{
$obsClient = $this->obsClient;
/*
* Create bucket
*/
$method = 'PUT';
$res = $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method]);
doAction('Create bucket', $method, $res['SignedUrl']);
}
public function setCors($host, $bucketName)
{
$obsClient = $this->obsClient;
/*
* Set/Get/Delete bucket cors
*/
$method = 'PUT';
$content = '<CORSConfiguration><CORSRule><AllowedMethod>PUT</AllowedMethod><AllowedOrigin>'.$host.'</AllowedOrigin><AllowedHeader>header1</AllowedHeader><MaxAgeSeconds>100</MaxAgeSeconds><ExposeHeader>header2</ExposeHeader></CORSRule></CORSConfiguration>';
$headers = ['Content-Length'=> strval(strlen($content)), 'Content-MD5' => base64_encode(md5($content, true))];
$res = $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method, 'SpecialParam' => 'cors', 'Headers' => $headers]);
doAction('Set bucket cors ', $method, $res['SignedUrl'], $content, $res['ActualSignedRequestHeaders']);
}
public function getCors($bucketName)
{
$obsClient = $this->obsClient;
/*
* Set/Get/Delete bucket cors
*/
$method = 'GET';
$res= $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method, 'SpecialParam' => 'cors']);
return $res['SignedUrl'];
$this->doAction('Get bucket cors ', $method, $res['SignedUrl']);
}
public function deleteCors($bucketName)
{
$obsClient = $this->obsClient;
/*
* Set/Get/Delete bucket cors
*/
$method = 'DELETE';
$res= $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method, 'SpecialParam' => 'cors']);
doAction('Delete bucket cors ', $method, $res['SignedUrl']);
}
public function createObject($content, $bucketName)
{
$obsClient = $this->obsClient;
/*
* Create object
*/
$method = 'PUT';
$headers = ['Content-Length'=> strval(strlen($content))];
$res = $obsClient -> createSignedUrl(['Method' => $method, 'Bucket' => $bucketName, 'Key' => $objectKey, 'Headers'=> $headers]);
doAction('Create object', $method, $res['SignedUrl'], $content, $res['ActualSignedRequestHeaders']);
}
public function getObject($content, $bucketName)
{
$obsClient = $this->obsClient;
/*
* Get object
*/
$method = 'GET';
$res = $obsClient -> createSignedUrl(['Method' => $method, 'Bucket' => $bucketName, 'Key' => $objectKey]);
doAction('Get object', $method, $res['SignedUrl']);
}
public function setObjectAcl($content, $bucketName)
{
$obsClient = $this->obsClient;
/*
* Set/Get object acl
*/
$method = 'PUT';
$headers = ['x-amz-acl'=> ObsClient::AclPublicRead];
$res = $obsClient -> createSignedUrl(['Method' => $method, 'Bucket' => $bucketName, 'Key' => $objectKey, 'Headers'=> $headers, 'SpecialParam' => 'acl']);
doAction('Set object Acl', $method, $res['SignedUrl'], null, $res['ActualSignedRequestHeaders']);
}
public function getObjectAcl($content, $bucketName)
{
$obsClient = $this->obsClient;
/*
* Set/Get object acl
*/
$method = 'GET';
$res = $obsClient -> createSignedUrl(['Method' => $method, 'Bucket' => $bucketName, 'Key' => $objectKey, 'SpecialParam' => 'acl']);
doAction('Get object Acl', $method, $res['SignedUrl']);
}
public function deletedObject($bucketName)
{
$obsClient = $this->obsClient;
/*
* Delete object
*/
$method = 'DELETE';
$res = $obsClient -> createSignedUrl(['Method' => $method, 'Bucket' => $bucketName, 'Key' => $objectKey]);
doAction('Delete object', $method, $res['SignedUrl']);
}
public function deletedBucket($bucketName)
{
$obsClient = $this->obsClient;
/*
* Delete bucket
*/
$method = 'DELETE';
$res = $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method]);
doAction('Delete bucket', $method, $res['SignedUrl']);
}
public function UploadUrl($bucketName)
{
$obsClient = $this->obsClient;
/*
* 获取文件上传签名URL
*/
$method = 'PUT';
$expires = 3600; //有效期3600秒;
$objectname = 'file';
// $header = ['content-type' => 'text/plain'];
$header = ['content-type' => 'multipart/form-data'];
$res = $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method,'Key'=>$objectname,'Expires'=>$expires]);
return [
'url'=>$res['SignedUrl'],
'header'=>$res['ActualSignedRequestHeaders']
];
// $this->doAction('get upload url', $method, $res['SignedUrl']);
}
}