コード例 #1
0
        /// <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);
        }
コード例 #2
0
 /// <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;
 }
コード例 #3
0
        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));
 }
コード例 #5
0
 /// <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));
 }