// doShareURL share files from target func doShareDownloadURL(targetURL string, recursive bool, expires time.Duration) *probe.Error { shareDate := time.Now().UTC() sURLs, err := loadSharedURLsV3() if err != nil { return err.Trace() } var clnt client.Client clnt, err = url2Client(targetURL) if err != nil { return err.Trace() } if expires.Seconds() < 1 { return probe.NewError(errors.New("Too low expires, expiration cannot be less than 1 second.")) } if expires.Seconds() > 604800 { return probe.NewError(errors.New("Too high expires, expiration cannot be larger than 7 days.")) } for contentCh := range clnt.List(recursive, false) { if contentCh.Err != nil { return contentCh.Err.Trace() } var newClnt client.Client newClnt, err = url2Client(getNewTargetURL(clnt.URL(), contentCh.Content.Name)) if err != nil { return err.Trace() } var sharedURL string sharedURL, err = newClnt.ShareDownload(expires) if err != nil { return err.Trace() } shareMessage := ShareMessage{ Expiry: expires, DownloadURL: sharedURL, Key: newClnt.URL().String(), } shareMessageV3 := ShareMessageV3{ Expiry: expires, DownloadURL: sharedURL, Key: newClnt.URL().String(), } sURLs.URLs = append(sURLs.URLs, struct { Date time.Time Message ShareMessageV3 }{ Date: shareDate, Message: shareMessageV3, }) Prints("%s\n", shareMessage) } saveSharedURLsV3(sURLs) return nil }