github.com/kubri/kubri@v0.5.1-0.20240317001612-bda2aaef967e/source/s3/s3.go (about)

     1  package s3
     2  
     3  import (
     4  	"net/url"
     5  
     6  	_ "gocloud.dev/blob/s3blob" // blob driver
     7  
     8  	"github.com/kubri/kubri/internal/blob"
     9  	"github.com/kubri/kubri/source"
    10  )
    11  
    12  type Config struct {
    13  	Bucket     string
    14  	Folder     string
    15  	Endpoint   string
    16  	Region     string
    17  	DisableSSL bool
    18  	URL        string
    19  }
    20  
    21  func New(c Config) (*source.Source, error) {
    22  	q := url.Values{}
    23  	if c.Region != "" {
    24  		q.Add("region", c.Region)
    25  	}
    26  	if c.DisableSSL {
    27  		q.Add("disableSSL", "true")
    28  	}
    29  	if c.Endpoint != "" {
    30  		q.Add("endpoint", c.Endpoint)
    31  		q.Add("s3ForcePathStyle", "true")
    32  	}
    33  	return blob.NewSource("s3://"+c.Bucket+"?"+q.Encode(), c.Folder, c.URL)
    34  }