protected Uri GetNextLinkUri(object lastObject, IExpandedResult skipTokenExpandedResult, Uri absoluteUri) { SkipTokenBuilder builder2; UriBuilder builder = new UriBuilder(absoluteUri); if (this.IsRootContainer) { if (!this.IsCustomPaged) { if (skipTokenExpandedResult != null) { builder2 = new SkipTokenBuilderFromExpandedResult(skipTokenExpandedResult, this.RequestDescription.SkipTokenExpressionCount); } else { builder2 = new SkipTokenBuilderFromProperties(lastObject, this.Provider, this.RequestDescription.SkipTokenProperties); } } else { builder2 = new SkipTokenBuilderFromCustomPaging(this.currentSkipTokenForCustomPaging); } builder.Query = this.GetNextPageQueryParametersForRootContainer().Append(builder2.GetSkipToken()).ToString(); } else { if (!this.IsCustomPaged) { builder2 = new SkipTokenBuilderFromProperties(lastObject, this.Provider, this.CurrentContainer.ResourceType.KeyProperties); } else { builder2 = new SkipTokenBuilderFromCustomPaging(this.currentSkipTokenForCustomPaging); } builder.Query = this.GetNextPageQueryParametersForExpandedContainer().Append(builder2.GetSkipToken()).ToString(); } return(builder.Uri); }
/// <summary> /// Obtains the URI for the link for next page in string format /// </summary> /// <param name="lastObject">Last object serialized to be used for generating $skiptoken</param> /// <param name="skipTokenExpandedResult">The <see cref="IExpandedResult"/> of the $skiptoken property of object corresponding to last serialized object</param> /// <param name="absoluteUri">Absolute response URI</param> /// <returns>URI for the link for next page</returns> protected String GetNextLinkUri(object lastObject, IExpandedResult skipTokenExpandedResult, Uri absoluteUri) { UriBuilder builder = new UriBuilder(absoluteUri); SkipTokenBuilder skipTokenBuilder = null; if (this.IsRootContainer) { if (!this.IsCustomPaged) { if (skipTokenExpandedResult != null) { skipTokenBuilder = new SkipTokenBuilderFromExpandedResult(skipTokenExpandedResult, this.RequestDescription.SkipTokenExpressionCount); } else { Debug.Assert(this.RequestDescription.SkipTokenProperties != null, "Must have skip token properties collection"); Debug.Assert(this.RequestDescription.SkipTokenProperties.Count > 0, "Must have some valid ordered properties in the skip token properties collection"); skipTokenBuilder = new SkipTokenBuilderFromProperties(lastObject, this.Provider, this.RequestDescription.SkipTokenProperties); } } else { Debug.Assert(this.currentSkipTokenForCustomPaging != null, "Must have obtained the skip token for custom paging."); skipTokenBuilder = new SkipTokenBuilderFromCustomPaging(this.currentSkipTokenForCustomPaging); } builder.Query = this.GetNextPageQueryParametersForRootContainer().Append(skipTokenBuilder.GetSkipToken()).ToString(); } else { if (!this.IsCustomPaged) { // Internal results skipTokenBuilder = new SkipTokenBuilderFromProperties(lastObject, this.Provider, this.CurrentContainer.ResourceType.KeyProperties); } else { Debug.Assert(this.currentSkipTokenForCustomPaging != null, "Must have obtained the skip token for custom paging."); skipTokenBuilder = new SkipTokenBuilderFromCustomPaging(this.currentSkipTokenForCustomPaging); } builder.Query = this.GetNextPageQueryParametersForExpandedContainer().Append(skipTokenBuilder.GetSkipToken()).ToString(); } return builder.Uri.AbsoluteUri; }