本文整理汇总了Golang中github.com/rlmcpherson/s3gof3r.Config.Concurrency方法的典型用法代码示例。如果您正苦于以下问题:Golang Config.Concurrency方法的具体用法?Golang Config.Concurrency怎么用?Golang Config.Concurrency使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/rlmcpherson/s3gof3r.Config
的用法示例。
在下文中一共展示了Config.Concurrency方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Execute
func (cp *cpOpts) Execute(args []string) (err error) {
k, err := getAWSKeys()
if err != nil {
return
}
conf := new(s3gof3r.Config)
*conf = *s3gof3r.DefaultConfig
s3 := s3gof3r.New(cp.EndPoint, k)
conf.Concurrency = cp.Concurrency
if cp.NoSSL {
conf.Scheme = "http"
}
conf.PartSize = cp.PartSize
conf.Md5Check = !cp.NoMd5
s3gof3r.SetLogger(os.Stderr, "", log.LstdFlags, cp.Debug)
src, err := func(src string) (io.ReadCloser, error) {
u, err := url.Parse(src)
if err != nil {
return nil, fmt.Errorf("parse error: %s", err)
}
if u.Host == "" {
return os.Open(u.Path)
}
r, _, err := s3.Bucket(u.Host).GetReader(u.Path, conf)
return r, err
}(cp.Source)
if err != nil {
return
}
dst, err := func(dst string) (io.WriteCloser, error) {
u, err := url.Parse(dst)
if err != nil {
return nil, fmt.Errorf("parse error: %s", err)
}
if u.Host == "" {
return os.Create(u.Path)
}
return s3.Bucket(u.Host).PutWriter(u.Path, ACL(cp.Header, cp.ACL), conf)
}(cp.Dest)
if err != nil {
return
}
if _, err = io.Copy(dst, src); err != nil {
return
}
if err = src.Close(); err != nil {
return
}
return dst.Close()
}
示例2: GetS3Config
func (s *S3) GetS3Config() (*s3gof3r.Config, *s3gof3r.Keys) {
conf := new(s3gof3r.Config)
*conf = *s3gof3r.DefaultConfig
keys := new(s3gof3r.Keys)
keys.AccessKey = s.config.S3Config.Key
keys.SecretKey = s.config.S3Config.Secret
conf.Concurrency = 10
return conf, keys
}
示例3: Execute
func (cp *cpOpts) Execute(args []string) (err error) {
k, err := getAWSKeys()
if err != nil {
return
}
conf := new(s3gof3r.Config)
*conf = *s3gof3r.DefaultConfig
s3 := s3gof3r.New(cp.EndPoint, k)
conf.Concurrency = cp.Concurrency
if cp.NoSSL {
conf.Scheme = "http"
}
conf.PartSize = cp.PartSize
conf.Md5Check = !cp.NoMd5
conf.NTry = cp.NTry
s3gof3r.SetLogger(os.Stderr, "", log.LstdFlags, cp.Debug)
src, err := func(src string) (io.ReadCloser, error) {
if !strings.HasPrefix(strings.ToLower(src), "s3") {
return os.Open(src)
}
u, err := url.ParseRequestURI(src)
if err != nil {
return nil, fmt.Errorf("parse error: %s", err)
}
r, _, err := s3.Bucket(u.Host).GetReader(u.Path, conf)
return r, err
}(cp.Source)
if err != nil {
return
}
defer checkClose(src, err)
dst, err := func(dst string) (io.WriteCloser, error) {
if !strings.HasPrefix(strings.ToLower(dst), "s3") {
return os.Create(dst)
}
u, err := url.ParseRequestURI(dst)
if err != nil {
return nil, fmt.Errorf("parse error: %s", err)
}
return s3.Bucket(u.Host).PutWriter(u.Path, ACL(cp.Header, cp.ACL), conf)
}(cp.Dest)
if err != nil {
return
}
defer checkClose(dst, err)
_, err = io.Copy(dst, src)
return
}
示例4: Execute
func (get *getOpts) Execute(args []string) (err error) {
conf := new(s3gof3r.Config)
*conf = *s3gof3r.DefaultConfig
k, err := getAWSKeys()
if err != nil {
return
}
s3 := s3gof3r.New(get.EndPoint, k)
b := s3.Bucket(get.Bucket)
conf.Concurrency = get.Concurrency
if get.NoSSL {
conf.Scheme = "http"
}
conf.PartSize = get.PartSize
conf.Md5Check = !get.NoMd5
s3gof3r.SetLogger(os.Stderr, "", log.LstdFlags, get.Debug)
if get.VersionID != "" {
get.Key = fmt.Sprintf("%s?versionId=%s", get.Key, get.VersionID)
}
w, err := os.Create(get.Path)
if err != nil {
if get.Path == "" {
w = os.Stdout
} else {
return
}
}
defer w.Close()
r, header, err := b.GetReader(get.Key, conf)
if err != nil {
return
}
if _, err = io.Copy(w, r); err != nil {
return
}
if err = r.Close(); err != nil {
return
}
if get.Debug {
log.Println("Headers: ", header)
}
return
}
示例5: Execute
func (get *Get) Execute(args []string) (err error) {
conf := new(s3gof3r.Config)
*conf = *s3gof3r.DefaultConfig
k, err := getAWSKeys()
if err != nil {
return
}
s3 := s3gof3r.New(get.EndPoint, k)
b := s3.Bucket(get.Bucket)
if get.Concurrency > 0 {
conf.Concurrency = get.Concurrency
}
conf.PartSize = get.PartSize
conf.Md5Check = !get.CheckDisable
get.Key = url.QueryEscape(get.Key)
if get.VersionId != "" {
get.Key = fmt.Sprintf("%s?versionId=%s", get.Key, get.VersionId)
}
log.Println("GET: ", get)
w, err := os.Create(get.Path)
if err != nil {
if get.Path == "" {
w = os.Stdout
} else {
return
}
}
defer w.Close()
r, header, err := b.GetReader(get.Key, conf)
if err != nil {
return
}
if _, err = io.Copy(w, r); err != nil {
return
}
if err = r.Close(); err != nil {
return
}
log.Println("Headers: ", header)
if get.Debug {
debug()
}
return
}
示例6: Execute
func (put *Put) Execute(args []string) (err error) {
conf := new(s3gof3r.Config)
*conf = *s3gof3r.DefaultConfig
k, err := getAWSKeys()
if err != nil {
return
}
s3 := s3gof3r.New(put.EndPoint, k)
b := s3.Bucket(put.Bucket)
if put.Concurrency > 0 {
conf.Concurrency = put.Concurrency
}
conf.PartSize = put.PartSize
conf.Md5Check = !put.CheckDisable
log.Println(put)
if put.Header == nil {
put.Header = make(http.Header)
}
r, err := os.Open(put.Path)
if err != nil {
if put.Path == "" {
r = os.Stdin
} else {
return
}
}
defer r.Close()
w, err := b.PutWriter(put.Key, put.Header, conf)
if err != nil {
return
}
if _, err = io.Copy(w, r); err != nil {
return
}
if err = w.Close(); err != nil {
return
}
if put.Debug {
debug()
}
return
}
示例7: Execute
func (put *putOpts) Execute(args []string) (err error) {
conf := new(s3gof3r.Config)
*conf = *s3gof3r.DefaultConfig
k, err := getAWSKeys()
if err != nil {
return
}
s3 := s3gof3r.New(put.EndPoint, k)
b := s3.Bucket(put.Bucket)
conf.Concurrency = put.Concurrency
if put.NoSSL {
conf.Scheme = "http"
}
conf.PartSize = put.PartSize
conf.Md5Check = !put.NoMd5
s3gof3r.SetLogger(os.Stderr, "", log.LstdFlags, put.Debug)
if put.Header == nil {
put.Header = make(http.Header)
}
r, err := os.Open(put.Path)
if err != nil {
if put.Path == "" {
r = os.Stdin
} else {
return
}
}
defer r.Close()
w, err := b.PutWriter(put.Key, put.Header, conf)
if err != nil {
return
}
if _, err = io.Copy(w, r); err != nil {
return
}
if err = w.Close(); err != nil {
return
}
return
}
示例8: Execute
func (cp *cpOpts) Execute(args []string) (err error) {
k, err := getAWSKeys()
if err != nil {
return
}
conf := new(s3gof3r.Config)
*conf = *s3gof3r.DefaultConfig
s3 := s3gof3r.New(cp.EndPoint, k)
conf.Concurrency = cp.Concurrency
if cp.NoSSL {
conf.Scheme = "http"
}
conf.PartSize = cp.PartSize
conf.Md5Check = !cp.NoMd5
s3gof3r.SetLogger(os.Stderr, "", log.LstdFlags, cp.Debug)
// parse positional cp args
if len(args) != 2 {
return fmt.Errorf("cp: source and destination arguments required")
}
var urls [2]*url.URL
for i, a := range args {
urls[i], err = url.Parse(a)
if err != nil {
return fmt.Errorf("parse error: %s", err)
}
if urls[i].Host != "" && urls[i].Scheme != "s3" {
return fmt.Errorf("parse error: %s", urls[i].String())
}
}
src, err := func(src *url.URL) (io.ReadCloser, error) {
if src.Host == "" {
return os.Open(src.Path)
}
r, _, err := s3.Bucket(src.Host).GetReader(src.Path, conf)
return r, err
}(urls[0])
if err != nil {
return
}
dst, err := func(dst *url.URL) (io.WriteCloser, error) {
if dst.Host == "" {
return os.Create(dst.Path)
}
return s3.Bucket(dst.Host).PutWriter(dst.Path, cp.Header, conf)
}(urls[1])
if err != nil {
return
}
if _, err = io.Copy(dst, src); err != nil {
return
}
if err = src.Close(); err != nil {
return
}
if err = dst.Close(); err != nil {
return
}
return
}