// readMetaData gets the metadata if it hasn't already been fetched // // Sets // o.id // o.modTime // o.size // o.sha1 func (o *Object) readMetaData() (err error) { if o.id != "" { return nil } maxSearched := 1 var timestamp api.Timestamp baseRemote := o.remote if *b2Versions { timestamp, baseRemote = api.RemoveVersion(baseRemote) maxSearched = maxVersions } var info *api.File err = o.fs.list("", fs.MaxLevel, baseRemote, maxSearched, *b2Versions, func(remote string, object *api.File, isDirectory bool) error { if isDirectory { return nil } if remote == baseRemote { if !timestamp.IsZero() && !timestamp.Equal(object.UploadTimestamp) { return nil } info = object } return errEndList // read only 1 item }) if err != nil { if err == fs.ErrorDirNotFound { return fs.ErrorObjectNotFound } return err } if info == nil { return fs.ErrorObjectNotFound } return o.decodeMetaData(info) }
func TestTimestampUnmarshalJSON(t *testing.T) { var tActual api.Timestamp err := tActual.UnmarshalJSON([]byte("981173106123")) require.NoError(t, err) assert.Equal(t, (time.Time)(t1), (time.Time)(tActual)) }