[MM-18033] Upgrade minio-go dependency (#12046)
* Upgrade minio-go dependency * Update go.mod and go.sum
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
f18895667d
Коммит
d2c3933c8e
28
vendor/github.com/minio/minio-go/.travis.yml
сгенерированный
поставляемый
28
vendor/github.com/minio/minio-go/.travis.yml
сгенерированный
поставляемый
@@ -1,28 +0,0 @@
|
||||
sudo: false
|
||||
language: go
|
||||
|
||||
os:
|
||||
- linux
|
||||
|
||||
env:
|
||||
- ARCH=x86_64
|
||||
- ARCH=i686
|
||||
|
||||
go:
|
||||
- 1.11.x
|
||||
- tip
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
allow_failures:
|
||||
- go: tip
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- devscripts
|
||||
|
||||
script:
|
||||
- diff -au <(gofmt -d .) <(printf "")
|
||||
- diff -au <(licensecheck --check '.go$' --recursive --lines 0 * | grep -v -w 'Apache (v2.0)') <(printf "")
|
||||
- make
|
||||
15
vendor/github.com/minio/minio-go/Makefile
сгенерированный
поставляемый
15
vendor/github.com/minio/minio-go/Makefile
сгенерированный
поставляемый
@@ -1,15 +0,0 @@
|
||||
all: checks
|
||||
|
||||
checks:
|
||||
@go get -t ./...
|
||||
@go vet ./...
|
||||
@SERVER_ENDPOINT=play.min.io:9000 ACCESS_KEY=Q3AM3UQ867SPQQA43P2F SECRET_KEY=zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG ENABLE_HTTPS=1 MINT_MODE=full go test -race -v ./...
|
||||
@go get github.com/dustin/go-humanize/...
|
||||
@go get github.com/sirupsen/logrus/...
|
||||
@SERVER_ENDPOINT=play.min.io:9000 ACCESS_KEY=Q3AM3UQ867SPQQA43P2F SECRET_KEY=zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG ENABLE_HTTPS=1 MINT_MODE=full go run functional_tests.go
|
||||
@mkdir -p /tmp/examples && for i in $(echo examples/s3/*); do go build -o /tmp/examples/$(basename ${i:0:-3}) ${i}; done
|
||||
@go get -u github.com/a8m/mark/...
|
||||
@go get -u github.com/minio/cli/...
|
||||
@go get -u golang.org/x/tools/cmd/goimports
|
||||
@go get -u github.com/gernest/wow/...
|
||||
@go build docs/validator.go && ./validator -m docs/API.md -t docs/checker.go.tpl
|
||||
14
vendor/github.com/minio/minio-go/go.mod
сгенерированный
поставляемый
14
vendor/github.com/minio/minio-go/go.mod
сгенерированный
поставляемый
@@ -1,14 +0,0 @@
|
||||
module github.com/minio/minio-go
|
||||
|
||||
require (
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e // indirect
|
||||
github.com/jtolds/gls v4.2.1+incompatible // indirect
|
||||
github.com/mitchellh/go-homedir v1.1.0
|
||||
github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304 // indirect
|
||||
github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c // indirect
|
||||
golang.org/x/crypto v0.0.0-20190128193316-c7b33c32a30b
|
||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd
|
||||
golang.org/x/sys v0.0.0-20190124100055-b90733256f2e // indirect
|
||||
golang.org/x/text v0.3.0 // indirect
|
||||
gopkg.in/ini.v1 v1.41.0
|
||||
)
|
||||
20
vendor/github.com/minio/minio-go/go.sum
сгенерированный
поставляемый
20
vendor/github.com/minio/minio-go/go.sum
сгенерированный
поставляемый
@@ -1,20 +0,0 @@
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
github.com/jtolds/gls v4.2.1+incompatible h1:fSuqC+Gmlu6l/ZYAoZzx2pyucC8Xza35fpRVWLVmUEE=
|
||||
github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||
github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304 h1:Jpy1PXuP99tXNrhbq2BaPz9B+jNAvH1JPQQpG/9GCXY=
|
||||
github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||
github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c h1:Ho+uVpkel/udgjbwB5Lktg9BtvJSh2DT0Hi6LPSyI2w=
|
||||
github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
|
||||
golang.org/x/crypto v0.0.0-20190128193316-c7b33c32a30b h1:Ib/yptP38nXZFMwqWSip+OKuMP9OkyDe3p+DssP8n9w=
|
||||
golang.org/x/crypto v0.0.0-20190128193316-c7b33c32a30b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd h1:HuTn7WObtcDo9uEEU7rEqL0jYthdXAmZ6PP+meazmaU=
|
||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/sys v0.0.0-20190124100055-b90733256f2e h1:3GIlrlVLfkoipSReOMNAgApI0ajnalyLa/EZHHca/XI=
|
||||
golang.org/x/sys v0.0.0-20190124100055-b90733256f2e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
gopkg.in/ini.v1 v1.41.0 h1:Ka3ViY6gNYSKiVy71zXBEqKplnV35ImDLVG+8uoIklE=
|
||||
gopkg.in/ini.v1 v1.41.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
0
vendor/github.com/minio/minio-go/.gitignore → vendor/github.com/minio/minio-go/v6/.gitignore
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/.gitignore → vendor/github.com/minio/minio-go/v6/.gitignore
сгенерированный
поставляемый
29
vendor/github.com/minio/minio-go/v6/.travis.yml
сгенерированный
поставляемый
Обычный файл
29
vendor/github.com/minio/minio-go/v6/.travis.yml
сгенерированный
поставляемый
Обычный файл
@@ -0,0 +1,29 @@
|
||||
sudo: false
|
||||
language: go
|
||||
|
||||
os:
|
||||
- linux
|
||||
|
||||
env:
|
||||
- ARCH=x86_64
|
||||
|
||||
go:
|
||||
- 1.12.x
|
||||
- tip
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
allow_failures:
|
||||
- go: tip
|
||||
|
||||
before_install:
|
||||
- sudo apt-get install devscripts
|
||||
- curl -O https://dl.minio.io/server/minio/release/linux-amd64/minio && chmod +x ./minio
|
||||
- sudo cp testcerts/public.crt /usr/local/share/ca-certificates/
|
||||
- sudo update-ca-certificates
|
||||
- MINIO_ACCESS_KEY=minio MINIO_SECRET_KEY=minio123 ./minio server --compat --quiet --certs-dir testcerts data 2>&1 > minio.log &
|
||||
|
||||
script:
|
||||
- diff -au <(gofmt -d .) <(printf "")
|
||||
- diff -au <(licensecheck --check '.go$' --recursive --lines 0 * | grep -v -w 'Apache (v2.0)') <(printf "")
|
||||
- make
|
||||
0
vendor/github.com/minio/minio-go/CONTRIBUTING.md → vendor/github.com/minio/minio-go/v6/CONTRIBUTING.md
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/CONTRIBUTING.md → vendor/github.com/minio/minio-go/v6/CONTRIBUTING.md
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/LICENSE → vendor/github.com/minio/minio-go/v6/LICENSE
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/LICENSE → vendor/github.com/minio/minio-go/v6/LICENSE
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/MAINTAINERS.md → vendor/github.com/minio/minio-go/v6/MAINTAINERS.md
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/MAINTAINERS.md → vendor/github.com/minio/minio-go/v6/MAINTAINERS.md
сгенерированный
поставляемый
20
vendor/github.com/minio/minio-go/v6/Makefile
сгенерированный
поставляемый
Обычный файл
20
vendor/github.com/minio/minio-go/v6/Makefile
сгенерированный
поставляемый
Обычный файл
@@ -0,0 +1,20 @@
|
||||
all: checks
|
||||
|
||||
.PHONY: examples docs
|
||||
|
||||
checks: vet test examples docs functional-test
|
||||
|
||||
vet:
|
||||
@GO111MODULE=on go vet ./...
|
||||
|
||||
test:
|
||||
@GO111MODULE=on SERVER_ENDPOINT=localhost:9000 ACCESS_KEY=minio SECRET_KEY=minio123 ENABLE_HTTPS=1 MINT_MODE=full go test -race -v ./...
|
||||
|
||||
examples:
|
||||
@mkdir -p /tmp/examples && for i in $(echo examples/s3/*); do go build -o /tmp/examples/$(basename ${i:0:-3}) ${i}; done
|
||||
|
||||
docs:
|
||||
@(cd docs; GO111MODULE=on go build validator.go && ./validator -m ../docs/API.md -t checker.go.tpl)
|
||||
|
||||
functional-test:
|
||||
@GO111MODULE=on SERVER_ENDPOINT=localhost:9000 ACCESS_KEY=minio SECRET_KEY=minio123 ENABLE_HTTPS=1 MINT_MODE=full go run functional_tests.go
|
||||
0
vendor/github.com/minio/minio-go/NOTICE → vendor/github.com/minio/minio-go/v6/NOTICE
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/NOTICE → vendor/github.com/minio/minio-go/v6/NOTICE
сгенерированный
поставляемый
14
vendor/github.com/minio/minio-go/README.md → vendor/github.com/minio/minio-go/v6/README.md
сгенерированный
поставляемый
14
vendor/github.com/minio/minio-go/README.md → vendor/github.com/minio/minio-go/v6/README.md
сгенерированный
поставляемый
@@ -26,12 +26,12 @@ MinIO client requires the following four parameters specified to connect to an A
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/minio/minio-go"
|
||||
"github.com/minio/minio-go/v6"
|
||||
"log"
|
||||
)
|
||||
|
||||
func main() {
|
||||
endpoint := "play.min.io:9000"
|
||||
endpoint := "play.min.io"
|
||||
accessKeyID := "Q3AM3UQ867SPQQA43P2F"
|
||||
secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
|
||||
useSSL := true
|
||||
@@ -49,19 +49,19 @@ func main() {
|
||||
## Quick Start Example - File Uploader
|
||||
This example program connects to an object storage server, creates a bucket and uploads a file to the bucket.
|
||||
|
||||
We will use the MinIO server running at [https://play.min.io:9000](https://play.min.io:9000) in this example. Feel free to use this service for testing and development. Access credentials shown in this example are open to the public.
|
||||
We will use the MinIO server running at [https://play.min.io](https://play.min.io) in this example. Feel free to use this service for testing and development. Access credentials shown in this example are open to the public.
|
||||
|
||||
### FileUploader.go
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/minio/minio-go"
|
||||
"github.com/minio/minio-go/v6"
|
||||
"log"
|
||||
)
|
||||
|
||||
func main() {
|
||||
endpoint := "play.min.io:9000"
|
||||
endpoint := "play.min.io"
|
||||
accessKeyID := "Q3AM3UQ867SPQQA43P2F"
|
||||
secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
|
||||
useSSL := true
|
||||
@@ -79,8 +79,8 @@ func main() {
|
||||
err = minioClient.MakeBucket(bucketName, location)
|
||||
if err != nil {
|
||||
// Check to see if we already own this bucket (which happens if you run this twice)
|
||||
exists, err := minioClient.BucketExists(bucketName)
|
||||
if err == nil && exists {
|
||||
exists, errBucketExists := minioClient.BucketExists(bucketName)
|
||||
if errBucketExists == nil && exists {
|
||||
log.Printf("We already own %s\n", bucketName)
|
||||
} else {
|
||||
log.Fatalln(err)
|
||||
10
vendor/github.com/minio/minio-go/README_zh_CN.md → vendor/github.com/minio/minio-go/v6/README_zh_CN.md
сгенерированный
поставляемый
10
vendor/github.com/minio/minio-go/README_zh_CN.md → vendor/github.com/minio/minio-go/v6/README_zh_CN.md
сгенерированный
поставляемый
@@ -38,12 +38,12 @@ MinIO client需要以下4个参数来连接与Amazon S3兼容的对象存储。
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/minio/minio-go"
|
||||
"github.com/minio/minio-go/v6"
|
||||
"log"
|
||||
)
|
||||
|
||||
func main() {
|
||||
endpoint := "play.min.io:9000"
|
||||
endpoint := "play.min.io"
|
||||
accessKeyID := "Q3AM3UQ867SPQQA43P2F"
|
||||
secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
|
||||
useSSL := true
|
||||
@@ -61,19 +61,19 @@ func main() {
|
||||
## 示例-文件上传
|
||||
本示例连接到一个对象存储服务,创建一个存储桶并上传一个文件到存储桶中。
|
||||
|
||||
我们在本示例中使用运行在 [https://play.min.io:9000](https://play.min.io:9000) 上的MinIO服务,你可以用这个服务来开发和测试。示例中的访问凭据是公开的。
|
||||
我们在本示例中使用运行在 [https://play.min.io](https://play.min.io) 上的MinIO服务,你可以用这个服务来开发和测试。示例中的访问凭据是公开的。
|
||||
|
||||
### FileUploader.go
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/minio/minio-go"
|
||||
"github.com/minio/minio-go/v6"
|
||||
"log"
|
||||
)
|
||||
|
||||
func main() {
|
||||
endpoint := "play.min.io:9000"
|
||||
endpoint := "play.min.io"
|
||||
accessKeyID := "Q3AM3UQ867SPQQA43P2F"
|
||||
secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
|
||||
useSSL := true
|
||||
4
vendor/github.com/minio/minio-go/api-compose-object.go → vendor/github.com/minio/minio-go/v6/api-compose-object.go
сгенерированный
поставляемый
4
vendor/github.com/minio/minio-go/api-compose-object.go → vendor/github.com/minio/minio-go/v6/api-compose-object.go
сгенерированный
поставляемый
@@ -28,8 +28,8 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/minio/minio-go/pkg/encrypt"
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/encrypt"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// DestinationInfo - type with information about the object to be
|
||||
0
vendor/github.com/minio/minio-go/api-datatypes.go → vendor/github.com/minio/minio-go/v6/api-datatypes.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/api-datatypes.go → vendor/github.com/minio/minio-go/v6/api-datatypes.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/api-error-response.go → vendor/github.com/minio/minio-go/v6/api-error-response.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/api-error-response.go → vendor/github.com/minio/minio-go/v6/api-error-response.go
сгенерированный
поставляемый
@@ -60,7 +60,7 @@ type ErrorResponse struct {
|
||||
//
|
||||
// For example:
|
||||
//
|
||||
// import s3 "github.com/minio/minio-go"
|
||||
// import s3 "github.com/minio/minio-go/v6"
|
||||
// ...
|
||||
// ...
|
||||
// reader, stat, err := s3.GetObject(...)
|
||||
2
vendor/github.com/minio/minio-go/api-get-lifecycle.go → vendor/github.com/minio/minio-go/v6/api-get-lifecycle.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/api-get-lifecycle.go → vendor/github.com/minio/minio-go/v6/api-get-lifecycle.go
сгенерированный
поставляемый
@@ -23,7 +23,7 @@ import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// GetBucketLifecycle - get bucket lifecycle.
|
||||
0
vendor/github.com/minio/minio-go/api-get-object-acl.go → vendor/github.com/minio/minio-go/v6/api-get-object-acl.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/api-get-object-acl.go → vendor/github.com/minio/minio-go/v6/api-get-object-acl.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/api-get-object-context.go → vendor/github.com/minio/minio-go/v6/api-get-object-context.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/api-get-object-context.go → vendor/github.com/minio/minio-go/v6/api-get-object-context.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/api-get-object-file.go → vendor/github.com/minio/minio-go/v6/api-get-object-file.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/api-get-object-file.go → vendor/github.com/minio/minio-go/v6/api-get-object-file.go
сгенерированный
поставляемый
@@ -23,7 +23,7 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// FGetObjectWithContext - download contents of an object to a local file.
|
||||
16
vendor/github.com/minio/minio-go/api-get-object.go → vendor/github.com/minio/minio-go/v6/api-get-object.go
сгенерированный
поставляемый
16
vendor/github.com/minio/minio-go/api-get-object.go → vendor/github.com/minio/minio-go/v6/api-get-object.go
сгенерированный
поставляемый
@@ -27,7 +27,7 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// GetObject - returns an seekable, readable object.
|
||||
@@ -321,6 +321,7 @@ func (o *Object) Read(b []byte) (n int, err error) {
|
||||
if o.prevErr != nil || o.isClosed {
|
||||
return 0, o.prevErr
|
||||
}
|
||||
|
||||
// Create a new request.
|
||||
readReq := getRequest{
|
||||
isReadOp: true,
|
||||
@@ -403,10 +404,13 @@ func (o *Object) ReadAt(b []byte, offset int64) (n int, err error) {
|
||||
defer o.mutex.Unlock()
|
||||
|
||||
// prevErr is error which was saved in previous operation.
|
||||
if o.prevErr != nil || o.isClosed {
|
||||
if o.prevErr != nil && o.prevErr != io.EOF || o.isClosed {
|
||||
return 0, o.prevErr
|
||||
}
|
||||
|
||||
// Set the current offset to ReadAt offset, because the current offset will be shifted at the end of this method.
|
||||
o.currOffset = offset
|
||||
|
||||
// Can only compare offsets to size when size has been set.
|
||||
if o.objectInfoSet {
|
||||
// If offset is negative than we return io.EOF.
|
||||
@@ -476,11 +480,9 @@ func (o *Object) Seek(offset int64, whence int) (n int64, err error) {
|
||||
o.mutex.Lock()
|
||||
defer o.mutex.Unlock()
|
||||
|
||||
if o.prevErr != nil {
|
||||
// At EOF seeking is legal allow only io.EOF, for any other errors we return.
|
||||
if o.prevErr != io.EOF {
|
||||
return 0, o.prevErr
|
||||
}
|
||||
// At EOF seeking is legal allow only io.EOF, for any other errors we return.
|
||||
if o.prevErr != nil && o.prevErr != io.EOF {
|
||||
return 0, o.prevErr
|
||||
}
|
||||
|
||||
// Negative offset is valid for whence of '2'.
|
||||
2
vendor/github.com/minio/minio-go/api-get-options.go → vendor/github.com/minio/minio-go/v6/api-get-options.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/api-get-options.go → vendor/github.com/minio/minio-go/v6/api-get-options.go
сгенерированный
поставляемый
@@ -22,7 +22,7 @@ import (
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/minio/minio-go/pkg/encrypt"
|
||||
"github.com/minio/minio-go/v6/pkg/encrypt"
|
||||
)
|
||||
|
||||
// GetObjectOptions are used to specify additional headers or options
|
||||
2
vendor/github.com/minio/minio-go/api-get-policy.go → vendor/github.com/minio/minio-go/v6/api-get-policy.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/api-get-policy.go → vendor/github.com/minio/minio-go/v6/api-get-policy.go
сгенерированный
поставляемый
@@ -23,7 +23,7 @@ import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// GetBucketPolicy - get bucket policy at a given path.
|
||||
2
vendor/github.com/minio/minio-go/api-list.go → vendor/github.com/minio/minio-go/v6/api-list.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/api-list.go → vendor/github.com/minio/minio-go/v6/api-list.go
сгенерированный
поставляемый
@@ -25,7 +25,7 @@ import (
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// ListBuckets list all buckets owned by this authenticated user.
|
||||
30
vendor/github.com/minio/minio-go/api-notification.go → vendor/github.com/minio/minio-go/v6/api-notification.go
сгенерированный
поставляемый
30
vendor/github.com/minio/minio-go/api-notification.go → vendor/github.com/minio/minio-go/v6/api-notification.go
сгенерированный
поставляемый
@@ -21,12 +21,11 @@ import (
|
||||
"bufio"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// GetBucketNotification - get bucket notification at a given path.
|
||||
@@ -164,13 +163,14 @@ func (c Client) ListenBucketNotification(bucketName, prefix, suffix string, even
|
||||
// Indicate to our routine to exit cleanly upon return.
|
||||
defer close(retryDoneCh)
|
||||
|
||||
// Prepare urlValues to pass into the request on every loop
|
||||
urlValues := make(url.Values)
|
||||
urlValues.Set("prefix", prefix)
|
||||
urlValues.Set("suffix", suffix)
|
||||
urlValues["events"] = events
|
||||
|
||||
// Wait on the jitter retry loop.
|
||||
for range c.newRetryTimerContinous(time.Second, time.Second*30, MaxJitter, retryDoneCh) {
|
||||
urlValues := make(url.Values)
|
||||
urlValues.Set("prefix", prefix)
|
||||
urlValues.Set("suffix", suffix)
|
||||
urlValues["events"] = events
|
||||
|
||||
// Execute GET on bucket to list objects.
|
||||
resp, err := c.executeMethod(context.Background(), "GET", requestMetadata{
|
||||
bucketName: bucketName,
|
||||
@@ -196,30 +196,24 @@ func (c Client) ListenBucketNotification(bucketName, prefix, suffix string, even
|
||||
// Initialize a new bufio scanner, to read line by line.
|
||||
bio := bufio.NewScanner(resp.Body)
|
||||
|
||||
// Close the response body.
|
||||
defer resp.Body.Close()
|
||||
|
||||
// Unmarshal each line, returns marshalled values.
|
||||
for bio.Scan() {
|
||||
var notificationInfo NotificationInfo
|
||||
if err = json.Unmarshal(bio.Bytes(), ¬ificationInfo); err != nil {
|
||||
closeResponse(resp)
|
||||
continue
|
||||
}
|
||||
// Send notificationInfo
|
||||
select {
|
||||
case notificationInfoCh <- notificationInfo:
|
||||
case <-doneCh:
|
||||
closeResponse(resp)
|
||||
return
|
||||
}
|
||||
}
|
||||
// Look for any underlying errors.
|
||||
if err = bio.Err(); err != nil {
|
||||
// For an unexpected connection drop from server, we close the body
|
||||
// and re-connect.
|
||||
if err == io.ErrUnexpectedEOF {
|
||||
resp.Body.Close()
|
||||
}
|
||||
}
|
||||
|
||||
// Close current connection before looping further.
|
||||
closeResponse(resp)
|
||||
}
|
||||
}(notificationInfoCh)
|
||||
|
||||
4
vendor/github.com/minio/minio-go/api-presigned.go → vendor/github.com/minio/minio-go/v6/api-presigned.go
сгенерированный
поставляемый
4
vendor/github.com/minio/minio-go/api-presigned.go → vendor/github.com/minio/minio-go/v6/api-presigned.go
сгенерированный
поставляемый
@@ -23,8 +23,8 @@ import (
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3signer"
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3signer"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// presignURL - Returns a presigned URL for an input 'method'.
|
||||
2
vendor/github.com/minio/minio-go/api-put-bucket.go → vendor/github.com/minio/minio-go/v6/api-put-bucket.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/api-put-bucket.go → vendor/github.com/minio/minio-go/v6/api-put-bucket.go
сгенерированный
поставляемый
@@ -26,7 +26,7 @@ import (
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
/// Bucket operations
|
||||
6
vendor/github.com/minio/minio-go/api-put-object-common.go → vendor/github.com/minio/minio-go/v6/api-put-object-common.go
сгенерированный
поставляемый
6
vendor/github.com/minio/minio-go/api-put-object-common.go → vendor/github.com/minio/minio-go/v6/api-put-object-common.go
сгенерированный
поставляемый
@@ -23,7 +23,7 @@ import (
|
||||
"math"
|
||||
"os"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// Verify if reader is *minio.Object
|
||||
@@ -64,7 +64,7 @@ func isReadAt(reader io.Reader) (ok bool) {
|
||||
// object storage it will have the following parameters as constants.
|
||||
//
|
||||
// maxPartsCount - 10000
|
||||
// minPartSize - 64MiB
|
||||
// minPartSize - 128MiB
|
||||
// maxMultipartPutObjectSize - 5TiB
|
||||
//
|
||||
func optimalPartInfo(objectSize int64, configuredPartSize uint64) (totalPartsCount int, partSize int64, lastPartSize int64, err error) {
|
||||
@@ -105,7 +105,7 @@ func optimalPartInfo(objectSize int64, configuredPartSize uint64) (totalPartsCou
|
||||
configuredPartSize = minPartSize
|
||||
// Use floats for part size for all calculations to avoid
|
||||
// overflows during float64 to int64 conversions.
|
||||
partSizeFlt = math.Ceil(float64(objectSize / maxPartsCount))
|
||||
partSizeFlt = float64(objectSize / maxPartsCount)
|
||||
partSizeFlt = math.Ceil(partSizeFlt/float64(configuredPartSize)) * float64(configuredPartSize)
|
||||
}
|
||||
|
||||
0
vendor/github.com/minio/minio-go/api-put-object-context.go → vendor/github.com/minio/minio-go/v6/api-put-object-context.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/api-put-object-context.go → vendor/github.com/minio/minio-go/v6/api-put-object-context.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/api-put-object-copy.go → vendor/github.com/minio/minio-go/v6/api-put-object-copy.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/api-put-object-copy.go → vendor/github.com/minio/minio-go/v6/api-put-object-copy.go
сгенерированный
поставляемый
@@ -23,7 +23,7 @@ import (
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
|
||||
"github.com/minio/minio-go/pkg/encrypt"
|
||||
"github.com/minio/minio-go/v6/pkg/encrypt"
|
||||
)
|
||||
|
||||
// CopyObject - copy a source object into a new object
|
||||
@@ -23,7 +23,7 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// FPutObjectWithContext - Create an object in a bucket, with contents from file at filePath. Allows request cancellation.
|
||||
0
vendor/github.com/minio/minio-go/api-put-object-file.go → vendor/github.com/minio/minio-go/v6/api-put-object-file.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/api-put-object-file.go → vendor/github.com/minio/minio-go/v6/api-put-object-file.go
сгенерированный
поставляемый
@@ -33,8 +33,8 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/minio/minio-go/pkg/encrypt"
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/encrypt"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
func (c Client) putObjectMultipart(ctx context.Context, bucketName, objectName string, reader io.Reader, size int64,
|
||||
@@ -25,7 +25,7 @@ import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// putObjectMultipartStream - upload a large object using
|
||||
@@ -75,7 +75,7 @@ type uploadPartReq struct {
|
||||
Part *ObjectPart // Size of the part uploaded.
|
||||
}
|
||||
|
||||
// putObjectMultipartFromReadAt - Uploads files bigger than 64MiB.
|
||||
// putObjectMultipartFromReadAt - Uploads files bigger than 128MiB.
|
||||
// Supports all readers which implements io.ReaderAt interface
|
||||
// (ReadAt method).
|
||||
//
|
||||
10
vendor/github.com/minio/minio-go/api-put-object.go → vendor/github.com/minio/minio-go/v6/api-put-object.go
сгенерированный
поставляемый
10
vendor/github.com/minio/minio-go/api-put-object.go → vendor/github.com/minio/minio-go/v6/api-put-object.go
сгенерированный
поставляемый
@@ -26,8 +26,8 @@ import (
|
||||
"runtime/debug"
|
||||
"sort"
|
||||
|
||||
"github.com/minio/minio-go/pkg/encrypt"
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/encrypt"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
"golang.org/x/net/http/httpguts"
|
||||
)
|
||||
|
||||
@@ -124,9 +124,9 @@ func (a completedParts) Less(i, j int) bool { return a[i].PartNumber < a[j].Part
|
||||
//
|
||||
// You must have WRITE permissions on a bucket to create an object.
|
||||
//
|
||||
// - For size smaller than 64MiB PutObject automatically does a
|
||||
// - For size smaller than 128MiB PutObject automatically does a
|
||||
// single atomic Put operation.
|
||||
// - For size larger than 64MiB PutObject automatically does a
|
||||
// - For size larger than 128MiB PutObject automatically does a
|
||||
// multipart Put operation.
|
||||
// - For size input as -1 PutObject does a multipart Put operation
|
||||
// until input stream reaches EOF. Maximum object size that can
|
||||
@@ -167,7 +167,7 @@ func (c Client) putObjectCommon(ctx context.Context, bucketName, objectName stri
|
||||
return c.putObjectNoChecksum(ctx, bucketName, objectName, reader, size, opts)
|
||||
}
|
||||
|
||||
// For all sizes greater than 64MiB do multipart.
|
||||
// For all sizes greater than 128MiB do multipart.
|
||||
return c.putObjectMultipartStream(ctx, bucketName, objectName, reader, size, opts)
|
||||
}
|
||||
|
||||
2
vendor/github.com/minio/minio-go/api-remove.go → vendor/github.com/minio/minio-go/v6/api-remove.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/api-remove.go → vendor/github.com/minio/minio-go/v6/api-remove.go
сгенерированный
поставляемый
@@ -25,7 +25,7 @@ import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// RemoveBucket deletes the bucket name.
|
||||
0
vendor/github.com/minio/minio-go/api-s3-datatypes.go → vendor/github.com/minio/minio-go/v6/api-s3-datatypes.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/api-s3-datatypes.go → vendor/github.com/minio/minio-go/v6/api-s3-datatypes.go
сгенерированный
поставляемый
4
vendor/github.com/minio/minio-go/api-select.go → vendor/github.com/minio/minio-go/v6/api-select.go
сгенерированный
поставляемый
4
vendor/github.com/minio/minio-go/api-select.go → vendor/github.com/minio/minio-go/v6/api-select.go
сгенерированный
поставляемый
@@ -31,8 +31,8 @@ import (
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"github.com/minio/minio-go/pkg/encrypt"
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/encrypt"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// CSVFileHeaderInfo - is the parameter for whether to utilize headers.
|
||||
2
vendor/github.com/minio/minio-go/api-stat.go → vendor/github.com/minio/minio-go/v6/api-stat.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/api-stat.go → vendor/github.com/minio/minio-go/v6/api-stat.go
сгенерированный
поставляемый
@@ -24,7 +24,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// BucketExists verify if bucket exists and you have permission to access it.
|
||||
80
vendor/github.com/minio/minio-go/api.go → vendor/github.com/minio/minio-go/v6/api.go
сгенерированный
поставляемый
80
vendor/github.com/minio/minio-go/api.go → vendor/github.com/minio/minio-go/v6/api.go
сгенерированный
поставляемый
@@ -41,9 +41,9 @@ import (
|
||||
|
||||
"golang.org/x/net/publicsuffix"
|
||||
|
||||
"github.com/minio/minio-go/pkg/credentials"
|
||||
"github.com/minio/minio-go/pkg/s3signer"
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/credentials"
|
||||
"github.com/minio/minio-go/v6/pkg/s3signer"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// Client implements Amazon S3 compatible methods.
|
||||
@@ -73,8 +73,9 @@ type Client struct {
|
||||
bucketLocCache *bucketLocationCache
|
||||
|
||||
// Advanced functionality.
|
||||
isTraceEnabled bool
|
||||
traceOutput io.Writer
|
||||
isTraceEnabled bool
|
||||
traceErrorsOnly bool
|
||||
traceOutput io.Writer
|
||||
|
||||
// S3 specific accelerated endpoint.
|
||||
s3AccelerateEndpoint string
|
||||
@@ -102,7 +103,7 @@ type Options struct {
|
||||
// Global constants.
|
||||
const (
|
||||
libraryName = "minio-go"
|
||||
libraryVersion = "v6.0.23"
|
||||
libraryVersion = "v6.0.34"
|
||||
)
|
||||
|
||||
// User Agent should always following the below style.
|
||||
@@ -186,6 +187,12 @@ func NewWithOptions(endpoint string, opts *Options) (*Client, error) {
|
||||
return privateNew(endpoint, opts.Creds, opts.Secure, opts.Region, opts.BucketLookup)
|
||||
}
|
||||
|
||||
// EndpointURL returns the URL of the S3 endpoint.
|
||||
func (c *Client) EndpointURL() *url.URL {
|
||||
endpoint := *c.endpointURL // copy to prevent callers from modifying internal state
|
||||
return &endpoint
|
||||
}
|
||||
|
||||
// lockedRandSource provides protected rand source, implements rand.Source interface.
|
||||
type lockedRandSource struct {
|
||||
lk sync.Mutex
|
||||
@@ -263,7 +270,7 @@ func (c *Client) redirectHeaders(req *http.Request, via []*http.Request) error {
|
||||
case signerType.IsV2():
|
||||
return errors.New("signature V2 cannot support redirection")
|
||||
case signerType.IsV4():
|
||||
req = s3signer.SignV4(*req, accessKeyID, secretAccessKey, sessionToken, getDefaultLocation(*c.endpointURL, region))
|
||||
s3signer.SignV4(*req, accessKeyID, secretAccessKey, sessionToken, getDefaultLocation(*c.endpointURL, region))
|
||||
}
|
||||
}
|
||||
return nil
|
||||
@@ -330,10 +337,6 @@ func privateNew(endpoint string, creds *credentials.Credentials, secure bool, re
|
||||
func (c *Client) SetAppInfo(appName string, appVersion string) {
|
||||
// if app name and version not set, we do not set a new user agent.
|
||||
if appName != "" && appVersion != "" {
|
||||
c.appInfo = struct {
|
||||
appName string
|
||||
appVersion string
|
||||
}{}
|
||||
c.appInfo.appName = appName
|
||||
c.appInfo.appVersion = appVersion
|
||||
}
|
||||
@@ -373,10 +376,23 @@ func (c *Client) TraceOn(outputStream io.Writer) {
|
||||
c.isTraceEnabled = true
|
||||
}
|
||||
|
||||
// TraceErrorsOnlyOn - same as TraceOn, but only errors will be traced.
|
||||
func (c *Client) TraceErrorsOnlyOn(outputStream io.Writer) {
|
||||
c.TraceOn(outputStream)
|
||||
c.traceErrorsOnly = true
|
||||
}
|
||||
|
||||
// TraceErrorsOnlyOff - Turns off the errors only tracing and everything will be traced after this call.
|
||||
// If all tracing needs to be turned off, call TraceOff().
|
||||
func (c *Client) TraceErrorsOnlyOff() {
|
||||
c.traceErrorsOnly = false
|
||||
}
|
||||
|
||||
// TraceOff - disable HTTP tracing.
|
||||
func (c *Client) TraceOff() {
|
||||
// Disable tracing.
|
||||
c.isTraceEnabled = false
|
||||
c.traceErrorsOnly = false
|
||||
}
|
||||
|
||||
// SetS3TransferAccelerate - turns s3 accelerated endpoint on or off for all your
|
||||
@@ -516,8 +532,9 @@ func (c Client) do(req *http.Request) (*http.Response, error) {
|
||||
return nil, ErrInvalidArgument(msg)
|
||||
}
|
||||
|
||||
// If trace is enabled, dump http request and response.
|
||||
if c.isTraceEnabled {
|
||||
// If trace is enabled, dump http request and response,
|
||||
// except when the traceErrorsOnly enabled and the response's status code is ok
|
||||
if c.isTraceEnabled && !(c.traceErrorsOnly && resp.StatusCode == http.StatusOK) {
|
||||
err = c.dumpHTTP(req, resp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -642,14 +659,30 @@ func (c Client) executeMethod(ctx context.Context, method string, metadata reque
|
||||
//
|
||||
// Additionally we should only retry if bucketLocation and custom
|
||||
// region is empty.
|
||||
if metadata.bucketLocation == "" && c.region == "" {
|
||||
if errResponse.Code == "AuthorizationHeaderMalformed" || errResponse.Code == "InvalidRegion" {
|
||||
if c.region == "" {
|
||||
switch errResponse.Code {
|
||||
case "AuthorizationHeaderMalformed":
|
||||
fallthrough
|
||||
case "InvalidRegion":
|
||||
fallthrough
|
||||
case "AccessDenied":
|
||||
if metadata.bucketName != "" && errResponse.Region != "" {
|
||||
// Gather Cached location only if bucketName is present.
|
||||
if _, cachedLocationError := c.bucketLocCache.Get(metadata.bucketName); cachedLocationError != false {
|
||||
if _, cachedOk := c.bucketLocCache.Get(metadata.bucketName); cachedOk {
|
||||
c.bucketLocCache.Set(metadata.bucketName, errResponse.Region)
|
||||
continue // Retry.
|
||||
}
|
||||
} else {
|
||||
// Most probably for ListBuckets()
|
||||
if errResponse.Region != metadata.bucketLocation {
|
||||
// Retry if the error
|
||||
// response has a
|
||||
// different region
|
||||
// than the request we
|
||||
// just made.
|
||||
metadata.bucketLocation = errResponse.Region
|
||||
continue // Retry
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -683,13 +716,8 @@ func (c Client) newRequest(method string, metadata requestMetadata) (req *http.R
|
||||
// Gather location only if bucketName is present.
|
||||
location, err = c.getBucketLocation(metadata.bucketName)
|
||||
if err != nil {
|
||||
if ToErrorResponse(err).Code != "AccessDenied" {
|
||||
return nil, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
// Upon AccessDenied error on fetching bucket location, default
|
||||
// to possible locations based on endpoint URL. This can usually
|
||||
// happen when GetBucketLocation() is disabled using IAM policies.
|
||||
}
|
||||
if location == "" {
|
||||
location = getDefaultLocation(*c.endpointURL, c.region)
|
||||
@@ -697,10 +725,14 @@ func (c Client) newRequest(method string, metadata requestMetadata) (req *http.R
|
||||
}
|
||||
|
||||
// Look if target url supports virtual host.
|
||||
isVirtualHost := c.isVirtualHostStyleRequest(*c.endpointURL, metadata.bucketName)
|
||||
// We explicitly disallow MakeBucket calls to not use virtual DNS style,
|
||||
// since the resolution may fail.
|
||||
isMakeBucket := (metadata.objectName == "" && method == "PUT" && len(metadata.queryValues) == 0)
|
||||
isVirtualHost := c.isVirtualHostStyleRequest(*c.endpointURL, metadata.bucketName) && !isMakeBucket
|
||||
|
||||
// Construct a new target URL.
|
||||
targetURL, err := c.makeTargetURL(metadata.bucketName, metadata.objectName, location, isVirtualHost, metadata.queryValues)
|
||||
targetURL, err := c.makeTargetURL(metadata.bucketName, metadata.objectName, location,
|
||||
isVirtualHost, metadata.queryValues)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
18
vendor/github.com/minio/minio-go/appveyor.yml → vendor/github.com/minio/minio-go/v6/appveyor.yml
сгенерированный
поставляемый
18
vendor/github.com/minio/minio-go/appveyor.yml → vendor/github.com/minio/minio-go/v6/appveyor.yml
сгенерированный
поставляемый
@@ -9,28 +9,24 @@ clone_folder: c:\gopath\src\github.com\minio\minio-go
|
||||
# environment variables
|
||||
environment:
|
||||
GOPATH: c:\gopath
|
||||
GO15VENDOREXPERIMENT: 1
|
||||
GO111MODULE: on
|
||||
|
||||
# scripts that run after cloning repository
|
||||
install:
|
||||
- set PATH=%GOPATH%\bin;c:\go\bin;%PATH%
|
||||
- go version
|
||||
- go env
|
||||
- go get -u golang.org/x/lint/golint
|
||||
- go get -u github.com/remyoudompheng/go-misc/deadcode
|
||||
- go get -u github.com/gordonklaus/ineffassign
|
||||
- go get -u golang.org/x/crypto/argon2
|
||||
- go get -t ./...
|
||||
- go get golang.org/x/lint/golint
|
||||
- go get honnef.co/go/tools/cmd/staticcheck
|
||||
|
||||
# to run your custom scripts instead of automatic MSBuild
|
||||
build_script:
|
||||
- go vet ./...
|
||||
- gofmt -s -l .
|
||||
- golint -set_exit_status github.com/minio/minio-go...
|
||||
- deadcode
|
||||
- ineffassign .
|
||||
- go test -short -v
|
||||
- go test -short -race -v
|
||||
- golint -set_exit_status github.com/minio/minio-go/...
|
||||
- staticcheck
|
||||
- go test -short -v ./...
|
||||
- go test -short -race -v ./...
|
||||
|
||||
# to disable automatic tests
|
||||
test: off
|
||||
20
vendor/github.com/minio/minio-go/bucket-cache.go → vendor/github.com/minio/minio-go/v6/bucket-cache.go
сгенерированный
поставляемый
20
vendor/github.com/minio/minio-go/bucket-cache.go → vendor/github.com/minio/minio-go/v6/bucket-cache.go
сгенерированный
поставляемый
@@ -24,9 +24,9 @@ import (
|
||||
"path"
|
||||
"sync"
|
||||
|
||||
"github.com/minio/minio-go/pkg/credentials"
|
||||
"github.com/minio/minio-go/pkg/s3signer"
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/credentials"
|
||||
"github.com/minio/minio-go/v6/pkg/s3signer"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// bucketLocationCache - Provides simple mechanism to hold bucket
|
||||
@@ -124,8 +124,16 @@ func processBucketLocationResponse(resp *http.Response, bucketName string) (buck
|
||||
// For access denied error, it could be an anonymous
|
||||
// request. Move forward and let the top level callers
|
||||
// succeed if possible based on their policy.
|
||||
if errResp.Code == "AccessDenied" {
|
||||
return "us-east-1", nil
|
||||
switch errResp.Code {
|
||||
case "AuthorizationHeaderMalformed":
|
||||
fallthrough
|
||||
case "InvalidRegion":
|
||||
fallthrough
|
||||
case "AccessDenied":
|
||||
if errResp.Region == "" {
|
||||
return "us-east-1", nil
|
||||
}
|
||||
return errResp.Region, nil
|
||||
}
|
||||
return "", err
|
||||
}
|
||||
@@ -162,7 +170,7 @@ func (c Client) getBucketLocationRequest(bucketName string) (*http.Request, erro
|
||||
urlValues.Set("location", "")
|
||||
|
||||
// Set get bucket location always as path style.
|
||||
targetURL := c.endpointURL
|
||||
targetURL := *c.endpointURL
|
||||
|
||||
// as it works in makeTargetURL method from api.go file
|
||||
if h, p, err := net.SplitHostPort(targetURL.Host); err == nil {
|
||||
2
vendor/github.com/minio/minio-go/bucket-notification.go → vendor/github.com/minio/minio-go/v6/bucket-notification.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/bucket-notification.go → vendor/github.com/minio/minio-go/v6/bucket-notification.go
сгенерированный
поставляемый
@@ -20,7 +20,7 @@ package minio
|
||||
import (
|
||||
"encoding/xml"
|
||||
|
||||
"github.com/minio/minio-go/pkg/set"
|
||||
"github.com/minio/minio-go/v6/pkg/set"
|
||||
)
|
||||
|
||||
// NotificationEventType is a S3 notification event associated to the bucket notification configuration
|
||||
4
vendor/github.com/minio/minio-go/constants.go → vendor/github.com/minio/minio-go/v6/constants.go
сгенерированный
поставляемый
4
vendor/github.com/minio/minio-go/constants.go → vendor/github.com/minio/minio-go/v6/constants.go
сгенерированный
поставляемый
@@ -23,9 +23,9 @@ package minio
|
||||
// a part in a multipart upload may not be uploaded.
|
||||
const absMinPartSize = 1024 * 1024 * 5
|
||||
|
||||
// minPartSize - minimum part size 64MiB per object after which
|
||||
// minPartSize - minimum part size 128MiB per object after which
|
||||
// putObject behaves internally as multipart.
|
||||
const minPartSize = 1024 * 1024 * 64
|
||||
const minPartSize = 1024 * 1024 * 128
|
||||
|
||||
// maxPartsCount - maximum number of parts for a single multipart session.
|
||||
const maxPartsCount = 10000
|
||||
75
vendor/github.com/minio/minio-go/core.go → vendor/github.com/minio/minio-go/v6/core.go
сгенерированный
поставляемый
75
vendor/github.com/minio/minio-go/core.go → vendor/github.com/minio/minio-go/v6/core.go
сгенерированный
поставляемый
@@ -22,7 +22,7 @@ import (
|
||||
"io"
|
||||
"strings"
|
||||
|
||||
"github.com/minio/minio-go/pkg/encrypt"
|
||||
"github.com/minio/minio-go/v6/pkg/encrypt"
|
||||
)
|
||||
|
||||
// Core - Inherits Client and adds new methods to expose the low level S3 APIs.
|
||||
@@ -55,9 +55,23 @@ func (c Core) ListObjectsV2(bucketName, objectPrefix, continuationToken string,
|
||||
return c.listObjectsV2Query(bucketName, objectPrefix, continuationToken, fetchOwner, delimiter, maxkeys, startAfter)
|
||||
}
|
||||
|
||||
// CopyObjectWithContext - copies an object from source object to destination object on server side.
|
||||
func (c Core) CopyObjectWithContext(ctx context.Context, sourceBucket, sourceObject, destBucket, destObject string, metadata map[string]string) (ObjectInfo, error) {
|
||||
return c.copyObjectDo(ctx, sourceBucket, sourceObject, destBucket, destObject, metadata)
|
||||
}
|
||||
|
||||
// CopyObject - copies an object from source object to destination object on server side.
|
||||
func (c Core) CopyObject(sourceBucket, sourceObject, destBucket, destObject string, metadata map[string]string) (ObjectInfo, error) {
|
||||
return c.copyObjectDo(context.Background(), sourceBucket, sourceObject, destBucket, destObject, metadata)
|
||||
return c.CopyObjectWithContext(context.Background(), sourceBucket, sourceObject, destBucket, destObject, metadata)
|
||||
}
|
||||
|
||||
// CopyObjectPartWithContext - creates a part in a multipart upload by copying (a
|
||||
// part of) an existing object.
|
||||
func (c Core) CopyObjectPartWithContext(ctx context.Context, srcBucket, srcObject, destBucket, destObject string, uploadID string,
|
||||
partID int, startOffset, length int64, metadata map[string]string) (p CompletePart, err error) {
|
||||
|
||||
return c.copyObjectPartDo(ctx, srcBucket, srcObject, destBucket, destObject, uploadID,
|
||||
partID, startOffset, length, metadata)
|
||||
}
|
||||
|
||||
// CopyObjectPart - creates a part in a multipart upload by copying (a
|
||||
@@ -65,12 +79,12 @@ func (c Core) CopyObject(sourceBucket, sourceObject, destBucket, destObject stri
|
||||
func (c Core) CopyObjectPart(srcBucket, srcObject, destBucket, destObject string, uploadID string,
|
||||
partID int, startOffset, length int64, metadata map[string]string) (p CompletePart, err error) {
|
||||
|
||||
return c.copyObjectPartDo(context.Background(), srcBucket, srcObject, destBucket, destObject, uploadID,
|
||||
return c.CopyObjectPartWithContext(context.Background(), srcBucket, srcObject, destBucket, destObject, uploadID,
|
||||
partID, startOffset, length, metadata)
|
||||
}
|
||||
|
||||
// PutObject - Upload object. Uploads using single PUT call.
|
||||
func (c Core) PutObject(bucket, object string, data io.Reader, size int64, md5Base64, sha256Hex string, metadata map[string]string, sse encrypt.ServerSide) (ObjectInfo, error) {
|
||||
// PutObjectWithContext - Upload object. Uploads using single PUT call.
|
||||
func (c Core) PutObjectWithContext(ctx context.Context, bucket, object string, data io.Reader, size int64, md5Base64, sha256Hex string, metadata map[string]string, sse encrypt.ServerSide) (ObjectInfo, error) {
|
||||
opts := PutObjectOptions{}
|
||||
m := make(map[string]string)
|
||||
for k, v := range metadata {
|
||||
@@ -84,7 +98,7 @@ func (c Core) PutObject(bucket, object string, data io.Reader, size int64, md5Ba
|
||||
opts.ContentType = v
|
||||
} else if strings.ToLower(k) == "cache-control" {
|
||||
opts.CacheControl = v
|
||||
} else if strings.ToLower(k) == strings.ToLower(amzWebsiteRedirectLocation) {
|
||||
} else if strings.EqualFold(k, amzWebsiteRedirectLocation) {
|
||||
opts.WebsiteRedirectLocation = v
|
||||
} else {
|
||||
m[k] = metadata[k]
|
||||
@@ -92,7 +106,12 @@ func (c Core) PutObject(bucket, object string, data io.Reader, size int64, md5Ba
|
||||
}
|
||||
opts.UserMetadata = m
|
||||
opts.ServerSideEncryption = sse
|
||||
return c.putObjectDo(context.Background(), bucket, object, data, md5Base64, sha256Hex, size, opts)
|
||||
return c.putObjectDo(ctx, bucket, object, data, md5Base64, sha256Hex, size, opts)
|
||||
}
|
||||
|
||||
// PutObject - Upload object. Uploads using single PUT call.
|
||||
func (c Core) PutObject(bucket, object string, data io.Reader, size int64, md5Base64, sha256Hex string, metadata map[string]string, sse encrypt.ServerSide) (ObjectInfo, error) {
|
||||
return c.PutObjectWithContext(context.Background(), bucket, object, data, size, md5Base64, sha256Hex, metadata, sse)
|
||||
}
|
||||
|
||||
// NewMultipartUpload - Initiates new multipart upload and returns the new uploadID.
|
||||
@@ -106,9 +125,14 @@ func (c Core) ListMultipartUploads(bucket, prefix, keyMarker, uploadIDMarker, de
|
||||
return c.listMultipartUploadsQuery(bucket, keyMarker, uploadIDMarker, prefix, delimiter, maxUploads)
|
||||
}
|
||||
|
||||
// PutObjectPartWithContext - Upload an object part.
|
||||
func (c Core) PutObjectPartWithContext(ctx context.Context, bucket, object, uploadID string, partID int, data io.Reader, size int64, md5Base64, sha256Hex string, sse encrypt.ServerSide) (ObjectPart, error) {
|
||||
return c.uploadPart(ctx, bucket, object, uploadID, data, partID, md5Base64, sha256Hex, size, sse)
|
||||
}
|
||||
|
||||
// PutObjectPart - Upload an object part.
|
||||
func (c Core) PutObjectPart(bucket, object, uploadID string, partID int, data io.Reader, size int64, md5Base64, sha256Hex string, sse encrypt.ServerSide) (ObjectPart, error) {
|
||||
return c.uploadPart(context.Background(), bucket, object, uploadID, data, partID, md5Base64, sha256Hex, size, sse)
|
||||
return c.PutObjectPartWithContext(context.Background(), bucket, object, uploadID, partID, data, size, md5Base64, sha256Hex, sse)
|
||||
}
|
||||
|
||||
// ListObjectParts - List uploaded parts of an incomplete upload.x
|
||||
@@ -116,17 +140,27 @@ func (c Core) ListObjectParts(bucket, object, uploadID string, partNumberMarker
|
||||
return c.listObjectPartsQuery(bucket, object, uploadID, partNumberMarker, maxParts)
|
||||
}
|
||||
|
||||
// CompleteMultipartUpload - Concatenate uploaded parts and commit to an object.
|
||||
func (c Core) CompleteMultipartUpload(bucket, object, uploadID string, parts []CompletePart) (string, error) {
|
||||
res, err := c.completeMultipartUpload(context.Background(), bucket, object, uploadID, completeMultipartUpload{
|
||||
// CompleteMultipartUploadWithContext - Concatenate uploaded parts and commit to an object.
|
||||
func (c Core) CompleteMultipartUploadWithContext(ctx context.Context, bucket, object, uploadID string, parts []CompletePart) (string, error) {
|
||||
res, err := c.completeMultipartUpload(ctx, bucket, object, uploadID, completeMultipartUpload{
|
||||
Parts: parts,
|
||||
})
|
||||
return res.ETag, err
|
||||
}
|
||||
|
||||
// CompleteMultipartUpload - Concatenate uploaded parts and commit to an object.
|
||||
func (c Core) CompleteMultipartUpload(bucket, object, uploadID string, parts []CompletePart) (string, error) {
|
||||
return c.CompleteMultipartUploadWithContext(context.Background(), bucket, object, uploadID, parts)
|
||||
}
|
||||
|
||||
// AbortMultipartUploadWithContext - Abort an incomplete upload.
|
||||
func (c Core) AbortMultipartUploadWithContext(ctx context.Context, bucket, object, uploadID string) error {
|
||||
return c.abortMultipartUpload(ctx, bucket, object, uploadID)
|
||||
}
|
||||
|
||||
// AbortMultipartUpload - Abort an incomplete upload.
|
||||
func (c Core) AbortMultipartUpload(bucket, object, uploadID string) error {
|
||||
return c.abortMultipartUpload(context.Background(), bucket, object, uploadID)
|
||||
return c.AbortMultipartUploadWithContext(context.Background(), bucket, object, uploadID)
|
||||
}
|
||||
|
||||
// GetBucketPolicy - fetches bucket access policy for a given bucket.
|
||||
@@ -139,15 +173,28 @@ func (c Core) PutBucketPolicy(bucket, bucketPolicy string) error {
|
||||
return c.putBucketPolicy(bucket, bucketPolicy)
|
||||
}
|
||||
|
||||
// GetObjectWithContext is a lower level API implemented to support reading
|
||||
// partial objects and also downloading objects with special conditions
|
||||
// matching etag, modtime etc.
|
||||
func (c Core) GetObjectWithContext(ctx context.Context, bucketName, objectName string, opts GetObjectOptions) (io.ReadCloser, ObjectInfo, error) {
|
||||
return c.getObject(ctx, bucketName, objectName, opts)
|
||||
}
|
||||
|
||||
// GetObject is a lower level API implemented to support reading
|
||||
// partial objects and also downloading objects with special conditions
|
||||
// matching etag, modtime etc.
|
||||
func (c Core) GetObject(bucketName, objectName string, opts GetObjectOptions) (io.ReadCloser, ObjectInfo, error) {
|
||||
return c.getObject(context.Background(), bucketName, objectName, opts)
|
||||
return c.GetObjectWithContext(context.Background(), bucketName, objectName, opts)
|
||||
}
|
||||
|
||||
// StatObjectWithContext is a lower level API implemented to support special
|
||||
// conditions matching etag, modtime on a request.
|
||||
func (c Core) StatObjectWithContext(ctx context.Context, bucketName, objectName string, opts StatObjectOptions) (ObjectInfo, error) {
|
||||
return c.statObject(ctx, bucketName, objectName, opts)
|
||||
}
|
||||
|
||||
// StatObject is a lower level API implemented to support special
|
||||
// conditions matching etag, modtime on a request.
|
||||
func (c Core) StatObject(bucketName, objectName string, opts StatObjectOptions) (ObjectInfo, error) {
|
||||
return c.statObject(context.Background(), bucketName, objectName, opts)
|
||||
return c.StatObjectWithContext(context.Background(), bucketName, objectName, opts)
|
||||
}
|
||||
186
vendor/github.com/minio/minio-go/functional_tests.go → vendor/github.com/minio/minio-go/v6/functional_tests.go
сгенерированный
поставляемый
186
vendor/github.com/minio/minio-go/functional_tests.go → vendor/github.com/minio/minio-go/v6/functional_tests.go
сгенерированный
поставляемый
@@ -40,10 +40,10 @@ import (
|
||||
"time"
|
||||
|
||||
humanize "github.com/dustin/go-humanize"
|
||||
minio "github.com/minio/minio-go"
|
||||
log "github.com/sirupsen/logrus"
|
||||
|
||||
"github.com/minio/minio-go/pkg/encrypt"
|
||||
"github.com/minio/minio-go/v6"
|
||||
"github.com/minio/minio-go/v6/pkg/encrypt"
|
||||
)
|
||||
|
||||
const letterBytes = "abcdefghijklmnopqrstuvwxyz01234569"
|
||||
@@ -184,9 +184,9 @@ func isErrNotImplemented(err error) bool {
|
||||
|
||||
func init() {
|
||||
// If server endpoint is not set, all tests default to
|
||||
// using https://play.min.io:9000
|
||||
// using https://play.min.io
|
||||
if os.Getenv(serverEndpoint) == "" {
|
||||
os.Setenv(serverEndpoint, "play.min.io:9000")
|
||||
os.Setenv(serverEndpoint, "play.min.io")
|
||||
os.Setenv(accessKey, "Q3AM3UQ867SPQQA43P2F")
|
||||
os.Setenv(secretKey, "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG")
|
||||
os.Setenv(enableHTTPS, "1")
|
||||
@@ -264,7 +264,7 @@ var dataFileMap = map[string]int{
|
||||
"datafile-5-MB": 5 * humanize.MiByte,
|
||||
"datafile-6-MB": 6 * humanize.MiByte,
|
||||
"datafile-11-MB": 11 * humanize.MiByte,
|
||||
"datafile-65-MB": 65 * humanize.MiByte,
|
||||
"datafile-129-MB": 129 * humanize.MiByte,
|
||||
}
|
||||
|
||||
func isFullMode() bool {
|
||||
@@ -531,8 +531,8 @@ func testPutObjectReadAt() {
|
||||
return
|
||||
}
|
||||
|
||||
bufSize := dataFileMap["datafile-65-MB"]
|
||||
var reader = getDataReader("datafile-65-MB")
|
||||
bufSize := dataFileMap["datafile-129-MB"]
|
||||
var reader = getDataReader("datafile-129-MB")
|
||||
defer reader.Close()
|
||||
|
||||
// Save the data
|
||||
@@ -641,8 +641,8 @@ func testPutObjectWithMetadata() {
|
||||
return
|
||||
}
|
||||
|
||||
bufSize := dataFileMap["datafile-65-MB"]
|
||||
var reader = getDataReader("datafile-65-MB")
|
||||
bufSize := dataFileMap["datafile-129-MB"]
|
||||
var reader = getDataReader("datafile-129-MB")
|
||||
defer reader.Close()
|
||||
|
||||
// Save the data
|
||||
@@ -1308,7 +1308,7 @@ func testFPutObjectMultipart() {
|
||||
}
|
||||
|
||||
// Upload 4 parts to utilize all 3 'workers' in multipart and still have a part to upload.
|
||||
var fileName = getMintDataDirFilePath("datafile-65-MB")
|
||||
var fileName = getMintDataDirFilePath("datafile-129-MB")
|
||||
if fileName == "" {
|
||||
// Make a temp file with minPartSize bytes of data.
|
||||
file, err := ioutil.TempFile(os.TempDir(), "FPutObjectTest")
|
||||
@@ -1317,7 +1317,7 @@ func testFPutObjectMultipart() {
|
||||
return
|
||||
}
|
||||
// Upload 2 parts to utilize all 3 'workers' in multipart and still have a part to upload.
|
||||
if _, err = io.Copy(file, getDataReader("datafile-65-MB")); err != nil {
|
||||
if _, err = io.Copy(file, getDataReader("datafile-129-MB")); err != nil {
|
||||
logError(testName, function, args, startTime, "", "Copy failed", err)
|
||||
return
|
||||
}
|
||||
@@ -1328,7 +1328,7 @@ func testFPutObjectMultipart() {
|
||||
fileName = file.Name()
|
||||
args["fileName"] = fileName
|
||||
}
|
||||
totalSize := dataFileMap["datafile-65-MB"]
|
||||
totalSize := dataFileMap["datafile-129-MB"]
|
||||
// Set base object name
|
||||
objectName := bucketName + "FPutObject" + "-standard"
|
||||
args["objectName"] = objectName
|
||||
@@ -1426,7 +1426,7 @@ func testFPutObject() {
|
||||
|
||||
// Upload 3 parts worth of data to use all 3 of multiparts 'workers' and have an extra part.
|
||||
// Use different data in part for multipart tests to check parts are uploaded in correct order.
|
||||
var fName = getMintDataDirFilePath("datafile-65-MB")
|
||||
var fName = getMintDataDirFilePath("datafile-129-MB")
|
||||
if fName == "" {
|
||||
// Make a temp file with minPartSize bytes of data.
|
||||
file, err := ioutil.TempFile(os.TempDir(), "FPutObjectTest")
|
||||
@@ -1436,7 +1436,7 @@ func testFPutObject() {
|
||||
}
|
||||
|
||||
// Upload 3 parts to utilize all 3 'workers' in multipart and still have a part to upload.
|
||||
if _, err = io.Copy(file, getDataReader("datafile-65-MB")); err != nil {
|
||||
if _, err = io.Copy(file, getDataReader("datafile-129-MB")); err != nil {
|
||||
logError(testName, function, args, startTime, "", "File copy failed", err)
|
||||
return
|
||||
}
|
||||
@@ -1448,7 +1448,7 @@ func testFPutObject() {
|
||||
defer os.Remove(file.Name())
|
||||
fName = file.Name()
|
||||
}
|
||||
totalSize := dataFileMap["datafile-65-MB"]
|
||||
totalSize := dataFileMap["datafile-129-MB"]
|
||||
|
||||
// Set base object name
|
||||
function = "FPutObject(bucketName, objectName, fileName, opts)"
|
||||
@@ -2226,6 +2226,133 @@ func testGetObjectReadAtFunctional() {
|
||||
successLogger(testName, function, args, startTime).Info()
|
||||
}
|
||||
|
||||
// Reproduces issue https://github.com/minio/minio-go/issues/1137
|
||||
func testGetObjectReadAtWhenEOFWasReached() {
|
||||
// initialize logging params
|
||||
startTime := time.Now()
|
||||
testName := getFuncName()
|
||||
function := "GetObject(bucketName, objectName)"
|
||||
args := map[string]interface{}{}
|
||||
|
||||
// Seed random based on current time.
|
||||
rand.Seed(time.Now().Unix())
|
||||
|
||||
// Instantiate new minio client object.
|
||||
c, err := minio.New(
|
||||
os.Getenv(serverEndpoint),
|
||||
os.Getenv(accessKey),
|
||||
os.Getenv(secretKey),
|
||||
mustParseBool(os.Getenv(enableHTTPS)),
|
||||
)
|
||||
if err != nil {
|
||||
logError(testName, function, args, startTime, "", "MinIO client object creation failed", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Enable tracing, write to stderr.
|
||||
// c.TraceOn(os.Stderr)
|
||||
|
||||
// Set user agent.
|
||||
c.SetAppInfo("MinIO-go-FunctionalTest", "0.1.0")
|
||||
|
||||
// Generate a new random bucket name.
|
||||
bucketName := randString(60, rand.NewSource(time.Now().UnixNano()), "minio-go-test-")
|
||||
args["bucketName"] = bucketName
|
||||
|
||||
// Make a new bucket.
|
||||
err = c.MakeBucket(bucketName, "us-east-1")
|
||||
if err != nil {
|
||||
logError(testName, function, args, startTime, "", "MakeBucket failed", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Generate 33K of data.
|
||||
bufSize := dataFileMap["datafile-33-kB"]
|
||||
var reader = getDataReader("datafile-33-kB")
|
||||
defer reader.Close()
|
||||
|
||||
objectName := randString(60, rand.NewSource(time.Now().UnixNano()), "")
|
||||
args["objectName"] = objectName
|
||||
|
||||
buf, err := ioutil.ReadAll(reader)
|
||||
if err != nil {
|
||||
logError(testName, function, args, startTime, "", "ReadAll failed", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Save the data
|
||||
n, err := c.PutObject(bucketName, objectName, bytes.NewReader(buf), int64(len(buf)), minio.PutObjectOptions{ContentType: "binary/octet-stream"})
|
||||
if err != nil {
|
||||
logError(testName, function, args, startTime, "", "PutObject failed", err)
|
||||
return
|
||||
}
|
||||
|
||||
if n != int64(bufSize) {
|
||||
logError(testName, function, args, startTime, "", "Number of bytes does not match, expected "+string(int64(bufSize))+", got "+string(n), err)
|
||||
return
|
||||
}
|
||||
|
||||
// read the data back
|
||||
r, err := c.GetObject(bucketName, objectName, minio.GetObjectOptions{})
|
||||
if err != nil {
|
||||
logError(testName, function, args, startTime, "", "PutObject failed", err)
|
||||
return
|
||||
}
|
||||
|
||||
// read directly
|
||||
buf1 := make([]byte, n)
|
||||
buf2 := make([]byte, 512)
|
||||
|
||||
m, err := r.Read(buf1)
|
||||
if err != nil {
|
||||
if err != io.EOF {
|
||||
logError(testName, function, args, startTime, "", "Read failed", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
if m != len(buf1) {
|
||||
logError(testName, function, args, startTime, "", "Read read shorter bytes before reaching EOF, expected "+string(len(buf1))+", got "+string(m), err)
|
||||
return
|
||||
}
|
||||
if !bytes.Equal(buf1, buf) {
|
||||
logError(testName, function, args, startTime, "", "Incorrect count of Read data", err)
|
||||
return
|
||||
}
|
||||
|
||||
st, err := r.Stat()
|
||||
if err != nil {
|
||||
logError(testName, function, args, startTime, "", "Stat failed", err)
|
||||
return
|
||||
}
|
||||
|
||||
if st.Size != int64(bufSize) {
|
||||
logError(testName, function, args, startTime, "", "Number of bytes in stat does not match, expected "+string(int64(bufSize))+", got "+string(st.Size), err)
|
||||
return
|
||||
}
|
||||
|
||||
m, err = r.ReadAt(buf2, 512)
|
||||
if err != nil {
|
||||
logError(testName, function, args, startTime, "", "ReadAt failed", err)
|
||||
return
|
||||
}
|
||||
if m != len(buf2) {
|
||||
logError(testName, function, args, startTime, "", "ReadAt read shorter bytes before reaching EOF, expected "+string(len(buf2))+", got "+string(m), err)
|
||||
return
|
||||
}
|
||||
if !bytes.Equal(buf2, buf[512:1024]) {
|
||||
logError(testName, function, args, startTime, "", "Incorrect count of ReadAt data", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Delete all objects and buckets
|
||||
if err = cleanupBucket(bucketName, c); err != nil {
|
||||
logError(testName, function, args, startTime, "", "Cleanup failed", err)
|
||||
return
|
||||
}
|
||||
|
||||
successLogger(testName, function, args, startTime).Info()
|
||||
}
|
||||
|
||||
// Test Presigned Post Policy
|
||||
func testPresignedPostPolicy() {
|
||||
// initialize logging params
|
||||
@@ -2706,9 +2833,9 @@ func testSSECEncryptedGetObjectReadSeekFunctional() {
|
||||
}
|
||||
}()
|
||||
|
||||
// Generate 65MiB of data.
|
||||
bufSize := dataFileMap["datafile-65-MB"]
|
||||
var reader = getDataReader("datafile-65-MB")
|
||||
// Generate 129MiB of data.
|
||||
bufSize := dataFileMap["datafile-129-MB"]
|
||||
var reader = getDataReader("datafile-129-MB")
|
||||
defer reader.Close()
|
||||
|
||||
objectName := randString(60, rand.NewSource(time.Now().UnixNano()), "")
|
||||
@@ -2894,9 +3021,9 @@ func testSSES3EncryptedGetObjectReadSeekFunctional() {
|
||||
}
|
||||
}()
|
||||
|
||||
// Generate 65MiB of data.
|
||||
bufSize := dataFileMap["datafile-65-MB"]
|
||||
var reader = getDataReader("datafile-65-MB")
|
||||
// Generate 129MiB of data.
|
||||
bufSize := dataFileMap["datafile-129-MB"]
|
||||
var reader = getDataReader("datafile-129-MB")
|
||||
defer reader.Close()
|
||||
|
||||
objectName := randString(60, rand.NewSource(time.Now().UnixNano()), "")
|
||||
@@ -3072,9 +3199,9 @@ func testSSECEncryptedGetObjectReadAtFunctional() {
|
||||
return
|
||||
}
|
||||
|
||||
// Generate 65MiB of data.
|
||||
bufSize := dataFileMap["datafile-65-MB"]
|
||||
var reader = getDataReader("datafile-65-MB")
|
||||
// Generate 129MiB of data.
|
||||
bufSize := dataFileMap["datafile-129-MB"]
|
||||
var reader = getDataReader("datafile-129-MB")
|
||||
defer reader.Close()
|
||||
|
||||
objectName := randString(60, rand.NewSource(time.Now().UnixNano()), "")
|
||||
@@ -3263,9 +3390,9 @@ func testSSES3EncryptedGetObjectReadAtFunctional() {
|
||||
return
|
||||
}
|
||||
|
||||
// Generate 65MiB of data.
|
||||
bufSize := dataFileMap["datafile-65-MB"]
|
||||
var reader = getDataReader("datafile-65-MB")
|
||||
// Generate 129MiB of data.
|
||||
bufSize := dataFileMap["datafile-129-MB"]
|
||||
var reader = getDataReader("datafile-129-MB")
|
||||
defer reader.Close()
|
||||
|
||||
objectName := randString(60, rand.NewSource(time.Now().UnixNano()), "")
|
||||
@@ -8561,8 +8688,8 @@ func testPutObjectNoLengthV2() {
|
||||
objectName := bucketName + "unique"
|
||||
args["objectName"] = objectName
|
||||
|
||||
bufSize := dataFileMap["datafile-65-MB"]
|
||||
var reader = getDataReader("datafile-65-MB")
|
||||
bufSize := dataFileMap["datafile-129-MB"]
|
||||
var reader = getDataReader("datafile-129-MB")
|
||||
defer reader.Close()
|
||||
args["size"] = bufSize
|
||||
|
||||
@@ -10004,6 +10131,7 @@ func main() {
|
||||
testFPutObject()
|
||||
testGetObjectReadSeekFunctional()
|
||||
testGetObjectReadAtFunctional()
|
||||
testGetObjectReadAtWhenEOFWasReached()
|
||||
testPresignedPostPolicy()
|
||||
testCopyObject()
|
||||
testComposeObjectErrorCases()
|
||||
16
vendor/github.com/minio/minio-go/v6/go.mod
сгенерированный
поставляемый
Обычный файл
16
vendor/github.com/minio/minio-go/v6/go.mod
сгенерированный
поставляемый
Обычный файл
@@ -0,0 +1,16 @@
|
||||
module github.com/minio/minio-go/v6
|
||||
|
||||
go 1.12
|
||||
|
||||
require (
|
||||
github.com/a8m/mark v0.1.1-0.20170507133748-44f2db618845 // indirect
|
||||
github.com/dustin/go-humanize v1.0.0 // indirect
|
||||
github.com/gernest/wow v0.1.0 // indirect
|
||||
github.com/minio/cli v1.20.0 // indirect
|
||||
github.com/mitchellh/go-homedir v1.1.0
|
||||
github.com/sirupsen/logrus v1.4.2 // indirect
|
||||
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a // indirect
|
||||
golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f
|
||||
golang.org/x/net v0.0.0-20190522155817-f3200d17e092
|
||||
gopkg.in/ini.v1 v1.42.0
|
||||
)
|
||||
48
vendor/github.com/minio/minio-go/v6/go.sum
сгенерированный
поставляемый
Обычный файл
48
vendor/github.com/minio/minio-go/v6/go.sum
сгенерированный
поставляемый
Обычный файл
@@ -0,0 +1,48 @@
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/a8m/mark v0.1.1-0.20170507133748-44f2db618845 h1:hIjQrEARcc9LcH8igte3JBpWBZ7+SpinU70dOjU/afo=
|
||||
github.com/a8m/mark v0.1.1-0.20170507133748-44f2db618845/go.mod h1:c8Mh99Cw82nrsAnPgxQSZHkswVOJF7/MqZb1ZdvriLM=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
|
||||
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
||||
github.com/gernest/wow v0.1.0 h1:g9xdwCwP0+xgVYlA2sopI0gZHqXe7HjI/7/LykG4fks=
|
||||
github.com/gernest/wow v0.1.0/go.mod h1:dEPabJRi5BneI1Nev1VWo0ZlcTWibHWp43qxKms4elY=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
|
||||
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/minio/cli v1.20.0 h1:OVNIt8Rg5+mpYb8siWT2gBV5hvUyFbRvBikC+Ytvf5A=
|
||||
github.com/minio/cli v1.20.0/go.mod h1:bYxnK0uS629N3Bq+AOZZ+6lwF77Sodk4+UL9vNuXhOY=
|
||||
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4=
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a h1:pa8hGb/2YqsZKovtsgrwcDH1RZhVbTKCjLp47XpqCDs=
|
||||
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f h1:R423Cnkcp5JABoeemiGEPlt9tHXFfw5kvc0yqlxRPWo=
|
||||
golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190522155817-f3200d17e092 h1:4QSRKanuywn15aTZvI/mIDEgPQpswuFndXpOj3rKEco=
|
||||
golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||
golang.org/x/sys v0.0.0-20190116161447-11f53e031339/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894 h1:Cz4ceDQGXuKRnVBDTS23GTn/pU5OE2C0WrNTOYK1Uuc=
|
||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/ini.v1 v1.42.0 h1:7N3gPTt50s8GuLortA00n8AqRTk75qOP98+mTPpgzRk=
|
||||
gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
0
vendor/github.com/minio/minio-go/hook-reader.go → vendor/github.com/minio/minio-go/v6/hook-reader.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/hook-reader.go → vendor/github.com/minio/minio-go/v6/hook-reader.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/pkg/credentials/chain.go → vendor/github.com/minio/minio-go/v6/pkg/credentials/chain.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/pkg/credentials/chain.go → vendor/github.com/minio/minio-go/v6/pkg/credentials/chain.go
сгенерированный
поставляемый
@@ -2,7 +2,7 @@
|
||||
"version": "8",
|
||||
"hosts": {
|
||||
"play": {
|
||||
"url": "https://play.min.io:9000",
|
||||
"url": "https://play.min.io",
|
||||
"accessKey": "Q3AM3UQ867SPQQA43P2F",
|
||||
"secretKey": "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG",
|
||||
"api": "S3v2"
|
||||
0
vendor/github.com/minio/minio-go/pkg/credentials/doc.go → vendor/github.com/minio/minio-go/v6/pkg/credentials/doc.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/pkg/credentials/doc.go → vendor/github.com/minio/minio-go/v6/pkg/credentials/doc.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/pkg/credentials/env_aws.go → vendor/github.com/minio/minio-go/v6/pkg/credentials/env_aws.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/pkg/credentials/env_aws.go → vendor/github.com/minio/minio-go/v6/pkg/credentials/env_aws.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/pkg/credentials/iam_aws.go → vendor/github.com/minio/minio-go/v6/pkg/credentials/iam_aws.go
сгенерированный
поставляемый
2
vendor/github.com/minio/minio-go/pkg/credentials/iam_aws.go → vendor/github.com/minio/minio-go/v6/pkg/credentials/iam_aws.go
сгенерированный
поставляемый
@@ -53,7 +53,7 @@ type IAM struct {
|
||||
const (
|
||||
defaultIAMRoleEndpoint = "http://169.254.169.254"
|
||||
defaultECSRoleEndpoint = "http://169.254.170.2"
|
||||
defaultIAMSecurityCredsPath = "/latest/meta-data/iam/security-credentials"
|
||||
defaultIAMSecurityCredsPath = "/latest/meta-data/iam/security-credentials/"
|
||||
)
|
||||
|
||||
// https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html
|
||||
0
vendor/github.com/minio/minio-go/pkg/credentials/static.go → vendor/github.com/minio/minio-go/v6/pkg/credentials/static.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/pkg/credentials/static.go → vendor/github.com/minio/minio-go/v6/pkg/credentials/static.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/pkg/encrypt/server-side.go → vendor/github.com/minio/minio-go/v6/pkg/encrypt/server-side.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/pkg/encrypt/server-side.go → vendor/github.com/minio/minio-go/v6/pkg/encrypt/server-side.go
сгенерированный
поставляемый
@@ -285,7 +285,7 @@ func (s *StreamingReader) Read(buf []byte) (int, error) {
|
||||
// bytes read from baseReader different than
|
||||
// content length provided.
|
||||
if s.bytesRead != s.contentLen {
|
||||
return 0, io.ErrUnexpectedEOF
|
||||
return 0, fmt.Errorf("http: ContentLength=%d with Body length %d", s.contentLen, s.bytesRead)
|
||||
}
|
||||
|
||||
// Sign the chunk and write it to s.buf.
|
||||
@@ -30,7 +30,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// Signature and API related constants.
|
||||
@@ -26,7 +26,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// Signature and API related constants.
|
||||
0
vendor/github.com/minio/minio-go/pkg/s3signer/utils.go → vendor/github.com/minio/minio-go/v6/pkg/s3signer/utils.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/pkg/s3signer/utils.go → vendor/github.com/minio/minio-go/v6/pkg/s3signer/utils.go
сгенерированный
поставляемый
6
vendor/github.com/minio/minio-go/pkg/s3utils/utils.go → vendor/github.com/minio/minio-go/v6/pkg/s3utils/utils.go
сгенерированный
поставляемый
6
vendor/github.com/minio/minio-go/pkg/s3utils/utils.go → vendor/github.com/minio/minio-go/v6/pkg/s3utils/utils.go
сгенерированный
поставляемый
@@ -47,8 +47,8 @@ func IsValidDomain(host string) bool {
|
||||
if host[len(host)-1:] == "_" || host[:1] == "_" {
|
||||
return false
|
||||
}
|
||||
// host cannot start or end with a "."
|
||||
if host[len(host)-1:] == "." || host[:1] == "." {
|
||||
// host cannot start with a "."
|
||||
if host[:1] == "." {
|
||||
return false
|
||||
}
|
||||
// All non alphanumeric characters are invalid.
|
||||
@@ -282,7 +282,7 @@ func checkBucketNameCommon(bucketName string, strict bool) (err error) {
|
||||
if ipAddress.MatchString(bucketName) {
|
||||
return errors.New("Bucket name cannot be an ip address")
|
||||
}
|
||||
if strings.Contains(bucketName, "..") {
|
||||
if strings.Contains(bucketName, "..") || strings.Contains(bucketName, ".-") || strings.Contains(bucketName, "-.") {
|
||||
return errors.New("Bucket name contains invalid characters")
|
||||
}
|
||||
if strict {
|
||||
0
vendor/github.com/minio/minio-go/pkg/set/stringset.go → vendor/github.com/minio/minio-go/v6/pkg/set/stringset.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/pkg/set/stringset.go → vendor/github.com/minio/minio-go/v6/pkg/set/stringset.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/post-policy.go → vendor/github.com/minio/minio-go/v6/post-policy.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/post-policy.go → vendor/github.com/minio/minio-go/v6/post-policy.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/retry-continous.go → vendor/github.com/minio/minio-go/v6/retry-continous.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/retry-continous.go → vendor/github.com/minio/minio-go/v6/retry-continous.go
сгенерированный
поставляемый
4
vendor/github.com/minio/minio-go/retry.go → vendor/github.com/minio/minio-go/v6/retry.go
сгенерированный
поставляемый
4
vendor/github.com/minio/minio-go/retry.go → vendor/github.com/minio/minio-go/v6/retry.go
сгенерированный
поставляемый
@@ -111,6 +111,9 @@ func isHTTPReqErrorRetryable(err error) bool {
|
||||
} else if strings.Contains(err.Error(), "net/http: HTTP/1.x transport connection broken") {
|
||||
// If error is transport connection broken, retry.
|
||||
return true
|
||||
} else if strings.Contains(err.Error(), "net/http: timeout awaiting response headers") {
|
||||
// Retry errors due to server not sending the response before timeout
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
@@ -143,6 +146,7 @@ var retryableHTTPStatusCodes = map[int]struct{}{
|
||||
http.StatusInternalServerError: {},
|
||||
http.StatusBadGateway: {},
|
||||
http.StatusServiceUnavailable: {},
|
||||
http.StatusGatewayTimeout: {},
|
||||
// Add more HTTP status codes here.
|
||||
}
|
||||
|
||||
1
vendor/github.com/minio/minio-go/s3-endpoints.go → vendor/github.com/minio/minio-go/v6/s3-endpoints.go
сгенерированный
поставляемый
1
vendor/github.com/minio/minio-go/s3-endpoints.go → vendor/github.com/minio/minio-go/v6/s3-endpoints.go
сгенерированный
поставляемый
@@ -29,6 +29,7 @@ var awsS3EndpointMap = map[string]string{
|
||||
"eu-west-3": "s3.dualstack.eu-west-3.amazonaws.com",
|
||||
"eu-central-1": "s3.dualstack.eu-central-1.amazonaws.com",
|
||||
"eu-north-1": "s3.dualstack.eu-north-1.amazonaws.com",
|
||||
"ap-east-1": "s3.dualstack.ap-east-1.amazonaws.com",
|
||||
"ap-south-1": "s3.dualstack.ap-south-1.amazonaws.com",
|
||||
"ap-southeast-1": "s3.dualstack.ap-southeast-1.amazonaws.com",
|
||||
"ap-southeast-2": "s3.dualstack.ap-southeast-2.amazonaws.com",
|
||||
0
vendor/github.com/minio/minio-go/s3-error.go → vendor/github.com/minio/minio-go/v6/s3-error.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/s3-error.go → vendor/github.com/minio/minio-go/v6/s3-error.go
сгенерированный
поставляемый
1
vendor/github.com/minio/minio-go/v6/staticcheck.conf
сгенерированный
поставляемый
Обычный файл
1
vendor/github.com/minio/minio-go/v6/staticcheck.conf
сгенерированный
поставляемый
Обычный файл
@@ -0,0 +1 @@
|
||||
checks = ["all", "-ST1005", "-ST1017", "-SA9004", "-ST1000", "-S1021"]
|
||||
0
vendor/github.com/minio/minio-go/transport.go → vendor/github.com/minio/minio-go/v6/transport.go
сгенерированный
поставляемый
0
vendor/github.com/minio/minio-go/transport.go → vendor/github.com/minio/minio-go/v6/transport.go
сгенерированный
поставляемый
4
vendor/github.com/minio/minio-go/utils.go → vendor/github.com/minio/minio-go/v6/utils.go
сгенерированный
поставляемый
4
vendor/github.com/minio/minio-go/utils.go → vendor/github.com/minio/minio-go/v6/utils.go
сгенерированный
поставляемый
@@ -32,7 +32,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/minio/minio-go/pkg/s3utils"
|
||||
"github.com/minio/minio-go/v6/pkg/s3utils"
|
||||
)
|
||||
|
||||
// xmlDecoder provide decoded value in xml.
|
||||
@@ -229,7 +229,7 @@ var supportedHeaders = []string{
|
||||
|
||||
// isStorageClassHeader returns true if the header is a supported storage class header
|
||||
func isStorageClassHeader(headerKey string) bool {
|
||||
return strings.ToLower(amzStorageClass) == strings.ToLower(headerKey)
|
||||
return strings.EqualFold(amzStorageClass, headerKey)
|
||||
}
|
||||
|
||||
// isStandardHeader returns true if header is a supported header and not a custom header
|
||||
Ссылка в новой задаче
Block a user