// Adds the key-value-pair 'Shared: True/False' to the map func addSharedStatus(d *gdrive.Drive, items []map[string]string) { // Limit to 10 simultaneous requests active := make(chan bool, 10) done := make(chan bool) // Closure that performs the check checkStatus := func(item map[string]string) { // Wait for an empty spot in the active queue active <- true // Perform request shared := isShared(d, item["Id"]) item["Shared"] = util.FormatBool(shared) // Decrement the active queue and notify that we are done <-active done <- true } // Go, go, go! for _, item := range items { go checkStatus(item) } // Wait for all goroutines to finish for i := 0; i < len(items); i++ { <-done } }
func printInfo(d *gdrive.Drive, f *drive.File, sizeInBytes bool) { fields := map[string]string{ "Id": f.Id, "Title": f.Title, "Description": f.Description, "Size": util.FileSizeFormat(f.FileSize, sizeInBytes), "Created": util.ISODateToLocal(f.CreatedDate), "Modified": util.ISODateToLocal(f.ModifiedDate), "Owner": strings.Join(f.OwnerNames, ", "), "Md5sum": f.Md5Checksum, "Shared": util.FormatBool(isShared(d, f.Id)), "Parents": util.ParentList(f.Parents), } order := []string{ "Id", "Title", "Description", "Size", "Created", "Modified", "Owner", "Md5sum", "Shared", "Parents", } util.Print(fields, order) }