Skip to content
This repository has been archived by the owner on Oct 22, 2021. It is now read-only.

Commit

Permalink
Implement AOS-47 & AOS-51 (#23)
Browse files Browse the repository at this point in the history
  • Loading branch information
xxchan committed May 12, 2021
1 parent 5dafad1 commit 83b586c
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 32 deletions.
27 changes: 16 additions & 11 deletions generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.15

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.20210427074731-1b3b4e86c950
github.com/aos-dev/go-storage/v3 v3.6.1-0.20210510125045-f79d0505cb2b
github.com/google/uuid v1.2.0
github.com/qiniu/go-sdk/v7 v7.9.5
)
6 changes: 4 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@ github.com/Xuanwo/templateutils v0.1.0 h1:WpkWOqQtIQ2vAIpJLa727DdN8WtxhUkkbDGa6U
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 h1:3ZsfgDAUF171rIrFdYjhr8P3WyxzR4IwxWGbGxkCRkA=
github.com/aos-dev/go-storage/v3 v3.6.1-0.20210427074731-1b3b4e86c950/go.mod h1:wzxhpUa73aCdTDRG0sHjNnnmXa9rC/ahJnk7hKOV6Pw=
github.com/aos-dev/specs/go v0.0.0-20210427074008-93183332d504 h1:vHxnQOXlz/X8/Co1ep57yc34Xso+f2+xt4Q2dMJVHA4=
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/dave/dst v0.26.2 h1:lnxLAKI3tx7MgLNVDirFCsDTlTG9nKTk7GcptKcWSwY=
github.com/dave/dst v0.26.2/go.mod h1:UMDJuIRPfyUCC78eFuB+SV/WI8oDeyFDvM/JR6NI3IU=
github.com/dave/gopackages v0.0.0-20170318123100-46e7023ec56e/go.mod h1:i00+b/gKdIDIxuLDFob7ustLAVqhsZRk2qVZrArELGQ=
Expand Down
4 changes: 2 additions & 2 deletions storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ package kodo

import (
"context"
"fmt"
"io"
"net/http"
"time"

qs "github.com/qiniu/go-sdk/v7/storage"

"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"
)

Expand Down Expand Up @@ -54,7 +54,7 @@ func (s *Storage) list(ctx context.Context, path string, opt pairStorageList) (o
case opt.ListMode.IsPrefix():
nextFn = s.nextObjectPageByPrefix
default:
return nil, fmt.Errorf("invalid list mode")
return nil, services.ListModeInvalidError{Actual: opt.ListMode}
}

return NewObjectIterator(ctx, nextFn, input), nil
Expand Down
27 changes: 11 additions & 16 deletions utils.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package kodo

import (
"errors"
"fmt"

"strings"
Expand Down Expand Up @@ -75,7 +74,7 @@ func NewStorager(pairs ...typ.Pair) (typ.Storager, error) {
func newServicer(pairs ...typ.Pair) (srv *Service, err error) {
defer func() {
if err != nil {
err = &services.InitError{Op: "new_servicer", Type: Type, Err: err, Pairs: pairs}
err = services.InitError{Op: "new_servicer", Type: Type, Err: formatError(err), Pairs: pairs}
}
}()

Expand All @@ -91,7 +90,7 @@ func newServicer(pairs ...typ.Pair) (srv *Service, err error) {
return nil, err
}
if cp.Protocol() != credential.ProtocolHmac {
return nil, services.NewPairUnsupportedError(ps.WithCredential(opt.Credential))
return nil, services.PairUnsupportedError{Pair: ps.WithCredential(opt.Credential)}
}
ak, sk := cp.Hmac()

Expand All @@ -107,22 +106,14 @@ func newServicer(pairs ...typ.Pair) (srv *Service, err error) {
}

func newServicerAndStorager(pairs ...typ.Pair) (srv *Service, store *Storage, err error) {
defer func() {
if err != nil {
err = &services.InitError{Op: "new_storager", Type: Type, Err: err, Pairs: pairs}
}
}()

srv, err = newServicer(pairs...)
if err != nil {
return
}

store, err = srv.newStorage(pairs...)
if err != nil {
if e := services.NewPairRequiredError(); errors.As(err, &e) {
return srv, nil, nil
}
err = services.InitError{Op: "new_storager", Type: Type, Err: formatError(err), Pairs: pairs}
return nil, nil, err
}
return srv, store, nil
Expand All @@ -145,9 +136,13 @@ const (

// ref: https://developer.qiniu.com/kodo/api/3928/error-responses
func formatError(err error) error {
if _, ok := err.(services.AosError); ok {
return err
}

e, ok := err.(*qc.ErrorInfo)
if !ok {
return err
return fmt.Errorf("%w, %v", services.ErrUnexpected, err)
}

// error code returned by kodo looks like http status code, but it's not.
Expand All @@ -158,7 +153,7 @@ func formatError(err error) error {
case responseCodePermissionDenied:
return fmt.Errorf("%w: %v", services.ErrPermissionDenied, err)
default:
return err
return fmt.Errorf("%w, %v", services.ErrUnexpected, err)
}
}

Expand Down Expand Up @@ -221,7 +216,7 @@ func (s *Service) formatError(op string, err error, name string) error {
return nil
}

return &services.ServiceError{
return services.ServiceError{
Op: op,
Err: formatError(err),
Servicer: s,
Expand All @@ -246,7 +241,7 @@ func (s *Storage) formatError(op string, err error, path ...string) error {
return nil
}

return &services.StorageError{
return services.StorageError{
Op: op,
Err: formatError(err),
Storager: s,
Expand Down

0 comments on commit 83b586c

Please sign in to comment.