/// <summary> /// Tries to parse value into sync token. /// </summary> /// <param name="value">Value to parse.</param> /// <param name="tokenType">Token type.</param> /// <param name="token">out SyncToken.</param> /// <returns></returns> public static bool TryParseFromUrl(string value, SyncTokenType tokenType, out ISyncToken token) { token = null; if (string.IsNullOrEmpty(value)) { return(false); } int startIndex = value.IndexOf(SyncToken.GetTokenPrefix(tokenType), StringComparison.OrdinalIgnoreCase); if (startIndex == -1) { return(false); } int endIndex = startIndex + SyncToken.GetTokenPrefix(tokenType).Length; string tokenValue = value.Substring(endIndex); if (tokenValue.IndexOf("&", StringComparison.Ordinal) != -1) { tokenValue = tokenValue.Split('&')[0]; } token = new SyncToken(tokenValue, tokenType); return(true); }
/// <summary> /// Create new instance of <see cref="SyncQuery"/> /// </summary> /// <param name="pageSize">Page size.</param> /// <param name="syncToken">Sync token.</param> internal SyncQuery(int pageSize, ISyncToken syncToken) { this.preferences = new List <string>(); this.preferences.Add($"odata.maxpagesize={pageSize}"); this.preferences.Add("odata.track-changes"); this.InitialQuery = syncToken == null; this.SyncToken = syncToken; }
public void TestSyncTokenParser() { Uri url = new Uri("https://outlook.office365.com/api/beta/delta?$skiptoken=fasdlfjflds"); ISyncToken token = null; Assert.IsTrue( SyncToken.TryParseFromUrl( url, SyncTokenType.SkipToken, out token)); Assert.AreEqual( "$skiptoken=fasdlfjflds", token.Query); Assert.AreEqual( "fasdlfjflds", token.Value); Assert.IsFalse( SyncToken.TryParseFromUrl( "abcd", SyncTokenType.DeltaToken, out token)); Assert.IsFalse( SyncToken.TryParseFromUrl( "", SyncTokenType.DeltaToken, out token)); url = new Uri("https://outlook.office365.com/api/beta/delta?$select=Something&$deltatoken=fasdlfjflds&$filter=A"); Assert.IsTrue( SyncToken.TryParseFromUrl( url, SyncTokenType.DeltaToken, out token)); Assert.AreEqual( "$deltatoken=fasdlfjflds", token.Query); }
public Task CompleteRebuild(ISyncToken syncToken) { return(_inner.CompleteRebuild(syncToken)); }
/// <summary> /// Tries to parse value of Url query into <see cref="ISyncToken"/> /// </summary> /// <param name="url"></param> /// <param name="tokenType"></param> /// <param name="token"></param> /// <returns></returns> public static bool TryParseFromUrl(Uri url, SyncTokenType tokenType, out ISyncToken token) { return(SyncToken.TryParseFromUrl(url.Query, tokenType, out token)); }