forked from TrueCloudLab/frostfs-s3-gw
Fixes over bucket router
should work over {bucket}.{domain} and /{bucket} Signed-off-by: Evgeniy Kulikov <kim@nspcc.ru>
This commit is contained in:
parent
793925497a
commit
ef0e179b33
1 changed files with 251 additions and 245 deletions
496
api/router.go
496
api/router.go
|
@ -167,7 +167,7 @@ func GetRequestID(v interface{}) string {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Attach(r *mux.Router, m MaxClients, h Handler, center auth.Center, log *zap.Logger) {
|
func Attach(r *mux.Router, domains []string, m MaxClients, h Handler, center auth.Center, log *zap.Logger) {
|
||||||
api := r.PathPrefix(SlashSeparator).Subrouter()
|
api := r.PathPrefix(SlashSeparator).Subrouter()
|
||||||
|
|
||||||
api.Use(
|
api.Use(
|
||||||
|
@ -181,258 +181,264 @@ func Attach(r *mux.Router, m MaxClients, h Handler, center auth.Center, log *zap
|
||||||
// Attach user authentication for all S3 routes.
|
// Attach user authentication for all S3 routes.
|
||||||
AttachUserAuth(api, center, log)
|
AttachUserAuth(api, center, log)
|
||||||
|
|
||||||
bucket := api.PathPrefix("/{bucket}").Subrouter()
|
buckets := make([]*mux.Router, 0, len(domains)+1)
|
||||||
|
buckets = append(buckets, api.PathPrefix("/{bucket}").Subrouter())
|
||||||
|
|
||||||
// Object operations
|
for _, domain := range domains {
|
||||||
// HeadObject
|
buckets = append(buckets, api.Host("{bucket:.+}."+domain).Subrouter())
|
||||||
bucket.Methods(http.MethodHead).Path("/{object:.+}").HandlerFunc(
|
}
|
||||||
m.Handle(metrics.APIStats("headobject", h.HeadObjectHandler))).Name("HeadObject")
|
|
||||||
// CopyObjectPart
|
|
||||||
bucket.Methods(http.MethodPut).Path("/{object:.+}").HeadersRegexp(hdrAmzCopySource, ".*?(\\/|%2F).*?").HandlerFunc(m.Handle(metrics.APIStats("copyobjectpart", h.CopyObjectPartHandler))).Queries("partNumber", "{partNumber:[0-9]+}", "uploadId", "{uploadId:.*}").
|
|
||||||
Name("CopyObjectPart")
|
|
||||||
// PutObjectPart
|
|
||||||
bucket.Methods(http.MethodPut).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("putobjectpart", h.PutObjectPartHandler))).Queries("partNumber", "{partNumber:[0-9]+}", "uploadId", "{uploadId:.*}").
|
|
||||||
Name("PutObjectObject")
|
|
||||||
// ListObjectParts
|
|
||||||
bucket.Methods(http.MethodGet).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("listobjectparts", h.ListObjectPartsHandler))).Queries("uploadId", "{uploadId:.*}").
|
|
||||||
Name("ListObjectParts")
|
|
||||||
// CompleteMultipartUpload
|
|
||||||
bucket.Methods(http.MethodPost).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("completemutipartupload", h.CompleteMultipartUploadHandler))).Queries("uploadId", "{uploadId:.*}").
|
|
||||||
Name("CompleteMultipartUpload")
|
|
||||||
// NewMultipartUpload
|
|
||||||
bucket.Methods(http.MethodPost).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("newmultipartupload", h.NewMultipartUploadHandler))).Queries("uploads", "").
|
|
||||||
Name("NewMultipartUpload")
|
|
||||||
// AbortMultipartUpload
|
|
||||||
bucket.Methods(http.MethodDelete).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("abortmultipartupload", h.AbortMultipartUploadHandler))).Queries("uploadId", "{uploadId:.*}").
|
|
||||||
Name("AbortMultipartUpload")
|
|
||||||
// GetObjectACL - this is a dummy call.
|
|
||||||
bucket.Methods(http.MethodGet).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("getobjectacl", h.GetObjectACLHandler))).Queries("acl", "").
|
|
||||||
Name("GetObjectACL")
|
|
||||||
// PutObjectACL - this is a dummy call.
|
|
||||||
bucket.Methods(http.MethodPut).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("putobjectacl", h.PutObjectACLHandler))).Queries("acl", "").
|
|
||||||
Name("PutObjectACL")
|
|
||||||
// GetObjectTagging
|
|
||||||
bucket.Methods(http.MethodGet).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("getobjecttagging", h.GetObjectTaggingHandler))).Queries("tagging", "").
|
|
||||||
Name("GetObjectTagging")
|
|
||||||
// PutObjectTagging
|
|
||||||
bucket.Methods(http.MethodPut).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("putobjecttagging", h.PutObjectTaggingHandler))).Queries("tagging", "").
|
|
||||||
Name("PutObjectTagging")
|
|
||||||
// DeleteObjectTagging
|
|
||||||
bucket.Methods(http.MethodDelete).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("deleteobjecttagging", h.DeleteObjectTaggingHandler))).Queries("tagging", "").
|
|
||||||
Name("DeleteObjectTagging")
|
|
||||||
// SelectObjectContent
|
|
||||||
bucket.Methods(http.MethodPost).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("selectobjectcontent", h.SelectObjectContentHandler))).Queries("select", "").Queries("select-type", "2").
|
|
||||||
Name("SelectObjectContent")
|
|
||||||
// GetObjectRetention
|
|
||||||
bucket.Methods(http.MethodGet).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("getobjectretention", h.GetObjectRetentionHandler))).Queries("retention", "").
|
|
||||||
Name("GetObjectRetention")
|
|
||||||
// GetObjectLegalHold
|
|
||||||
bucket.Methods(http.MethodGet).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("getobjectlegalhold", h.GetObjectLegalHoldHandler))).Queries("legal-hold", "").
|
|
||||||
Name("GetObjectLegalHold")
|
|
||||||
// GetObject
|
|
||||||
bucket.Methods(http.MethodGet).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("getobject", h.GetObjectHandler))).
|
|
||||||
Name("GetObject")
|
|
||||||
// CopyObject
|
|
||||||
bucket.Methods(http.MethodPut).Path("/{object:.+}").HeadersRegexp(hdrAmzCopySource, ".*?(\\/|%2F).*?").HandlerFunc(m.Handle(metrics.APIStats("copyobject", h.CopyObjectHandler))).
|
|
||||||
Name("CopyObject")
|
|
||||||
// PutObjectRetention
|
|
||||||
bucket.Methods(http.MethodPut).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("putobjectretention", h.PutObjectRetentionHandler))).Queries("retention", "").
|
|
||||||
Name("PutObjectRetention")
|
|
||||||
// PutObjectLegalHold
|
|
||||||
bucket.Methods(http.MethodPut).Path("/{object:.+}").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("putobjectlegalhold", h.PutObjectLegalHoldHandler))).Queries("legal-hold", "").
|
|
||||||
Name("PutObjectLegalHold")
|
|
||||||
|
|
||||||
// PutObject
|
for _, bucket := range buckets {
|
||||||
bucket.Methods(http.MethodPut).Path("/{object:.+}").HandlerFunc(
|
// Object operations
|
||||||
m.Handle(metrics.APIStats("putobject", h.PutObjectHandler))).
|
// HeadObject
|
||||||
Name("PutObject")
|
bucket.Methods(http.MethodHead).Path("/{object:.+}").HandlerFunc(
|
||||||
// DeleteObject
|
m.Handle(metrics.APIStats("headobject", h.HeadObjectHandler))).Name("HeadObject")
|
||||||
bucket.Methods(http.MethodDelete).Path("/{object:.+}").HandlerFunc(
|
// CopyObjectPart
|
||||||
m.Handle(metrics.APIStats("deleteobject", h.DeleteObjectHandler))).
|
bucket.Methods(http.MethodPut).Path("/{object:.+}").HeadersRegexp(hdrAmzCopySource, ".*?(\\/|%2F).*?").HandlerFunc(m.Handle(metrics.APIStats("copyobjectpart", h.CopyObjectPartHandler))).Queries("partNumber", "{partNumber:[0-9]+}", "uploadId", "{uploadId:.*}").
|
||||||
Name("DeleteObject")
|
Name("CopyObjectPart")
|
||||||
|
// PutObjectPart
|
||||||
|
bucket.Methods(http.MethodPut).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("putobjectpart", h.PutObjectPartHandler))).Queries("partNumber", "{partNumber:[0-9]+}", "uploadId", "{uploadId:.*}").
|
||||||
|
Name("PutObjectObject")
|
||||||
|
// ListObjectParts
|
||||||
|
bucket.Methods(http.MethodGet).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("listobjectparts", h.ListObjectPartsHandler))).Queries("uploadId", "{uploadId:.*}").
|
||||||
|
Name("ListObjectParts")
|
||||||
|
// CompleteMultipartUpload
|
||||||
|
bucket.Methods(http.MethodPost).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("completemutipartupload", h.CompleteMultipartUploadHandler))).Queries("uploadId", "{uploadId:.*}").
|
||||||
|
Name("CompleteMultipartUpload")
|
||||||
|
// NewMultipartUpload
|
||||||
|
bucket.Methods(http.MethodPost).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("newmultipartupload", h.NewMultipartUploadHandler))).Queries("uploads", "").
|
||||||
|
Name("NewMultipartUpload")
|
||||||
|
// AbortMultipartUpload
|
||||||
|
bucket.Methods(http.MethodDelete).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("abortmultipartupload", h.AbortMultipartUploadHandler))).Queries("uploadId", "{uploadId:.*}").
|
||||||
|
Name("AbortMultipartUpload")
|
||||||
|
// GetObjectACL - this is a dummy call.
|
||||||
|
bucket.Methods(http.MethodGet).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("getobjectacl", h.GetObjectACLHandler))).Queries("acl", "").
|
||||||
|
Name("GetObjectACL")
|
||||||
|
// PutObjectACL - this is a dummy call.
|
||||||
|
bucket.Methods(http.MethodPut).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("putobjectacl", h.PutObjectACLHandler))).Queries("acl", "").
|
||||||
|
Name("PutObjectACL")
|
||||||
|
// GetObjectTagging
|
||||||
|
bucket.Methods(http.MethodGet).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("getobjecttagging", h.GetObjectTaggingHandler))).Queries("tagging", "").
|
||||||
|
Name("GetObjectTagging")
|
||||||
|
// PutObjectTagging
|
||||||
|
bucket.Methods(http.MethodPut).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("putobjecttagging", h.PutObjectTaggingHandler))).Queries("tagging", "").
|
||||||
|
Name("PutObjectTagging")
|
||||||
|
// DeleteObjectTagging
|
||||||
|
bucket.Methods(http.MethodDelete).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("deleteobjecttagging", h.DeleteObjectTaggingHandler))).Queries("tagging", "").
|
||||||
|
Name("DeleteObjectTagging")
|
||||||
|
// SelectObjectContent
|
||||||
|
bucket.Methods(http.MethodPost).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("selectobjectcontent", h.SelectObjectContentHandler))).Queries("select", "").Queries("select-type", "2").
|
||||||
|
Name("SelectObjectContent")
|
||||||
|
// GetObjectRetention
|
||||||
|
bucket.Methods(http.MethodGet).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("getobjectretention", h.GetObjectRetentionHandler))).Queries("retention", "").
|
||||||
|
Name("GetObjectRetention")
|
||||||
|
// GetObjectLegalHold
|
||||||
|
bucket.Methods(http.MethodGet).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("getobjectlegalhold", h.GetObjectLegalHoldHandler))).Queries("legal-hold", "").
|
||||||
|
Name("GetObjectLegalHold")
|
||||||
|
// GetObject
|
||||||
|
bucket.Methods(http.MethodGet).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("getobject", h.GetObjectHandler))).
|
||||||
|
Name("GetObject")
|
||||||
|
// CopyObject
|
||||||
|
bucket.Methods(http.MethodPut).Path("/{object:.+}").HeadersRegexp(hdrAmzCopySource, ".*?(\\/|%2F).*?").HandlerFunc(m.Handle(metrics.APIStats("copyobject", h.CopyObjectHandler))).
|
||||||
|
Name("CopyObject")
|
||||||
|
// PutObjectRetention
|
||||||
|
bucket.Methods(http.MethodPut).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("putobjectretention", h.PutObjectRetentionHandler))).Queries("retention", "").
|
||||||
|
Name("PutObjectRetention")
|
||||||
|
// PutObjectLegalHold
|
||||||
|
bucket.Methods(http.MethodPut).Path("/{object:.+}").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("putobjectlegalhold", h.PutObjectLegalHoldHandler))).Queries("legal-hold", "").
|
||||||
|
Name("PutObjectLegalHold")
|
||||||
|
|
||||||
// Bucket operations
|
// PutObject
|
||||||
// GetBucketLocation
|
bucket.Methods(http.MethodPut).Path("/{object:.+}").HandlerFunc(
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
m.Handle(metrics.APIStats("putobject", h.PutObjectHandler))).
|
||||||
m.Handle(metrics.APIStats("getbucketlocation", h.GetBucketLocationHandler))).Queries("location", "").
|
Name("PutObject")
|
||||||
Name("GetBucketLocation")
|
// DeleteObject
|
||||||
// GetBucketPolicy
|
bucket.Methods(http.MethodDelete).Path("/{object:.+}").HandlerFunc(
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
m.Handle(metrics.APIStats("deleteobject", h.DeleteObjectHandler))).
|
||||||
m.Handle(metrics.APIStats("getbucketpolicy", h.GetBucketPolicyHandler))).Queries("policy", "").
|
Name("DeleteObject")
|
||||||
Name("GetBucketPolicy")
|
|
||||||
// GetBucketLifecycle
|
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("getbucketlifecycle", h.GetBucketLifecycleHandler))).Queries("lifecycle", "").
|
|
||||||
Name("GetBucketLifecycle")
|
|
||||||
// GetBucketEncryption
|
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("getbucketencryption", h.GetBucketEncryptionHandler))).Queries("encryption", "").
|
|
||||||
Name("GetBucketEncryption")
|
|
||||||
|
|
||||||
// Dummy Bucket Calls
|
// Bucket operations
|
||||||
// GetBucketACL -- this is a dummy call.
|
// GetBucketLocation
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
m.Handle(metrics.APIStats("getbucketacl", h.GetBucketACLHandler))).Queries("acl", "").
|
m.Handle(metrics.APIStats("getbucketlocation", h.GetBucketLocationHandler))).Queries("location", "").
|
||||||
Name("GetBucketACL")
|
Name("GetBucketLocation")
|
||||||
// PutBucketACL -- this is a dummy call.
|
// GetBucketPolicy
|
||||||
bucket.Methods(http.MethodPut).HandlerFunc(
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
m.Handle(metrics.APIStats("putbucketacl", h.PutBucketACLHandler))).Queries("acl", "").
|
m.Handle(metrics.APIStats("getbucketpolicy", h.GetBucketPolicyHandler))).Queries("policy", "").
|
||||||
Name("PutBucketACL")
|
Name("GetBucketPolicy")
|
||||||
// GetBucketCors - this is a dummy call.
|
// GetBucketLifecycle
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
m.Handle(metrics.APIStats("getbucketcors", h.GetBucketCorsHandler))).Queries("cors", "").
|
m.Handle(metrics.APIStats("getbucketlifecycle", h.GetBucketLifecycleHandler))).Queries("lifecycle", "").
|
||||||
Name("GetBucketCors")
|
Name("GetBucketLifecycle")
|
||||||
// GetBucketWebsiteHandler - this is a dummy call.
|
// GetBucketEncryption
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
m.Handle(metrics.APIStats("getbucketwebsite", h.GetBucketWebsiteHandler))).Queries("website", "").
|
m.Handle(metrics.APIStats("getbucketencryption", h.GetBucketEncryptionHandler))).Queries("encryption", "").
|
||||||
Name("GetBucketWebsite")
|
Name("GetBucketEncryption")
|
||||||
// GetBucketAccelerateHandler - this is a dummy call.
|
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("getbucketaccelerate", h.GetBucketAccelerateHandler))).Queries("accelerate", "").
|
|
||||||
Name("GetBucketAccelerate")
|
|
||||||
// GetBucketRequestPaymentHandler - this is a dummy call.
|
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("getbucketrequestpayment", h.GetBucketRequestPaymentHandler))).Queries("requestPayment", "").
|
|
||||||
Name("GetBucketRequestPayment")
|
|
||||||
// GetBucketLoggingHandler - this is a dummy call.
|
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("getbucketlogging", h.GetBucketLoggingHandler))).Queries("logging", "").
|
|
||||||
Name("GetBucketLogging")
|
|
||||||
// GetBucketLifecycleHandler - this is a dummy call.
|
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("getbucketlifecycle", h.GetBucketLifecycleHandler))).Queries("lifecycle", "").
|
|
||||||
Name("GetBucketLifecycle")
|
|
||||||
// GetBucketReplicationHandler - this is a dummy call.
|
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("getbucketreplication", h.GetBucketReplicationHandler))).Queries("replication", "").
|
|
||||||
Name("GetBucketReplication")
|
|
||||||
// GetBucketTaggingHandler
|
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("getbuckettagging", h.GetBucketTaggingHandler))).Queries("tagging", "").
|
|
||||||
Name("GetBucketTagging")
|
|
||||||
// DeleteBucketWebsiteHandler
|
|
||||||
bucket.Methods(http.MethodDelete).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("deletebucketwebsite", h.DeleteBucketWebsiteHandler))).Queries("website", "").
|
|
||||||
Name("DeleteBucketWebsite")
|
|
||||||
// DeleteBucketTaggingHandler
|
|
||||||
bucket.Methods(http.MethodDelete).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("deletebuckettagging", h.DeleteBucketTaggingHandler))).Queries("tagging", "").
|
|
||||||
Name("DeleteBucketTagging")
|
|
||||||
|
|
||||||
// GetBucketObjectLockConfig
|
// Dummy Bucket Calls
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
// GetBucketACL -- this is a dummy call.
|
||||||
m.Handle(metrics.APIStats("getbucketobjectlockconfiguration", h.GetBucketObjectLockConfigHandler))).Queries("object-lock", "").
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
Name("GetBucketObjectLockConfig")
|
m.Handle(metrics.APIStats("getbucketacl", h.GetBucketACLHandler))).Queries("acl", "").
|
||||||
// GetBucketVersioning
|
Name("GetBucketACL")
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
// PutBucketACL -- this is a dummy call.
|
||||||
m.Handle(metrics.APIStats("getbucketversioning", h.GetBucketVersioningHandler))).Queries("versioning", "").
|
bucket.Methods(http.MethodPut).HandlerFunc(
|
||||||
Name("GetBucketVersioning")
|
m.Handle(metrics.APIStats("putbucketacl", h.PutBucketACLHandler))).Queries("acl", "").
|
||||||
// GetBucketNotification
|
Name("PutBucketACL")
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
// GetBucketCors - this is a dummy call.
|
||||||
m.Handle(metrics.APIStats("getbucketnotification", h.GetBucketNotificationHandler))).Queries("notification", "").
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
Name("GetBucketNotification")
|
m.Handle(metrics.APIStats("getbucketcors", h.GetBucketCorsHandler))).Queries("cors", "").
|
||||||
// ListenBucketNotification
|
Name("GetBucketCors")
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(metrics.APIStats("listenbucketnotification", h.ListenBucketNotificationHandler)).Queries("events", "{events:.*}").
|
// GetBucketWebsiteHandler - this is a dummy call.
|
||||||
Name("ListenBucketNotification")
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
// ListMultipartUploads
|
m.Handle(metrics.APIStats("getbucketwebsite", h.GetBucketWebsiteHandler))).Queries("website", "").
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
Name("GetBucketWebsite")
|
||||||
m.Handle(metrics.APIStats("listmultipartuploads", h.ListMultipartUploadsHandler))).Queries("uploads", "").
|
// GetBucketAccelerateHandler - this is a dummy call.
|
||||||
Name("ListMultipartUploads")
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
// ListObjectsV2M
|
m.Handle(metrics.APIStats("getbucketaccelerate", h.GetBucketAccelerateHandler))).Queries("accelerate", "").
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
Name("GetBucketAccelerate")
|
||||||
m.Handle(metrics.APIStats("listobjectsv2M", h.ListObjectsV2MHandler))).Queries("list-type", "2", "metadata", "true").
|
// GetBucketRequestPaymentHandler - this is a dummy call.
|
||||||
Name("ListObjectsV2M")
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
// ListObjectsV2
|
m.Handle(metrics.APIStats("getbucketrequestpayment", h.GetBucketRequestPaymentHandler))).Queries("requestPayment", "").
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
Name("GetBucketRequestPayment")
|
||||||
m.Handle(metrics.APIStats("listobjectsv2", h.ListObjectsV2Handler))).Queries("list-type", "2").
|
// GetBucketLoggingHandler - this is a dummy call.
|
||||||
Name("ListObjectsV2")
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
// ListBucketVersions
|
m.Handle(metrics.APIStats("getbucketlogging", h.GetBucketLoggingHandler))).Queries("logging", "").
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
Name("GetBucketLogging")
|
||||||
m.Handle(metrics.APIStats("listbucketversions", h.ListBucketObjectVersionsHandler))).Queries("versions", "").
|
// GetBucketLifecycleHandler - this is a dummy call.
|
||||||
Name("ListBucketVersions")
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
// ListObjectsV1 (Legacy)
|
m.Handle(metrics.APIStats("getbucketlifecycle", h.GetBucketLifecycleHandler))).Queries("lifecycle", "").
|
||||||
bucket.Methods(http.MethodGet).HandlerFunc(
|
Name("GetBucketLifecycle")
|
||||||
m.Handle(metrics.APIStats("listobjectsv1", h.ListObjectsV1Handler))).
|
// GetBucketReplicationHandler - this is a dummy call.
|
||||||
Name("ListObjectsV1")
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
// PutBucketLifecycle
|
m.Handle(metrics.APIStats("getbucketreplication", h.GetBucketReplicationHandler))).Queries("replication", "").
|
||||||
bucket.Methods(http.MethodPut).HandlerFunc(
|
Name("GetBucketReplication")
|
||||||
m.Handle(metrics.APIStats("putbucketlifecycle", h.PutBucketLifecycleHandler))).Queries("lifecycle", "").
|
// GetBucketTaggingHandler
|
||||||
Name("PutBucketLifecycle")
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
// PutBucketEncryption
|
m.Handle(metrics.APIStats("getbuckettagging", h.GetBucketTaggingHandler))).Queries("tagging", "").
|
||||||
bucket.Methods(http.MethodPut).HandlerFunc(
|
Name("GetBucketTagging")
|
||||||
m.Handle(metrics.APIStats("putbucketencryption", h.PutBucketEncryptionHandler))).Queries("encryption", "").
|
// DeleteBucketWebsiteHandler
|
||||||
Name("PutBucketEncryption")
|
bucket.Methods(http.MethodDelete).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("deletebucketwebsite", h.DeleteBucketWebsiteHandler))).Queries("website", "").
|
||||||
|
Name("DeleteBucketWebsite")
|
||||||
|
// DeleteBucketTaggingHandler
|
||||||
|
bucket.Methods(http.MethodDelete).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("deletebuckettagging", h.DeleteBucketTaggingHandler))).Queries("tagging", "").
|
||||||
|
Name("DeleteBucketTagging")
|
||||||
|
|
||||||
// PutBucketPolicy
|
// GetBucketObjectLockConfig
|
||||||
bucket.Methods(http.MethodPut).HandlerFunc(
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
m.Handle(metrics.APIStats("putbucketpolicy", h.PutBucketPolicyHandler))).Queries("policy", "").
|
m.Handle(metrics.APIStats("getbucketobjectlockconfiguration", h.GetBucketObjectLockConfigHandler))).Queries("object-lock", "").
|
||||||
Name("PutBucketPolicy")
|
Name("GetBucketObjectLockConfig")
|
||||||
|
// GetBucketVersioning
|
||||||
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("getbucketversioning", h.GetBucketVersioningHandler))).Queries("versioning", "").
|
||||||
|
Name("GetBucketVersioning")
|
||||||
|
// GetBucketNotification
|
||||||
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("getbucketnotification", h.GetBucketNotificationHandler))).Queries("notification", "").
|
||||||
|
Name("GetBucketNotification")
|
||||||
|
// ListenBucketNotification
|
||||||
|
bucket.Methods(http.MethodGet).HandlerFunc(metrics.APIStats("listenbucketnotification", h.ListenBucketNotificationHandler)).Queries("events", "{events:.*}").
|
||||||
|
Name("ListenBucketNotification")
|
||||||
|
// ListMultipartUploads
|
||||||
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("listmultipartuploads", h.ListMultipartUploadsHandler))).Queries("uploads", "").
|
||||||
|
Name("ListMultipartUploads")
|
||||||
|
// ListObjectsV2M
|
||||||
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("listobjectsv2M", h.ListObjectsV2MHandler))).Queries("list-type", "2", "metadata", "true").
|
||||||
|
Name("ListObjectsV2M")
|
||||||
|
// ListObjectsV2
|
||||||
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("listobjectsv2", h.ListObjectsV2Handler))).Queries("list-type", "2").
|
||||||
|
Name("ListObjectsV2")
|
||||||
|
// ListBucketVersions
|
||||||
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("listbucketversions", h.ListBucketObjectVersionsHandler))).Queries("versions", "").
|
||||||
|
Name("ListBucketVersions")
|
||||||
|
// ListObjectsV1 (Legacy)
|
||||||
|
bucket.Methods(http.MethodGet).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("listobjectsv1", h.ListObjectsV1Handler))).
|
||||||
|
Name("ListObjectsV1")
|
||||||
|
// PutBucketLifecycle
|
||||||
|
bucket.Methods(http.MethodPut).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("putbucketlifecycle", h.PutBucketLifecycleHandler))).Queries("lifecycle", "").
|
||||||
|
Name("PutBucketLifecycle")
|
||||||
|
// PutBucketEncryption
|
||||||
|
bucket.Methods(http.MethodPut).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("putbucketencryption", h.PutBucketEncryptionHandler))).Queries("encryption", "").
|
||||||
|
Name("PutBucketEncryption")
|
||||||
|
|
||||||
// PutBucketObjectLockConfig
|
// PutBucketPolicy
|
||||||
bucket.Methods(http.MethodPut).HandlerFunc(
|
bucket.Methods(http.MethodPut).HandlerFunc(
|
||||||
m.Handle(metrics.APIStats("putbucketobjectlockconfig", h.PutBucketObjectLockConfigHandler))).Queries("object-lock", "").
|
m.Handle(metrics.APIStats("putbucketpolicy", h.PutBucketPolicyHandler))).Queries("policy", "").
|
||||||
Name("PutBucketObjectLockConfig")
|
Name("PutBucketPolicy")
|
||||||
// PutBucketTaggingHandler
|
|
||||||
bucket.Methods(http.MethodPut).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("putbuckettagging", h.PutBucketTaggingHandler))).Queries("tagging", "").
|
|
||||||
Name("PutBucketTagging")
|
|
||||||
// PutBucketVersioning
|
|
||||||
bucket.Methods(http.MethodPut).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("putbucketversioning", h.PutBucketVersioningHandler))).Queries("versioning", "").
|
|
||||||
Name("PutBucketVersioning")
|
|
||||||
// PutBucketNotification
|
|
||||||
bucket.Methods(http.MethodPut).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("putbucketnotification", h.PutBucketNotificationHandler))).Queries("notification", "").
|
|
||||||
Name("PutBucketNotification")
|
|
||||||
// PutBucket
|
|
||||||
bucket.Methods(http.MethodPut).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("putbucket", h.PutBucketHandler))).
|
|
||||||
Name("PutBucket")
|
|
||||||
// HeadBucket
|
|
||||||
bucket.Methods(http.MethodHead).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("headbucket", h.HeadBucketHandler))).
|
|
||||||
Name("HeadBucket")
|
|
||||||
// PostPolicy
|
|
||||||
bucket.Methods(http.MethodPost).HeadersRegexp(hdrContentType, "multipart/form-data*").HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("postpolicybucket", h.PostPolicyBucketHandler))).
|
|
||||||
Name("PostPolicyBucket")
|
|
||||||
// DeleteMultipleObjects
|
|
||||||
bucket.Methods(http.MethodPost).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("deletemultipleobjects", h.DeleteMultipleObjectsHandler))).Queries("delete", "").
|
|
||||||
Name("DeleteMultipleObjects")
|
|
||||||
// DeleteBucketPolicy
|
|
||||||
bucket.Methods(http.MethodDelete).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("deletebucketpolicy", h.DeleteBucketPolicyHandler))).Queries("policy", "").
|
|
||||||
Name("DeleteBucketPolicy")
|
|
||||||
// DeleteBucketLifecycle
|
|
||||||
bucket.Methods(http.MethodDelete).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("deletebucketlifecycle", h.DeleteBucketLifecycleHandler))).Queries("lifecycle", "").
|
|
||||||
Name("DeleteBucketLifecycle")
|
|
||||||
// DeleteBucketEncryption
|
|
||||||
bucket.Methods(http.MethodDelete).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("deletebucketencryption", h.DeleteBucketEncryptionHandler))).Queries("encryption", "").
|
|
||||||
Name("DeleteBucketEncryption")
|
|
||||||
// DeleteBucket
|
|
||||||
bucket.Methods(http.MethodDelete).HandlerFunc(
|
|
||||||
m.Handle(metrics.APIStats("deletebucket", h.DeleteBucketHandler))).
|
|
||||||
Name("DeleteBucket")
|
|
||||||
|
|
||||||
|
// PutBucketObjectLockConfig
|
||||||
|
bucket.Methods(http.MethodPut).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("putbucketobjectlockconfig", h.PutBucketObjectLockConfigHandler))).Queries("object-lock", "").
|
||||||
|
Name("PutBucketObjectLockConfig")
|
||||||
|
// PutBucketTaggingHandler
|
||||||
|
bucket.Methods(http.MethodPut).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("putbuckettagging", h.PutBucketTaggingHandler))).Queries("tagging", "").
|
||||||
|
Name("PutBucketTagging")
|
||||||
|
// PutBucketVersioning
|
||||||
|
bucket.Methods(http.MethodPut).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("putbucketversioning", h.PutBucketVersioningHandler))).Queries("versioning", "").
|
||||||
|
Name("PutBucketVersioning")
|
||||||
|
// PutBucketNotification
|
||||||
|
bucket.Methods(http.MethodPut).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("putbucketnotification", h.PutBucketNotificationHandler))).Queries("notification", "").
|
||||||
|
Name("PutBucketNotification")
|
||||||
|
// PutBucket
|
||||||
|
bucket.Methods(http.MethodPut).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("putbucket", h.PutBucketHandler))).
|
||||||
|
Name("PutBucket")
|
||||||
|
// HeadBucket
|
||||||
|
bucket.Methods(http.MethodHead).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("headbucket", h.HeadBucketHandler))).
|
||||||
|
Name("HeadBucket")
|
||||||
|
// PostPolicy
|
||||||
|
bucket.Methods(http.MethodPost).HeadersRegexp(hdrContentType, "multipart/form-data*").HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("postpolicybucket", h.PostPolicyBucketHandler))).
|
||||||
|
Name("PostPolicyBucket")
|
||||||
|
// DeleteMultipleObjects
|
||||||
|
bucket.Methods(http.MethodPost).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("deletemultipleobjects", h.DeleteMultipleObjectsHandler))).Queries("delete", "").
|
||||||
|
Name("DeleteMultipleObjects")
|
||||||
|
// DeleteBucketPolicy
|
||||||
|
bucket.Methods(http.MethodDelete).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("deletebucketpolicy", h.DeleteBucketPolicyHandler))).Queries("policy", "").
|
||||||
|
Name("DeleteBucketPolicy")
|
||||||
|
// DeleteBucketLifecycle
|
||||||
|
bucket.Methods(http.MethodDelete).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("deletebucketlifecycle", h.DeleteBucketLifecycleHandler))).Queries("lifecycle", "").
|
||||||
|
Name("DeleteBucketLifecycle")
|
||||||
|
// DeleteBucketEncryption
|
||||||
|
bucket.Methods(http.MethodDelete).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("deletebucketencryption", h.DeleteBucketEncryptionHandler))).Queries("encryption", "").
|
||||||
|
Name("DeleteBucketEncryption")
|
||||||
|
// DeleteBucket
|
||||||
|
bucket.Methods(http.MethodDelete).HandlerFunc(
|
||||||
|
m.Handle(metrics.APIStats("deletebucket", h.DeleteBucketHandler))).
|
||||||
|
Name("DeleteBucket")
|
||||||
|
}
|
||||||
// Root operation
|
// Root operation
|
||||||
|
|
||||||
// ListBuckets
|
// ListBuckets
|
||||||
|
|
Loading…
Reference in a new issue