mirror of
https://github.com/rclone/rclone.git
synced 2024-11-23 06:27:11 +08:00
drive: fix whole second dates - fixes #4
This commit is contained in:
parent
a12760c038
commit
93cb0a47e4
|
@ -38,6 +38,8 @@ const (
|
|||
rcloneClientId = "202264815644.apps.googleusercontent.com"
|
||||
rcloneClientSecret = "X4Z3ca8xfWDb1Voo-F9a7ZxJ"
|
||||
driveFolderType = "application/vnd.google-apps.folder"
|
||||
RFC3339In = time.RFC3339
|
||||
RFC3339Out = "2006-01-02T15:04:05.000000000Z07:00"
|
||||
)
|
||||
|
||||
// Globals
|
||||
|
@ -674,7 +676,7 @@ func (f *FsDrive) ListDir() fs.DirChan {
|
|||
Bytes: -1,
|
||||
Count: -1,
|
||||
}
|
||||
dir.When, _ = time.Parse(time.RFC3339, item.ModifiedDate)
|
||||
dir.When, _ = time.Parse(RFC3339In, item.ModifiedDate)
|
||||
out <- dir
|
||||
return false
|
||||
})
|
||||
|
@ -711,7 +713,7 @@ func (f *FsDrive) Put(in io.Reader, remote string, modTime time.Time, size int64
|
|||
if mimeType == "" {
|
||||
mimeType = "application/octet-stream"
|
||||
}
|
||||
modifiedDate := modTime.Format(time.RFC3339Nano)
|
||||
modifiedDate := modTime.Format(RFC3339Out)
|
||||
|
||||
// Define the metadata for the file we are going to create.
|
||||
info := &drive.File{
|
||||
|
@ -864,7 +866,7 @@ func (o *FsObjectDrive) ModTime() time.Time {
|
|||
fs.Log(o, "Failed to read metadata: %s", err)
|
||||
return time.Now()
|
||||
}
|
||||
modTime, err := time.Parse(time.RFC3339, o.modifiedDate)
|
||||
modTime, err := time.Parse(RFC3339In, o.modifiedDate)
|
||||
if err != nil {
|
||||
fs.Log(o, "Failed to read mtime from object: %s", err)
|
||||
return time.Now()
|
||||
|
@ -882,7 +884,7 @@ func (o *FsObjectDrive) SetModTime(modTime time.Time) {
|
|||
}
|
||||
// New metadata
|
||||
info := &drive.File{
|
||||
ModifiedDate: modTime.Format(time.RFC3339Nano),
|
||||
ModifiedDate: modTime.Format(RFC3339Out),
|
||||
}
|
||||
// Set modified date
|
||||
_, err = o.drive.svc.Files.Update(o.id, info).SetModifiedDate(true).Do()
|
||||
|
@ -920,7 +922,7 @@ func (o *FsObjectDrive) Open() (in io.ReadCloser, err error) {
|
|||
func (o *FsObjectDrive) Update(in io.Reader, modTime time.Time, size int64) error {
|
||||
info := &drive.File{
|
||||
Id: o.id,
|
||||
ModifiedDate: modTime.Format(time.RFC3339Nano),
|
||||
ModifiedDate: modTime.Format(RFC3339Out),
|
||||
}
|
||||
|
||||
// Make the API request to upload metadata and file data.
|
||||
|
|
|
@ -145,8 +145,9 @@ func TestMkdir(flocal, fremote fs.Fs) {
|
|||
CheckListing(fremote, items)
|
||||
}
|
||||
|
||||
var t1 = Time("2001-02-03T04:05:06.999999999Z")
|
||||
var t1 = Time("2001-02-03T04:05:06.499999999Z")
|
||||
var t2 = Time("2011-12-25T12:59:59.123456789Z")
|
||||
var t3 = Time("2011-12-30T12:59:59.000000000Z")
|
||||
|
||||
func TestCopy(flocal, fremote fs.Fs) {
|
||||
WriteFile("empty space", "", t1)
|
||||
|
@ -198,14 +199,14 @@ func TestSync(flocal, fremote fs.Fs) {
|
|||
// ------------------------------------------------------------
|
||||
|
||||
log.Printf("Sync after adding a file")
|
||||
WriteFile("potato", "------------------------------------------------------------", t1)
|
||||
WriteFile("potato", "------------------------------------------------------------", t3)
|
||||
err = fs.Sync(fremote, flocal, true)
|
||||
if err != nil {
|
||||
log.Fatalf("Sync failed: %v", err)
|
||||
}
|
||||
items = []Item{
|
||||
{Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"},
|
||||
{Path: "potato", Size: 60, ModTime: t1, Md5sum: "d6548b156ea68a4e003e786df99eee76"},
|
||||
{Path: "potato", Size: 60, ModTime: t3, Md5sum: "d6548b156ea68a4e003e786df99eee76"},
|
||||
}
|
||||
CheckListing(flocal, items)
|
||||
CheckListing(fremote, items)
|
||||
|
@ -213,14 +214,14 @@ func TestSync(flocal, fremote fs.Fs) {
|
|||
// ------------------------------------------------------------
|
||||
|
||||
log.Printf("Sync after changing a file's size only")
|
||||
WriteFile("potato", "smaller but same date", t1)
|
||||
WriteFile("potato", "smaller but same date", t3)
|
||||
err = fs.Sync(fremote, flocal, true)
|
||||
if err != nil {
|
||||
log.Fatalf("Sync failed: %v", err)
|
||||
}
|
||||
items = []Item{
|
||||
{Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"},
|
||||
{Path: "potato", Size: 21, ModTime: t1, Md5sum: "100defcf18c42a1e0dc42a789b107cd2"},
|
||||
{Path: "potato", Size: 21, ModTime: t3, Md5sum: "100defcf18c42a1e0dc42a789b107cd2"},
|
||||
}
|
||||
CheckListing(flocal, items)
|
||||
CheckListing(fremote, items)
|
||||
|
@ -242,7 +243,7 @@ func TestSync(flocal, fremote fs.Fs) {
|
|||
|
||||
before := []Item{
|
||||
{Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"},
|
||||
{Path: "potato", Size: 21, ModTime: t1, Md5sum: "100defcf18c42a1e0dc42a789b107cd2"},
|
||||
{Path: "potato", Size: 21, ModTime: t3, Md5sum: "100defcf18c42a1e0dc42a789b107cd2"},
|
||||
}
|
||||
items = []Item{
|
||||
{Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"},
|
||||
|
|
Loading…
Reference in New Issue
Block a user