/
main.go
53 lines (45 loc) · 959 Bytes
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package main
import (
"flag"
"fmt"
"io"
"log"
"net/http"
"path/filepath"
drive "google.golang.org/api/drive/v2"
)
var (
fileId = flag.String("fileid")
outputPath = flag.String("output")
)
func main() {
fmt.Println("Download Start.")
client := &http.Client{}
service, err := drive.New(client)
if err != nil {
log.Fatalf("Unable to create Drive service: %v", err)
return
}
if err := os.MkDirAll(filepath.Dir(*outputPath), 0755); err != nil {
log.Fatalf("Unable to make Directory: %v", err)
return
}
fd, err := os.Create(*outputPath)
if err != nil {
log.Fatalf("Unable to create File: %v", err)
return
}
defer fd.Close()
res, err := service.Files.Get(*fileId).Download()
if err != nil {
log.Fatalf("Unable to download File: %v", err)
return
}
defer res.Body.Close()
bytes, err := io.Copy(fd, res.Body)
if err != nil {
log.Fatalf("Unable to io Copy: %v", err)
return
}
fmt.Println("Download Finish.")
}