Using pipe instead of temp file

This commit is contained in:
2020-08-16 20:03:56 +03:00
parent 3df61f1670
commit 2f652ca26a

34
main.go
View File

@@ -1,10 +1,9 @@
package main package main
import ( import (
"bytes"
"context" "context"
"fmt" "fmt"
"os"
"os/exec" "os/exec"
"log" "log"
@@ -13,8 +12,6 @@ import (
"github.com/minio/minio-go/v7/pkg/notification" "github.com/minio/minio-go/v7/pkg/notification"
) )
const TMP_FILE = "_tmp_out"
func processEncryption( func processEncryption(
config *AppConfig, config *AppConfig,
internalMinio *minio.Client, internalMinio *minio.Client,
@@ -55,40 +52,31 @@ func processEncryption(
cmd := exec.Command("gpg", "--encrypt", "--recipient-file", ENCRYPT_KEY_PATH) cmd := exec.Command("gpg", "--encrypt", "--recipient-file", ENCRYPT_KEY_PATH)
cmd.Stdin = objectReader cmd.Stdin = objectReader
var out bytes.Buffer stdout, err := cmd.StdoutPipe()
cmd.Stdout = &out
err = cmd.Run()
if err != nil { if err != nil {
log.Fatalln(err) log.Fatalln(err)
} }
if err = cmd.Start(); err != nil {
f, err := os.Create(TMP_FILE)
if err != nil {
log.Fatalln(err) log.Fatalln(err)
} }
defer f.Close() uploadInfo, err_put := targetMinio.PutObject(
f.Write(out.Bytes())
tmp_file, err := os.Open(TMP_FILE)
if err != nil {
log.Fatalln(err)
}
defer tmp_file.Close()
defer os.Remove(TMP_FILE)
uploadInfo, err := targetMinio.PutObject(
context.Background(), context.Background(),
bucket, bucket,
name+".gpg", name+".gpg",
tmp_file, stdout,
-1, -1,
minio.PutObjectOptions{ minio.PutObjectOptions{
ContentType: "application/octet-stream", ContentType: "application/octet-stream",
UserMetadata: map[string]string{"gpg": "true"}, UserMetadata: map[string]string{"gpg": "true"},
}, },
) )
if err != nil {
if err = cmd.Wait(); err != nil {
return err
}
if err_put != nil {
fmt.Println(err) fmt.Println(err)
return nil return nil
} }