Pārlūkot izejas kodu

Changing Error Handling and increase Logging

tags/v1.2.0
stefanbenten pirms 4 gadiem
vecāks
revīzija
cf00af36f2
1 mainītis faili ar 18 papildinājumiem un 8 dzēšanām
  1. +18
    -8
      server/storage.go

+ 18
- 8
server/storage.go Parādīt failu

@@ -17,6 +17,7 @@ import (
"github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3" "github.com/aws/aws-sdk-go/service/s3"
"github.com/aws/aws-sdk-go/service/s3/s3manager" "github.com/aws/aws-sdk-go/service/s3/s3manager"
"github.com/zeebo/errs"
"golang.org/x/net/context" "golang.org/x/net/context"
"golang.org/x/oauth2" "golang.org/x/oauth2"
"golang.org/x/oauth2/google" "golang.org/x/oauth2/google"
@@ -564,6 +565,8 @@ func saveGDriveToken(path string, token *oauth2.Token, logger *log.Logger) {
json.NewEncoder(f).Encode(token) json.NewEncoder(f).Encode(token)
} }


var uplinkFailure = errs.Class("uplink failure")

type StorjStorage struct { type StorjStorage struct {
Storage Storage
uplink *uplink.Uplink uplink *uplink.Uplink
@@ -580,29 +583,31 @@ func NewStorjStorage(endpoint, apiKey, bucket, encKey string, logger *log.Logger


instance.uplink, err = uplink.NewUplink(ctx, nil) instance.uplink, err = uplink.NewUplink(ctx, nil)
if err != nil { if err != nil {
return nil, fmt.Errorf("could not create new Uplink Instance: %v", err)
return nil, uplinkFailure.New("could not create new Uplink Instance: %v", err)
} }


key, err := uplink.ParseAPIKey(apiKey) key, err := uplink.ParseAPIKey(apiKey)
if err != nil { if err != nil {
return nil, fmt.Errorf("could not parse api key: %v", err)
return nil, uplinkFailure.New("could not parse api key: %v", err)
} }


instance.project, err = instance.uplink.OpenProject(ctx, endpoint, key) instance.project, err = instance.uplink.OpenProject(ctx, endpoint, key)
if err != nil { if err != nil {
return nil, fmt.Errorf("could not open project: %v", err)
return nil, uplinkFailure.New("could not open project: %v", err)
} }


saltenckey, err := instance.project.SaltedKeyFromPassphrase(ctx, encKey) saltenckey, err := instance.project.SaltedKeyFromPassphrase(ctx, encKey)
if err != nil { if err != nil {
return nil, fmt.Errorf("could not generate salted enc key: %v", err)
return nil, uplinkFailure.New("could not generate salted enc key: %v", err)
} }


access := uplink.NewEncryptionAccessWithDefaultKey(*saltenckey) access := uplink.NewEncryptionAccessWithDefaultKey(*saltenckey)

instance.bucket, err = instance.project.OpenBucket(ctx, bucket, access) instance.bucket, err = instance.project.OpenBucket(ctx, bucket, access)
if err != nil { if err != nil {
return nil, fmt.Errorf("could not open bucket %q: %v", bucket, err)
return nil, uplinkFailure.New("could not open bucket %q: %v", bucket, err)
} }

instance.logger = logger instance.logger = logger


return &instance, nil return &instance, nil
@@ -629,11 +634,14 @@ func (s *StorjStorage) Head(token string, filename string) (contentType string,


func (s *StorjStorage) Get(token string, filename string) (reader io.ReadCloser, contentType string, contentLength uint64, err error) { func (s *StorjStorage) Get(token string, filename string) (reader io.ReadCloser, contentType string, contentLength uint64, err error) {
key := storj.JoinPaths(token, filename) key := storj.JoinPaths(token, filename)

s.logger.Printf("Getting file %s from Storj Bucket", filename)

ctx := context.TODO() ctx := context.TODO()


obj, err := s.bucket.OpenObject(ctx, key) obj, err := s.bucket.OpenObject(ctx, key)
if err != nil { if err != nil {
return nil, "", 0, fmt.Errorf("unable to open object %v", err)
return nil, "", 0, uplinkFailure.New("unable to open object %v", err)
} }
contentType = obj.Meta.ContentType contentType = obj.Meta.ContentType
contentLength = uint64(obj.Meta.Size) contentLength = uint64(obj.Meta.Size)
@@ -644,6 +652,8 @@ func (s *StorjStorage) Get(token string, filename string) (reader io.ReadCloser,
func (s *StorjStorage) Delete(token string, filename string) (err error) { func (s *StorjStorage) Delete(token string, filename string) (err error) {
key := storj.JoinPaths(token, filename) key := storj.JoinPaths(token, filename)


s.logger.Printf("Deleting file %s from Storj Bucket", filename)

ctx := context.TODO() ctx := context.TODO()


err = s.bucket.DeleteObject(ctx, key) err = s.bucket.DeleteObject(ctx, key)
@@ -654,13 +664,13 @@ func (s *StorjStorage) Delete(token string, filename string) (err error) {
func (s *StorjStorage) Put(token string, filename string, reader io.Reader, contentType string, contentLength uint64) (err error) { func (s *StorjStorage) Put(token string, filename string, reader io.Reader, contentType string, contentLength uint64) (err error) {
key := storj.JoinPaths(token, filename) key := storj.JoinPaths(token, filename)


s.logger.Printf("Uploading file %s to S3 Bucket", filename)
s.logger.Printf("Uploading file %s to Storj Bucket", filename)


ctx := context.TODO() ctx := context.TODO()


err = s.bucket.UploadObject(ctx, key, reader, &uplink.UploadOptions{ContentType: contentType}) err = s.bucket.UploadObject(ctx, key, reader, &uplink.UploadOptions{ContentType: contentType})
if err != nil { if err != nil {
return fmt.Errorf("could not upload: %v", err)
return uplinkFailure.New("could not upload: %v", err)
} }
return nil return nil
} }

Notiek ielāde…
Atcelt
Saglabāt