新增: SFTP直连+网站预览+OSS区域嗅探+热键+BGM播放
This commit is contained in:
@@ -99,6 +99,55 @@ func (c *Client) GetBucketDomains(ctx context.Context) ([]string, error) {
|
||||
return domains, nil
|
||||
}
|
||||
|
||||
// GetBucketRegion 查询桶的真实区域
|
||||
// API: POST https://uc.qbox.me/v2/buckets → 遍历匹配桶名获取 region
|
||||
func (c *Client) GetBucketRegion(ctx context.Context) (string, error) {
|
||||
// 使用 UC API 获取所有桶列表(含 region)
|
||||
req, err := http.NewRequestWithContext(ctx, "POST", "https://uc.qbox.me/v2/buckets", nil)
|
||||
if err != nil {
|
||||
return "", oss.NewError("BUCKET_ERROR", "failed to create request", err)
|
||||
}
|
||||
|
||||
path := "/v2/buckets"
|
||||
host := "uc.qbox.me"
|
||||
authToken := c.generateAuthTokenWithQuery("POST", path, "", host, "application/x-www-form-urlencoded", nil)
|
||||
req.Header.Set("Host", host)
|
||||
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||
req.Header.Set("Authorization", authToken)
|
||||
|
||||
resp, err := c.httpClient.Do(req)
|
||||
if err != nil {
|
||||
return "", oss.NewError("BUCKET_ERROR", "failed to query bucket region", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return "", oss.NewError("BUCKET_ERROR", "failed to read response", err)
|
||||
}
|
||||
|
||||
if resp.StatusCode != 200 {
|
||||
return "", oss.NewError("BUCKET_ERROR",
|
||||
fmt.Sprintf("query bucket region failed with status %d: %s", resp.StatusCode, string(body)), nil)
|
||||
}
|
||||
|
||||
var buckets []struct {
|
||||
ID string `json:"id"`
|
||||
Region string `json:"region"`
|
||||
}
|
||||
if err := json.Unmarshal(body, &buckets); err != nil {
|
||||
return "", oss.NewError("BUCKET_ERROR", "failed to parse response", err)
|
||||
}
|
||||
|
||||
for _, b := range buckets {
|
||||
if b.ID == c.config.Bucket {
|
||||
return b.Region, nil
|
||||
}
|
||||
}
|
||||
|
||||
return "", oss.NewError("BUCKET_ERROR", fmt.Sprintf("bucket %s not found in account", c.config.Bucket), nil)
|
||||
}
|
||||
|
||||
// SetBucketAccess 设置空间访问权限(公开/私有)
|
||||
// 根据: https://developer.qiniu.com/kodo/api/3946/set-bucket-private
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user