42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
// Command probeblob times the download of a few drive media files.
|
|
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"io"
|
|
"log"
|
|
"time"
|
|
|
|
"heliosian/internal/data"
|
|
"google.golang.org/api/drive/v3"
|
|
"google.golang.org/api/option"
|
|
)
|
|
|
|
func main() {
|
|
svc, err := drive.NewService(context.Background(),
|
|
option.WithCredentialsFile(data.KeyFile),
|
|
option.WithScopes(drive.DriveScope))
|
|
if err != nil {
|
|
log.Fatalf("[ERROR] drive client: %v", err)
|
|
}
|
|
list, err := svc.Files.List().
|
|
Q("mimeType != 'application/vnd.google-apps.folder' and trashed = false").
|
|
SupportsAllDrives(true).IncludeItemsFromAllDrives(true).Corpora("allDrives").
|
|
Fields("files(id, name, size)").PageSize(5).Do()
|
|
if err != nil {
|
|
log.Fatalf("[ERROR] list: %v", err)
|
|
}
|
|
for _, f := range list.Files {
|
|
start := time.Now()
|
|
resp, err := svc.Files.Get(f.Id).SupportsAllDrives(true).Download()
|
|
if err != nil {
|
|
fmt.Printf("%s (%d bytes): request error after %s: %v\n", f.Name, f.Size, time.Since(start).Round(time.Millisecond), err)
|
|
continue
|
|
}
|
|
n, err := io.Copy(io.Discard, resp.Body)
|
|
resp.Body.Close()
|
|
fmt.Printf("%s: %d bytes in %s (err %v)\n", f.Name, n, time.Since(start).Round(time.Millisecond), err)
|
|
}
|
|
}
|