public IDictionary <string, NoteUpdate> GetNoteUpdatesSince(int revision) { IDictionary <string, NoteUpdate> updatedNotes = new Dictionary <string, NoteUpdate>(); Evernote.EDAM.NoteStore.SyncState syncState = _noteStore.getSyncState(_authToken); // see if anything has changed // TODO - this check might be redundant, as Tomboy calls LatestRevision() beforehand if (syncState.UpdateCount <= revision) { return(updatedNotes); } if (revision < 0) { revision = 0; } //if we got this far, then Something has changed Evernote.EDAM.NoteStore.SyncChunk syncChunk; try { syncChunk = _noteStore.getSyncChunk(_authToken, revision, Int32.MaxValue, false); } catch (Exception e) { Logger.Error("[Evernote] Failure in getSyncChunk: " + e); return(updatedNotes); } if (syncChunk.Notes == null) { return(updatedNotes); } //every note we have should be new or updated, so tell Tomboy about it foreach (Evernote.EDAM.Type.Note note in syncChunk.Notes) { if (note.NotebookGuid != _tomboyNotebook.Guid) { continue; } string content = ""; try { content = CreateTomboyNoteContent(note); } catch (XmlSchemaValidationException e) { content = "Evernote had invalid XML"; } catch (Exception e) { Logger.Error("[Evernote] Unknown error creating Tomboy Note from Evernote:" + e + "\nEvernote: " + note); } string guid = GetCorrectGuid(note); NoteUpdate update = new NoteUpdate(content, note.Title, guid, note.UpdateSequenceNum); updatedNotes.Add(note.Guid, update); } return(updatedNotes); }
public override void FinishSync() { if (remoteDirty) { _data.SyncStateUpdateCount = nsClient.getSyncState(_token).UpdateCount; } _data = null; bucket = null; }
public override void FinishSync(out bool immediateResync) { if (remoteDirty) { _data.SyncStateUpdateCount = nsClient.getSyncState(_token).UpdateCount; } _data = null; bucket = null; immediateResync = false; }
public override void StartSync(IRemoteStorageSyncPersistance data, List <INote> localnotes, List <INote> localdeletednotes) { _data = (EvernoteData)data; RefreshToken(); TTransport noteStoreTransport = new THttpClient(new Uri(@"https://sandbox.evernote.com/shard/s1/notestore")); //TODO use url from OAuth TProtocol noteStoreProtocol = new TBinaryProtocol(noteStoreTransport); nsClient = new NoteStore.Client(noteStoreProtocol); var state = nsClient.getSyncState(_token); if (_data.SyncStateUpdateCount != state.UpdateCount) { _logger.Debug(EvernotePlugin.Name, string.Format("Remote has changed SyncState: {0} -> '{1}'", _data.SyncStateUpdateCount, state.UpdateCount)); NoteFilter filter = new NoteFilter(); filter.Order = (int)NoteSortOrder.UPDATED; NotesMetadataResultSpec spec = new NotesMetadataResultSpec(); spec.IncludeUpdateSequenceNum = true; bucket = nsClient.findNotesMetadata(_token, filter, 0, 9999, spec); _data.SyncStateUpdateCount = state.UpdateCount; } else { _logger.Debug(EvernotePlugin.Name, "Remote has not changed - no need for download - SyncState := " + state.UpdateCount); bucket = null; } remoteDirty = false; }