"Fossies" - the Fresh Open Source Software Archive

Member "gdrive-2.1.1/drive/import.go" (28 May 2021, 1164 Bytes) of package /linux/misc/gdrive-2.1.1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Go source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 package drive
    2 
    3 import (
    4     "fmt"
    5     "io"
    6     "io/ioutil"
    7     "mime"
    8     "path/filepath"
    9     "strings"
   10 )
   11 
   12 type ImportArgs struct {
   13     Out      io.Writer
   14     Mime     string
   15     Progress io.Writer
   16     Path     string
   17     Parents  []string
   18 }
   19 
   20 func (self *Drive) Import(args ImportArgs) error {
   21     fromMime := args.Mime
   22     if fromMime == "" {
   23         fromMime = getMimeType(args.Path)
   24     }
   25     if fromMime == "" {
   26         return fmt.Errorf("Could not determine mime type of file, use --mime")
   27     }
   28 
   29     about, err := self.service.About.Get().Fields("importFormats").Do()
   30     if err != nil {
   31         return fmt.Errorf("Failed to get about: %s", err)
   32     }
   33 
   34     toMimes, ok := about.ImportFormats[fromMime]
   35     if !ok || len(toMimes) == 0 {
   36         return fmt.Errorf("Mime type '%s' is not supported for import", fromMime)
   37     }
   38 
   39     f, _, err := self.uploadFile(UploadArgs{
   40         Out:      ioutil.Discard,
   41         Progress: args.Progress,
   42         Path:     args.Path,
   43         Parents:  args.Parents,
   44         Mime:     toMimes[0],
   45     })
   46     if err != nil {
   47         return err
   48     }
   49 
   50     fmt.Fprintf(args.Out, "Imported %s with mime type: '%s'\n", f.Id, toMimes[0])
   51     return nil
   52 }
   53 
   54 func getMimeType(path string) string {
   55     t := mime.TypeByExtension(filepath.Ext(path))
   56     return strings.Split(t, ";")[0]
   57 }