fix testcase TestReadStreamWithOffset incompatible with oss

Signed-off-by: tgic <farmer1992@gmail.com>
pull/514/head
tgic 2015-07-05 01:14:24 +08:00
parent 2a8535626f
commit 8e5c901a26
1 changed files with 10 additions and 4 deletions

View File

@ -276,12 +276,18 @@ func (d *driver) ReadStream(ctx context.Context, path string, offset int64) (io.
resp, err := d.Bucket.GetResponseWithHeaders(d.ossPath(path), headers)
if err != nil {
if ossErr, ok := err.(*oss.Error); ok && ossErr.Code == "InvalidRange" {
return ioutil.NopCloser(bytes.NewReader(nil)), nil
}
return nil, parseError(path, err)
}
// Due to Aliyun OSS API, status 200 and whole object will be return instead of an
// InvalidRange error when range is invalid.
//
// OSS sever will always return http.StatusPartialContent if range is acceptable.
if resp.StatusCode != http.StatusPartialContent {
resp.Body.Close()
return ioutil.NopCloser(bytes.NewReader(nil)), nil
}
return resp.Body, nil
}