diff options
| author | Taehyung Lim <ehooizlo@gmail.com> | 2025-05-02 05:08:03 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-01 13:08:03 -0700 |
| commit | 0fbdedecc741ca71455b7ab8058cddd54939c82f (patch) | |
| tree | 0a9c8cb25dc577aeaf68ab7fd3ffcd53b3a7e276 /weed/s3api/s3api_put_object_helper.go | |
| parent | affacb1b676e257c4a808b35dd93d6ae06962ca1 (diff) | |
| download | seaweedfs-0fbdedecc741ca71455b7ab8058cddd54939c82f.tar.xz seaweedfs-0fbdedecc741ca71455b7ab8058cddd54939c82f.zip | |
[s3] refactor duplicate put-object code paths (#6727)
Diffstat (limited to 'weed/s3api/s3api_put_object_helper.go')
| -rw-r--r-- | weed/s3api/s3api_put_object_helper.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/weed/s3api/s3api_put_object_helper.go b/weed/s3api/s3api_put_object_helper.go new file mode 100644 index 000000000..f1348aa0e --- /dev/null +++ b/weed/s3api/s3api_put_object_helper.go @@ -0,0 +1,30 @@ +package s3api + +import ( + "io" + "net/http" + + "github.com/seaweedfs/seaweedfs/weed/s3api/s3err" +) + +func getRequestDataReader(s3a *S3ApiServer, r *http.Request) (io.ReadCloser, s3err.ErrorCode) { + var s3ErrCode s3err.ErrorCode + dataReader := r.Body + rAuthType := getRequestAuthType(r) + if s3a.iam.isEnabled() { + switch rAuthType { + case authTypeStreamingSigned, authTypeStreamingUnsigned: + dataReader, s3ErrCode = s3a.iam.newChunkedReader(r) + case authTypeSignedV2, authTypePresignedV2: + _, s3ErrCode = s3a.iam.isReqAuthenticatedV2(r) + case authTypePresigned, authTypeSigned: + _, s3ErrCode = s3a.iam.reqSignatureV4Verify(r) + } + } else { + if authTypeStreamingSigned == rAuthType { + s3ErrCode = s3err.ErrAuthNotSetup + } + } + + return dataReader, s3ErrCode +} |
