Skip to content
Merged
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
b4f5cd7
minor: added long path support to prerequisite
radhgupta Oct 22, 2025
ccef568
Merge branch 'main' of https://github.com/microsoft/typespec
radhgupta Oct 23, 2025
3486047
Merge branch 'main' of https://github.com/microsoft/typespec
radhgupta Oct 31, 2025
25e823a
Merge branch 'main' of https://github.com/microsoft/typespec
radhgupta Nov 4, 2025
7958158
Merge branch 'main' of https://github.com/microsoft/typespec
radhgupta Nov 13, 2025
5227fce
Merge branch 'main' of https://github.com/microsoft/typespec
radhgupta Nov 13, 2025
175f199
Merge remote-tracking branch 'upstream/main'
radhgupta Nov 14, 2025
b39a7f4
Merge branch 'main' of https://github.com/microsoft/typespec
radhgupta Dec 1, 2025
699978e
Merge branch 'main' of https://github.com/microsoft/typespec
radhgupta Dec 15, 2025
d0909f3
Merge remote-tracking branch 'upstream/main'
radhgupta Jan 6, 2026
17ae707
Merge remote-tracking branch 'upstream/main'
radhgupta Jan 7, 2026
339819f
Merge remote-tracking branch 'upstream/main'
radhgupta Jan 13, 2026
9cb6c4c
Merge remote-tracking branch 'upstream/main'
radhgupta Jan 21, 2026
23227a6
merge
radhgupta Jan 22, 2026
11bd3b3
Merge remote-tracking branch 'upstream/main'
radhgupta Jan 28, 2026
f607b58
Merge remote-tracking branch 'upstream/main'
radhgupta Jan 28, 2026
9fce5cf
Merge remote-tracking branch 'upstream/main'
radhgupta Jan 29, 2026
2937906
generalize reinjection parameter
radhgupta Jan 29, 2026
42402d9
whitespace removeed
radhgupta Jan 29, 2026
43f1640
GetPageSizeParameterName
radhgupta Jan 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,8 @@ public class RestClientProvider : TypeProvider
{
private const string RepeatabilityRequestIdHeader = "Repeatability-Request-ID";
private const string RepeatabilityFirstSentHeader = "Repeatability-First-Sent";
private const string MaxPageSizeParameterName = "maxpagesize";
private const string TopParameterName = "top";
private const string MaxCountParameterName = "maxCount";
private const string ApiVersionParameterName = "api-version";

private static readonly Dictionary<string, ParameterProvider> _knownSpecialHeaderParams = new(StringComparer.OrdinalIgnoreCase)
{
Expand Down Expand Up @@ -146,9 +144,9 @@ private ScmMethodProvider BuildCreateRequestMethod(InputServiceMethod serviceMet
}

// Add maxPageSize parameter if PageSizeParameterSegments is specified
if (pagingServiceMethod?.PagingMetadata.PageSizeParameterSegments?.Count > 0)
var pageSizeParameterName = GetPageSizeParameterName(pagingServiceMethod);
if (pageSizeParameterName != null)
{
var pageSizeParameterName = pagingServiceMethod.PagingMetadata.PageSizeParameterSegments.Last();
reinjectedParamNames.Add(pageSizeParameterName);
}

Expand Down Expand Up @@ -294,9 +292,9 @@ private Dictionary<string, ParameterProvider> GetReinjectedParametersMap(
}

// Add maxPageSize parameter if PageSizeParameterSegments is specified
if (pagingServiceMethod?.PagingMetadata.PageSizeParameterSegments?.Count > 0)
var pageSizeParameterName = GetPageSizeParameterName(pagingServiceMethod);
if (pageSizeParameterName != null)
{
var pageSizeParameterName = pagingServiceMethod.PagingMetadata.PageSizeParameterSegments.Last();
// Find the parameter in the operation parameters
var pageSizeParameter = operation.Parameters.FirstOrDefault(p => p.Name == pageSizeParameterName);
if (pageSizeParameter != null)
Expand Down Expand Up @@ -465,8 +463,10 @@ private List<MethodBodyStatement> AppendQueryParameters(ScopedApi uri, InputOper
}

// Determine if we should update existing parameters or always append
InputPagingServiceMethod? pagingServiceMethod = _inputClient.Methods.OfType<InputPagingServiceMethod>()
.FirstOrDefault(m => m.Operation == operation);
bool shouldUpdateExisting = isNextLinkRequest &&
ShouldUpdateReinjectedParameter(inputQueryParameter.SerializedName) &&
ShouldUpdateReinjectedParameter(inputQueryParameter, pagingServiceMethod) &&
paramType?.IsCollection != true;

MethodBodyStatement statement = shouldUpdateExisting
Expand Down Expand Up @@ -857,11 +857,29 @@ private static bool TryGetSpecialHeaderParam(InputParameter inputParameter, [Not
return false;
}

private static bool ShouldUpdateReinjectedParameter(string parameterName)
private static string? GetPageSizeParameterName(InputPagingServiceMethod? pagingServiceMethod)
{
return parameterName.Equals(MaxPageSizeParameterName, StringComparison.OrdinalIgnoreCase) ||
parameterName.Equals(ApiVersionParameterName, StringComparison.OrdinalIgnoreCase);
// In the future, we can extend this to check multiple parameters
return pagingServiceMethod?.PagingMetadata?.PageSizeParameterSegments?.Count > 0
? pagingServiceMethod.PagingMetadata.PageSizeParameterSegments.Last()
: null;
}

private static bool ShouldUpdateReinjectedParameter(InputParameter inputParameter, InputPagingServiceMethod? pagingServiceMethod)
{
// Check if this is an API version parameter
if (inputParameter.IsApiVersion)
{
return true;
}

// Check if this is a max page size parameter
var pageSizeParameterName = GetPageSizeParameterName(pagingServiceMethod);
if (pageSizeParameterName != null && inputParameter.Name.Equals(pageSizeParameterName, StringComparison.OrdinalIgnoreCase))
{
return true;
}

return false;
}

private static List<int> GetSuccessStatusCodes(InputOperation operation)
Expand Down