Procházet zdrojové kódy

Add CLI Flag and update Function Flow

tags/v1.0.0
Stefan Benten před 5 roky
rodič
revize
7be8c21044
2 změnil soubory, kde provedl 20 přidání a 16 odebrání
  1. +6
    -4
      cmd/cmd.go
  2. +14
    -12
      server/storage.go

+ 6
- 4
cmd/cmd.go Zobrazit soubor

@@ -2,15 +2,13 @@ package cmd


import ( import (
"fmt" "fmt"
"log"
"os" "os"

"strings" "strings"


"github.com/dutchcoders/transfer.sh/server" "github.com/dutchcoders/transfer.sh/server"
"github.com/fatih/color" "github.com/fatih/color"
"github.com/minio/cli" "github.com/minio/cli"
"log"
"google.golang.org/api/googleapi" "google.golang.org/api/googleapi"
) )


@@ -117,6 +115,10 @@ var globalFlags = []cli.Flag{
Value: "", Value: "",
EnvVar: "BUCKET", EnvVar: "BUCKET",
}, },
cli.BoolFlag{
Name: "no-multipart",
Usage: "Disables Multipart Puts",
},
cli.StringFlag{ cli.StringFlag{
Name: "gdrive-client-json-filepath", Name: "gdrive-client-json-filepath",
Usage: "", Usage: "",
@@ -294,7 +296,7 @@ func New() *Cmd {
panic("secret-key not set.") panic("secret-key not set.")
} else if bucket := c.String("bucket"); bucket == "" { } else if bucket := c.String("bucket"); bucket == "" {
panic("bucket not set.") panic("bucket not set.")
} else if storage, err := server.NewS3Storage(accessKey, secretKey, bucket, c.String("s3-endpoint"), logger); err != nil {
} else if storage, err := server.NewS3Storage(accessKey, secretKey, bucket, c.String("s3-endpoint"), logger, c.Bool("no-multipart")); err != nil {
panic(err) panic(err)
} else { } else {
options = append(options, server.UseStorage(storage)) options = append(options, server.UseStorage(storage))


+ 14
- 12
server/storage.go Zobrazit soubor

@@ -2,32 +2,30 @@ package server


import ( import (
"bytes" "bytes"
"encoding/json"
"fmt" "fmt"
"io" "io"
"io/ioutil"
"log" "log"
"mime" "mime"
"net/http"
"os" "os"
"path/filepath" "path/filepath"
"strconv" "strconv"
"strings"
"sync" "sync"


"encoding/json"
"github.com/goamz/goamz/s3" "github.com/goamz/goamz/s3"

"golang.org/x/net/context" "golang.org/x/net/context"
"golang.org/x/oauth2" "golang.org/x/oauth2"
"golang.org/x/oauth2/google" "golang.org/x/oauth2/google"
"google.golang.org/api/drive/v3" "google.golang.org/api/drive/v3"
"google.golang.org/api/googleapi" "google.golang.org/api/googleapi"
"io/ioutil"
"net/http"
"strings"
) )


type Storage interface { type Storage interface {
Get(token string, filename string) (reader io.ReadCloser, contentType string, contentLength uint64, err error) Get(token string, filename string) (reader io.ReadCloser, contentType string, contentLength uint64, err error)
Head(token string, filename string) (contentType string, contentLength uint64, err error) Head(token string, filename string) (contentType string, contentLength uint64, err error)
PutMulti(token string, filename string, reader io.Reader, contentType string, contentLength uint64) error
Put(token string, filename string, reader io.Reader, contentType string, contentLength uint64) error Put(token string, filename string, reader io.Reader, contentType string, contentLength uint64) error
Delete(token string, filename string) error Delete(token string, filename string) error
IsNotExist(err error) bool IsNotExist(err error) bool
@@ -126,17 +124,18 @@ func (s *LocalStorage) Put(token string, filename string, reader io.Reader, cont


type S3Storage struct { type S3Storage struct {
Storage Storage
bucket *s3.Bucket
logger *log.Logger
bucket *s3.Bucket
logger *log.Logger
noMultipart bool
} }


func NewS3Storage(accessKey, secretKey, bucketName, endpoint string, logger *log.Logger) (*S3Storage, error) {
func NewS3Storage(accessKey, secretKey, bucketName, endpoint string, logger *log.Logger, multipart bool) (*S3Storage, error) {
bucket, err := getBucket(accessKey, secretKey, bucketName, endpoint) bucket, err := getBucket(accessKey, secretKey, bucketName, endpoint)
if err != nil { if err != nil {
return nil, err return nil, err
} }


return &S3Storage{bucket: bucket, logger: logger}, nil
return &S3Storage{bucket: bucket, logger: logger, noMultipart: multipart}, nil
} }


func (s *S3Storage) Type() string { func (s *S3Storage) Type() string {
@@ -320,8 +319,11 @@ func (s *S3Storage) Put(token string, filename string, reader io.Reader, content
key := fmt.Sprintf("%s/%s", token, filename) key := fmt.Sprintf("%s/%s", token, filename)


s.logger.Printf("Uploading file %s to S3 Bucket", filename) s.logger.Printf("Uploading file %s to S3 Bucket", filename)

err = s.bucket.PutReader(key, reader, contentType, s3.Private, s3.Options{})
if s.noMultipart {
err = s.PutMulti(token, filename, reader, contentType, contentLength)
} else {
err = s.bucket.PutReader(key, reader, int64(contentLength), contentType, s3.Private, s3.Options{})
}


if err != nil { if err != nil {
return return


Načítá se…
Zrušit
Uložit