MCPcopy Index your code
hub / github.com/cubefs/cubefs / createMultipleUploadHandler

Method createMultipleUploadHandler

objectnode/api_handler_multipart.go:43–149  ·  view source on GitHub ↗

Create multipart upload API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html

(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

41// Create multipart upload
42// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html
43func (o *ObjectNode) createMultipleUploadHandler(w http.ResponseWriter, r *http.Request) {
44 var (
45 err error
46 errorCode *ErrorCode
47 )
48 defer func() {
49 o.errorResponse(w, r, err, errorCode)
50 }()
51
52 param := ParseRequestParam(r)
53 if param.Bucket() == "" {
54 errorCode = InvalidBucketName
55 return
56 }
57 if param.Object() == "" {
58 errorCode = InvalidKey
59 return
60 }
61 if len(param.Object()) > MaxKeyLength {
62 errorCode = KeyTooLong
63 return
64 }
65 var vol *Volume
66 if vol, err = o.getVol(param.Bucket()); err != nil {
67 log.LogErrorf("createMultipleUploadHandler: load volume fail: requestID(%v) err(%v)",
68 GetRequestID(r), err)
69 return
70 }
71
72 // QPS and Concurrency Limit
73 rateLimit := o.AcquireRateLimiter()
74 if err = rateLimit.AcquireLimitResource(vol.owner, param.apiName); err != nil {
75 return
76 }
77 defer rateLimit.ReleaseLimitResource(vol.owner, param.apiName)
78
79 var userInfo *proto.UserInfo
80 if userInfo, err = o.getUserInfoByAccessKeyV2(param.AccessKey()); err != nil {
81 log.LogErrorf("createMultipleUploadHandler: get user info fail: requestID(%v) accessKey(%v) err(%v)",
82 GetRequestID(r), param.AccessKey(), err)
83 return
84 }
85
86 // metadata
87 contentType := r.Header.Get(ContentType)
88 contentDisposition := r.Header.Get(ContentDisposition)
89 cacheControl := r.Header.Get(CacheControl)
90 if len(cacheControl) > 0 && !ValidateCacheControl(cacheControl) {
91 errorCode = InvalidCacheArgument
92 return
93 }
94 expires := r.Header.Get(Expires)
95 if len(expires) > 0 && !ValidateCacheExpires(expires) {
96 errorCode = InvalidCacheArgument
97 return
98 }
99
100 // Checking user-defined metadata

Callers

nothing calls this directly

Calls 15

errorResponseMethod · 0.95
getVolMethod · 0.95
AcquireRateLimiterMethod · 0.95
GetOwnerMethod · 0.95
InitMultipartMethod · 0.95
LogErrorfFunction · 0.92
ParseRequestParamFunction · 0.85
GetRequestIDFunction · 0.85
ValidateCacheControlFunction · 0.85
ValidateCacheExpiresFunction · 0.85
ParseUserDefinedMetadataFunction · 0.85

Tested by

no test coverage detected