mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #14301 from ioito/hotfix/qx-huawei-object-temp-url
fix(region): huawei object temp url
This commit is contained in:
@@ -219,7 +219,7 @@ func (conf *config) initConfigWithDefault() error {
|
||||
urlHolder.scheme = "http"
|
||||
address = conf.endpoint[len("http://"):]
|
||||
} else {
|
||||
urlHolder.scheme = "http"
|
||||
urlHolder.scheme = "https"
|
||||
address = conf.endpoint
|
||||
}
|
||||
|
||||
@@ -328,11 +328,25 @@ func DummyQueryEscape(s string) string {
|
||||
return s
|
||||
}
|
||||
|
||||
func (conf *config) formatUrls(bucketName, objectKey string, params map[string]string, escape bool) (requestUrl string, canonicalizedUrl string) {
|
||||
func (conf *config) requestUrl(bucket string) string {
|
||||
urlHolder := conf.urlHolder
|
||||
requestUrl := fmt.Sprintf("%s://%s", urlHolder.scheme, urlHolder.host)
|
||||
if len(bucket) > 0 {
|
||||
requestUrl = fmt.Sprintf("%s://%s.%s", urlHolder.scheme, bucket, urlHolder.host)
|
||||
}
|
||||
if urlHolder.scheme == "https" && urlHolder.port != 443 {
|
||||
requestUrl += fmt.Sprintf(":%d", urlHolder.port)
|
||||
}
|
||||
if urlHolder.scheme == "http" && urlHolder.port != 80 {
|
||||
requestUrl += fmt.Sprintf(":%d", urlHolder.port)
|
||||
}
|
||||
return requestUrl
|
||||
}
|
||||
|
||||
func (conf *config) formatUrls(bucketName, objectKey string, params map[string]string, escape bool) (requestUrl string, canonicalizedUrl string) {
|
||||
urlHolder := conf.urlHolder
|
||||
if conf.cname {
|
||||
requestUrl = fmt.Sprintf("%s://%s:%d", urlHolder.scheme, urlHolder.host, urlHolder.port)
|
||||
requestUrl = conf.requestUrl("")
|
||||
if conf.signature == "v4" {
|
||||
canonicalizedUrl = "/"
|
||||
} else {
|
||||
@@ -340,14 +354,14 @@ func (conf *config) formatUrls(bucketName, objectKey string, params map[string]s
|
||||
}
|
||||
} else {
|
||||
if bucketName == "" {
|
||||
requestUrl = fmt.Sprintf("%s://%s:%d", urlHolder.scheme, urlHolder.host, urlHolder.port)
|
||||
requestUrl = conf.requestUrl("")
|
||||
canonicalizedUrl = "/"
|
||||
} else {
|
||||
if conf.pathStyle {
|
||||
requestUrl = fmt.Sprintf("%s://%s:%d/%s", urlHolder.scheme, urlHolder.host, urlHolder.port, bucketName)
|
||||
requestUrl = fmt.Sprintf("%s/%s", conf.requestUrl(""), bucketName)
|
||||
canonicalizedUrl = "/" + bucketName
|
||||
} else {
|
||||
requestUrl = fmt.Sprintf("%s://%s.%s:%d", urlHolder.scheme, bucketName, urlHolder.host, urlHolder.port)
|
||||
requestUrl = conf.requestUrl(bucketName)
|
||||
if conf.signature == "v2" || conf.signature == "OBS" {
|
||||
canonicalizedUrl = "/" + bucketName + "/"
|
||||
} else {
|
||||
|
||||
@@ -793,6 +793,26 @@ func S3Shell() {
|
||||
return nil
|
||||
})
|
||||
|
||||
type BucketObjectTempUrlOptions struct {
|
||||
BUCKET string `help:"name of bucket"`
|
||||
KEY string `help:"Key of object"`
|
||||
Method string `default:"GET" choices:"GET|PUT|POST"`
|
||||
Hour int64 `default:"1"`
|
||||
}
|
||||
|
||||
shellutils.R(&BucketObjectTempUrlOptions{}, "object-temp-url", "Show object temp url", func(cli cloudprovider.ICloudRegion, args *BucketObjectTempUrlOptions) error {
|
||||
bucket, err := cli.GetIBucketById(args.BUCKET)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
url, err := bucket.GetTempUrl(args.Method, args.KEY, time.Duration(args.Hour)*time.Hour)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(url)
|
||||
return nil
|
||||
})
|
||||
|
||||
type BucketObjectCopyOptions struct {
|
||||
SRC string `help:"name of source bucket"`
|
||||
SRCKEY string `help:"Key of source object"`
|
||||
|
||||
Reference in New Issue
Block a user