From df7484e8771f4a7672f53d4975e8f9b2b1299d74 Mon Sep 17 00:00:00 2001 From: Prnyself <281239768@qq.com> Date: Fri, 14 May 2021 14:42:58 +0800 Subject: [PATCH] Implement AOS-61 Add object mode check for operations Signed-off-by: Prnyself <281239768@qq.com> --- generated.go | 64 +++++++++++++++++++++++++++++----------------------- go.mod | 4 ++-- go.sum | 19 ++++++++-------- storage.go | 11 --------- 4 files changed, 48 insertions(+), 50 deletions(-) diff --git a/generated.go b/generated.go index 38b8777..aa8b89e 100644 --- a/generated.go +++ b/generated.go @@ -1,4 +1,4 @@ -// Code generated by go generate via internal/cmd/service; DO NOT EDIT. +// Code generated by go generate via cmd/definitions; DO NOT EDIT. package dropbox import ( @@ -515,12 +515,16 @@ func (s *Storage) CommitAppend(o *Object, pairs ...Pair) (err error) { // CommitAppendWithContext will commit and finish an append process. func (s *Storage) CommitAppendWithContext(ctx context.Context, o *Object, pairs ...Pair) (err error) { - pairs = append(pairs, s.defaultPairs.CommitAppend...) - var opt pairStorageCommitAppend - defer func() { err = s.formatError("commit_append", err) }() + if !o.Mode.IsAppend() { + err = services.ObjectModeInvalidError{Expected: ModeAppend, Actual: o.Mode} + return + } + + pairs = append(pairs, s.defaultPairs.CommitAppend...) + var opt pairStorageCommitAppend opt, err = s.parsePairStorageCommitAppend(pairs) if err != nil { @@ -553,13 +557,13 @@ func (s *Storage) CreateAppend(path string, pairs ...Pair) (o *Object, err error // CreateAppendWithContext will create an append object. func (s *Storage) CreateAppendWithContext(ctx context.Context, path string, pairs ...Pair) (o *Object, err error) { - pairs = append(pairs, s.defaultPairs.CreateAppend...) - var opt pairStorageCreateAppend - defer func() { err = s.formatError("create_append", err, path) }() + pairs = append(pairs, s.defaultPairs.CreateAppend...) + var opt pairStorageCreateAppend + opt, err = s.parsePairStorageCreateAppend(pairs) if err != nil { return @@ -578,13 +582,13 @@ func (s *Storage) Delete(path string, pairs ...Pair) (err error) { // DeleteWithContext will delete an Object from service. func (s *Storage) DeleteWithContext(ctx context.Context, path string, pairs ...Pair) (err error) { - pairs = append(pairs, s.defaultPairs.Delete...) - var opt pairStorageDelete - defer func() { err = s.formatError("delete", err, path) }() + pairs = append(pairs, s.defaultPairs.Delete...) + var opt pairStorageDelete + opt, err = s.parsePairStorageDelete(pairs) if err != nil { return @@ -603,13 +607,13 @@ func (s *Storage) List(path string, pairs ...Pair) (oi *ObjectIterator, err erro // ListWithContext will return list a specific path. func (s *Storage) ListWithContext(ctx context.Context, path string, pairs ...Pair) (oi *ObjectIterator, err error) { - pairs = append(pairs, s.defaultPairs.List...) - var opt pairStorageList - defer func() { err = s.formatError("list", err, path) }() + pairs = append(pairs, s.defaultPairs.List...) + var opt pairStorageList + opt, err = s.parsePairStorageList(pairs) if err != nil { return @@ -628,13 +632,13 @@ func (s *Storage) Metadata(pairs ...Pair) (meta *StorageMeta, err error) { // MetadataWithContext will return current storager metadata. func (s *Storage) MetadataWithContext(ctx context.Context, pairs ...Pair) (meta *StorageMeta, err error) { - pairs = append(pairs, s.defaultPairs.Metadata...) - var opt pairStorageMetadata - defer func() { err = s.formatError("metadata", err) }() + pairs = append(pairs, s.defaultPairs.Metadata...) + var opt pairStorageMetadata + opt, err = s.parsePairStorageMetadata(pairs) if err != nil { return @@ -653,13 +657,13 @@ func (s *Storage) Read(path string, w io.Writer, pairs ...Pair) (n int64, err er // ReadWithContext will read the file's data. func (s *Storage) ReadWithContext(ctx context.Context, path string, w io.Writer, pairs ...Pair) (n int64, err error) { - pairs = append(pairs, s.defaultPairs.Read...) - var opt pairStorageRead - defer func() { err = s.formatError("read", err, path) }() + pairs = append(pairs, s.defaultPairs.Read...) + var opt pairStorageRead + opt, err = s.parsePairStorageRead(pairs) if err != nil { return @@ -678,13 +682,13 @@ func (s *Storage) Stat(path string, pairs ...Pair) (o *Object, err error) { // StatWithContext will stat a path to get info of an object. func (s *Storage) StatWithContext(ctx context.Context, path string, pairs ...Pair) (o *Object, err error) { - pairs = append(pairs, s.defaultPairs.Stat...) - var opt pairStorageStat - defer func() { err = s.formatError("stat", err, path) }() + pairs = append(pairs, s.defaultPairs.Stat...) + var opt pairStorageStat + opt, err = s.parsePairStorageStat(pairs) if err != nil { return @@ -703,13 +707,13 @@ func (s *Storage) Write(path string, r io.Reader, size int64, pairs ...Pair) (n // WriteWithContext will write data into a file. func (s *Storage) WriteWithContext(ctx context.Context, path string, r io.Reader, size int64, pairs ...Pair) (n int64, err error) { - pairs = append(pairs, s.defaultPairs.Write...) - var opt pairStorageWrite - defer func() { err = s.formatError("write", err, path) }() + pairs = append(pairs, s.defaultPairs.Write...) + var opt pairStorageWrite + opt, err = s.parsePairStorageWrite(pairs) if err != nil { return @@ -728,12 +732,16 @@ func (s *Storage) WriteAppend(o *Object, r io.Reader, size int64, pairs ...Pair) // WriteAppendWithContext will append content to an append object. func (s *Storage) WriteAppendWithContext(ctx context.Context, o *Object, r io.Reader, size int64, pairs ...Pair) (n int64, err error) { - pairs = append(pairs, s.defaultPairs.WriteAppend...) - var opt pairStorageWriteAppend - defer func() { err = s.formatError("write_append", err) }() + if !o.Mode.IsAppend() { + err = services.ObjectModeInvalidError{Expected: ModeAppend, Actual: o.Mode} + return + } + + pairs = append(pairs, s.defaultPairs.WriteAppend...) + var opt pairStorageWriteAppend opt, err = s.parsePairStorageWriteAppend(pairs) if err != nil { diff --git a/go.mod b/go.mod index 757f780..293159e 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,8 @@ module github.com/aos-dev/go-service-dropbox go 1.14 require ( - github.com/aos-dev/go-integration-test/v3 v3.0.1-0.20210506085629-1ace601e00c6 - github.com/aos-dev/go-storage/v3 v3.6.1-0.20210510125045-f79d0505cb2b + github.com/aos-dev/go-integration-test/v3 v3.0.1-0.20210512065058-b6c8caf13bc6 + github.com/aos-dev/go-storage/v3 v3.6.1-0.20210513125055-cb9106d884d5 github.com/dropbox/dropbox-sdk-go-unofficial/v6 v6.0.1 github.com/google/uuid v1.2.0 golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78 // indirect diff --git a/go.sum b/go.sum index 7f821a0..483b68b 100644 --- a/go.sum +++ b/go.sum @@ -35,14 +35,14 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/Xuanwo/templateutils v0.1.0 h1:WpkWOqQtIQ2vAIpJLa727DdN8WtxhUkkbDGa6UhntJY= github.com/Xuanwo/templateutils v0.1.0/go.mod h1:OdE0DJ+CJxDBq6psX5DPV+gOZi8bhuHuVUpPCG++Wb8= -github.com/aos-dev/go-integration-test/v3 v3.0.1-0.20210506085629-1ace601e00c6 h1:/GrJCqznHBjWWj3x2K5KU6hKG6BfR211bRJAFGdH7bc= -github.com/aos-dev/go-integration-test/v3 v3.0.1-0.20210506085629-1ace601e00c6/go.mod h1:D05/hz2AbZFBucYlzvpYBb62v17SgKUNhi3lxuUQLj4= -github.com/aos-dev/go-storage/v3 v3.6.1-0.20210427074731-1b3b4e86c950/go.mod h1:wzxhpUa73aCdTDRG0sHjNnnmXa9rC/ahJnk7hKOV6Pw= -github.com/aos-dev/go-storage/v3 v3.6.1-0.20210510125045-f79d0505cb2b h1:3XpTC+Q+bm2zVoEI67AUf52o28Loq8YcZ0L45F/2H4I= -github.com/aos-dev/go-storage/v3 v3.6.1-0.20210510125045-f79d0505cb2b/go.mod h1:ho7Z5P8fj+Q+9pCBng5s+d0XjH06I4hslaht9aiUjaA= -github.com/aos-dev/specs/go v0.0.0-20210427074008-93183332d504/go.mod h1:gNah3KaPJEfysh7uCCX+sYjQC3g2yx2VgBkFlT945Ws= -github.com/aos-dev/specs/go v0.0.0-20210510065836-ba70d7b05cda h1:D9DV8kz38iPT6mCHSCTlxYN4Zg9DUfHmWKJKVBvZmfY= -github.com/aos-dev/specs/go v0.0.0-20210510065836-ba70d7b05cda/go.mod h1:gNah3KaPJEfysh7uCCX+sYjQC3g2yx2VgBkFlT945Ws= +github.com/aos-dev/go-integration-test/v3 v3.0.1-0.20210512065058-b6c8caf13bc6 h1:73QZDkTGFyWpkWVrjs0GEM1VREyEmM7RtzddWtBYXho= +github.com/aos-dev/go-integration-test/v3 v3.0.1-0.20210512065058-b6c8caf13bc6/go.mod h1:iMlF4lL4WavgZezGscajjSNcUdFnacX8Dek6lhE0oJA= +github.com/aos-dev/go-storage/v3 v3.6.1-0.20210512033924-5adf27cfdf96/go.mod h1:6arAU5t7CXEsxDPs87xqgHmvEj8/GQfHlV61CxxC0Ww= +github.com/aos-dev/go-storage/v3 v3.6.1-0.20210513125055-cb9106d884d5 h1:xiJN6PvJPDDVac4Ha+ekuGUjRh49O1a1xwxrJPCwlto= +github.com/aos-dev/go-storage/v3 v3.6.1-0.20210513125055-cb9106d884d5/go.mod h1:qareAWtwrRlx4Fw6XIhtAbQnM7I3wylhaQ5Gr3Q5Geg= +github.com/aos-dev/specs/go v0.0.0-20210512024100-386a13f23a83/go.mod h1:gNah3KaPJEfysh7uCCX+sYjQC3g2yx2VgBkFlT945Ws= +github.com/aos-dev/specs/go v0.0.0-20210512093613-3e7634b4a7f5 h1:MmXROEim7Z9u1lFLRvZCy/yKBhq3k1Q/nvaVQmVvZUU= +github.com/aos-dev/specs/go v0.0.0-20210512093613-3e7634b4a7f5/go.mod h1:owye99eWsZvtg5kCEKtSp+AsRPsANhnXgCzHacu4icM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= @@ -135,8 +135,9 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/pelletier/go-toml v1.9.0 h1:NOd0BRdOKpPf0SxkL3HxSQOG7rNh+4kl6PHcBPFs7Q0= github.com/pelletier/go-toml v1.9.0/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml v1.9.1 h1:a6qW1EVNZWH9WGI6CsYdD8WAylkoXBS5yv0XHlh17Tc= +github.com/pelletier/go-toml v1.9.1/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= diff --git a/storage.go b/storage.go index ab919c1..6b194fb 100644 --- a/storage.go +++ b/storage.go @@ -8,16 +8,10 @@ import ( "github.com/dropbox/dropbox-sdk-go-unofficial/v6/dropbox/files" "github.com/aos-dev/go-storage/v3/pkg/iowrap" - "github.com/aos-dev/go-storage/v3/services" . "github.com/aos-dev/go-storage/v3/types" ) func (s *Storage) commitAppend(ctx context.Context, o *Object, opt pairStorageCommitAppend) (err error) { - if !o.Mode.IsAppend() { - err = services.ObjectModeInvalidError{Expected: ModeAppend, Actual: o.Mode} - return - } - rp := o.GetID() offset, _ := o.GetAppendOffset() @@ -244,11 +238,6 @@ func (s *Storage) write(ctx context.Context, path string, r io.Reader, size int6 } func (s *Storage) writeAppend(ctx context.Context, o *Object, r io.Reader, size int64, opt pairStorageWriteAppend) (n int64, err error) { - if !o.Mode.IsAppend() { - err = services.ObjectModeInvalidError{Expected: ModeAppend, Actual: o.Mode} - return - } - sessionId := GetObjectMetadata(o).UploadSessionID offset := o.MustGetAppendOffset()