public static string[] DecodeContinuationToken(string continuationToken, List <ContinuationTokenVersion> supportedVersions, bool isOriginalVersionSupported, out ContinuationTokenVersion continuationTokenVersion) { string[] strArrays; if (supportedVersions == null || supportedVersions.Count <= 0) { throw new ArgumentException("The supported versions cannot be null and must contain at least one version.", "supportedVersions"); } if (string.IsNullOrEmpty(continuationToken)) { throw new ArgumentException("The continuation token cannot be null or empty.", "continuationToken"); } continuationTokenVersion = ContinuationTokenVersion.None; try { if (Regex.IsMatch(continuationToken, "^(\\d+)!(\\d+)!")) { char[] chrArray = new char[] { '!' }; string[] strArrays1 = continuationToken.Split(chrArray, 3, StringSplitOptions.None); if ((int)strArrays1.Length != 3) { throw new ContinuationTokenParserException(string.Format("Did find expected number of tokens ({0}).", 3), "continuationToken"); } continuationTokenVersion = (ContinuationTokenVersion)Convert.ToInt32(strArrays1[0]); if (!supportedVersions.Contains((ContinuationTokenVersion)((int)continuationTokenVersion))) { string str = "["; int num = 0; foreach (ContinuationTokenVersion supportedVersion in supportedVersions) { str = string.Concat(str, supportedVersion.ToString()); if (num < supportedVersions.Count - 1) { str = string.Concat(str, ", "); } num++; } str = string.Concat(str, "]"); throw new ContinuationTokenParserException(string.Format("The version found ({0}) is not in the list of supported versions; supported versions = {1}.", (ContinuationTokenVersion)((int)continuationTokenVersion), str)); } switch ((int)continuationTokenVersion) { case 1: { strArrays = ContinuationTokenParser.DecodeContinuationTokenV1(strArrays1); return(strArrays); } case 2: { strArrays = ContinuationTokenParser.DecodeContinuationTokenV2(strArrays1); return(strArrays); } } object[] objArray = new object[] { (ContinuationTokenVersion)((int)continuationTokenVersion) }; NephosAssertionException.Fail("Internal error: Version {0} is invalid.", objArray); strArrays = null; } else { if (!isOriginalVersionSupported) { throw new ContinuationTokenParserException("Proper header format not found.", "continuationToken"); } Logger <IRestProtocolHeadLogger> .Instance.Verbose.Log("Received continuation token in original PDC2008 format. Token = '{0}'", new object[] { continuationToken }); strArrays = new string[] { continuationToken }; } } catch (ContinuationTokenParserException continuationTokenParserException1) { ContinuationTokenParserException continuationTokenParserException = continuationTokenParserException1; IStringDataEventStream error = Logger <IRestProtocolHeadLogger> .Instance.Error; object[] objArray1 = new object[] { (ContinuationTokenVersion)((int)continuationTokenVersion), continuationToken }; error.Log("Error decoding continuation token with version {0} and value {1}", objArray1); throw new ContinuationTokenParserException(string.Format("Caught an exception when decoding a {0} continuation token. Continuation token = '{1}'.", (ContinuationTokenVersion)((int)continuationTokenVersion), continuationToken), continuationTokenParserException); } return(strArrays); }
public static string[] DecodeContinuationToken(string continuationToken, List <ContinuationTokenVersion> supportedVersions, out ContinuationTokenVersion continuationTokenVersion) { return(ContinuationTokenParser.DecodeContinuationToken(continuationToken, supportedVersions, true, out continuationTokenVersion)); }