Merge pull request #190 from vially/fix-gcs-info-not-found
Handle GCS object not found error
This commit is contained in:
commit
3a4f216d5c
|
@ -13,8 +13,9 @@ import (
|
||||||
"google.golang.org/api/iterator"
|
"google.golang.org/api/iterator"
|
||||||
"google.golang.org/api/option"
|
"google.golang.org/api/option"
|
||||||
|
|
||||||
"github.com/vimeo/go-util/crc32combine"
|
|
||||||
"hash/crc32"
|
"hash/crc32"
|
||||||
|
|
||||||
|
"github.com/vimeo/go-util/crc32combine"
|
||||||
)
|
)
|
||||||
|
|
||||||
type GCSObjectParams struct {
|
type GCSObjectParams struct {
|
||||||
|
@ -260,7 +261,7 @@ func (service *GCSService) GetObjectAttrs(params GCSObjectParams) (*storage.Obje
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadObject reaads a GCSObjectParams, returning a GCSReader object if successful, and an error otherwise
|
// ReadObject reads a GCSObjectParams, returning a GCSReader object if successful, and an error otherwise
|
||||||
func (service *GCSService) ReadObject(params GCSObjectParams) (GCSReader, error) {
|
func (service *GCSService) ReadObject(params GCSObjectParams) (GCSReader, error) {
|
||||||
r, err := service.Client.Bucket(params.Bucket).Object(params.ID).NewReader(service.Ctx)
|
r, err := service.Client.Bucket(params.Bucket).Object(params.ID).NewReader(service.Ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -18,6 +18,7 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"cloud.google.com/go/storage"
|
||||||
"github.com/tus/tusd"
|
"github.com/tus/tusd"
|
||||||
"github.com/tus/tusd/uid"
|
"github.com/tus/tusd/uid"
|
||||||
)
|
)
|
||||||
|
@ -113,6 +114,9 @@ func (store GCSStore) GetInfo(id string) (tusd.FileInfo, error) {
|
||||||
|
|
||||||
r, err := store.Service.ReadObject(params)
|
r, err := store.Service.ReadObject(params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if err == storage.ErrObjectNotExist {
|
||||||
|
return info, tusd.ErrNotFound
|
||||||
|
}
|
||||||
return info, err
|
return info, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"cloud.google.com/go/storage"
|
||||||
"github.com/golang/mock/gomock"
|
"github.com/golang/mock/gomock"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
|
@ -143,6 +144,27 @@ func TestGetInfo(t *testing.T) {
|
||||||
assert.Equal(mockTusdInfo, info)
|
assert.Equal(mockTusdInfo, info)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetInfoNotFound(t *testing.T) {
|
||||||
|
mockCtrl := gomock.NewController(t)
|
||||||
|
defer mockCtrl.Finish()
|
||||||
|
assert := assert.New(t)
|
||||||
|
|
||||||
|
service := NewMockGCSAPI(mockCtrl)
|
||||||
|
store := gcsstore.New(mockBucket, service)
|
||||||
|
|
||||||
|
params := gcsstore.GCSObjectParams{
|
||||||
|
Bucket: store.Bucket,
|
||||||
|
ID: fmt.Sprintf("%s.info", mockID),
|
||||||
|
}
|
||||||
|
|
||||||
|
gomock.InOrder(
|
||||||
|
service.EXPECT().ReadObject(params).Return(nil, storage.ErrObjectNotExist),
|
||||||
|
)
|
||||||
|
|
||||||
|
_, err := store.GetInfo(mockID)
|
||||||
|
assert.Equal(tusd.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
|
||||||
type MockGetReader struct{}
|
type MockGetReader struct{}
|
||||||
|
|
||||||
func (r MockGetReader) Close() error {
|
func (r MockGetReader) Close() error {
|
||||||
|
|
Loading…
Reference in New Issue