Guest User

Untitled

a guest
Oct 20th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "bytes"
  5. "fmt"
  6. "io"
  7. "log"
  8. "os"
  9.  
  10. "github.com/cheggaaa/pb"
  11. minio "github.com/minio/minio-go"
  12. )
  13.  
  14. func main() {
  15. s3Client, err := minio.New("play.minio.io:9000", "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG", true)
  16. if err != nil {
  17. log.Fatalln(err)
  18. }
  19.  
  20. var (
  21. totalParts = 10000
  22. partSize = int64(10 * 1024 * 1024)
  23. i = 0
  24. )
  25. var srcs = make([]minio.SourceInfo, 10000)
  26.  
  27. progress := pb.New64(-1)
  28. progress.Start()
  29.  
  30. var buf = make([]byte, partSize)
  31. for i < totalParts {
  32. length, rErr := io.ReadFull(os.Stdin, buf)
  33. if rErr == io.EOF && i > 1 {
  34. break
  35. }
  36. if rErr != nil && rErr != io.ErrUnexpectedEOF {
  37. log.Fatalln(rErr)
  38. }
  39.  
  40. s3Client.TraceOn(os.Stdout)
  41. if _, err = s3Client.PutObject("testbucket", fmt.Sprintf("parts/%d", i), bytes.NewReader(buf[:length]), int64(len(buf[:length])),
  42. minio.PutObjectOptions{
  43. Progress: progress,
  44. }); err != nil {
  45. log.Fatalln(err)
  46. }
  47.  
  48. // Source objects to concatenate.
  49. srcs[i] = minio.NewSourceInfo("testbucket", fmt.Sprintf("parts/%d", i), nil)
  50. i++
  51. }
  52.  
  53. // Create destination info
  54. dst, err := minio.NewDestinationInfo("testbucket", "final-object", nil, nil)
  55. if err != nil {
  56. log.Fatalln(err)
  57. }
  58.  
  59. if err = s3Client.ComposeObject(dst, srcs[:i]); err != nil {
  60. log.Fatalln(err)
  61. }
  62.  
  63. objectsCh := make(chan string)
  64.  
  65. // Send object names that are needed to be removed to objectsCh
  66. go func() {
  67. defer close(objectsCh)
  68. for j := 0; j < i+1; j++ {
  69. objectsCh <- fmt.Sprintf("parts/%d", j)
  70. }
  71. }()
  72.  
  73. // Call RemoveObjects API
  74. for e := range s3Client.RemoveObjects("my-bucketname", objectsCh) {
  75. log.Fatalln("Failed to remove " + e.ObjectName + ", error: " + e.Err.Error())
  76. }
  77.  
  78. }
Add Comment
Please, Sign In to add comment