Browse Source

Bump Scriban to 7.0.3 and update the web providers generator to invoke provider configuration delegates earlier

dev
Kévin Chalet 3 days ago
parent
commit
c79fd288e8
  1. 4
      Directory.Packages.props
  2. 145
      gen/OpenIddict.Client.WebIntegration.Generators/OpenIddictClientWebIntegrationGenerator.cs

4
Directory.Packages.props

@ -397,8 +397,8 @@
Note: the following references are exclusively used in the source generators: Note: the following references are exclusively used in the source generators:
--> -->
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="4.14.0" /> <PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="4.14.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="5.0.0" /> <PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="5.0.0" />
<PackageVersion Include="Scriban" Version="6.5.3" /> <PackageVersion Include="Scriban" Version="7.0.3" />
<PackageVersion Include="System.Interactive" Version="6.0.3" /> <PackageVersion Include="System.Interactive" Version="6.0.3" />
<!-- <!--

145
gen/OpenIddict.Client.WebIntegration.Generators/OpenIddictClientWebIntegrationGenerator.cs

@ -14,7 +14,7 @@ public sealed class OpenIddictClientWebIntegrationGenerator : IIncrementalGenera
public void Initialize(IncrementalGeneratorInitializationContext context) public void Initialize(IncrementalGeneratorInitializationContext context)
{ {
var files = context.AdditionalTextsProvider.Where(static file => var files = context.AdditionalTextsProvider.Where(static file =>
string.Equals(Path.GetFileName(file.Path), "OpenIddictClientWebIntegrationProviders.xml")); string.Equals(Path.GetFileName(file.Path), "OpenIddictClientWebIntegrationProviders.xml", StringComparison.OrdinalIgnoreCase));
context.RegisterSourceOutput(files, static (context, file) => context.RegisterSourceOutput(files, static (context, file) =>
{ {
@ -81,21 +81,19 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentNullException.ThrowIfNull(configuration); ArgumentNullException.ThrowIfNull(configuration);
Services.Configure<OpenIddictClientOptions>(options => var registration = new OpenIddictClientRegistration
{ {
var registration = new OpenIddictClientRegistration ProviderSettings = new OpenIddictClientWebIntegrationSettings.{{ provider.name }}(),
{ ProviderType = ProviderTypes.{{ provider.name }}
ProviderSettings = new OpenIddictClientWebIntegrationSettings.{{ provider.name }}(), };
ProviderType = ProviderTypes.{{ provider.name }}
};
configuration(new OpenIddictClientWebIntegrationBuilder.{{ provider.name }}(registration)); configuration(new OpenIddictClientWebIntegrationBuilder.{{ provider.name }}(registration));
options.Registrations.Add(registration); Services.Configure<OpenIddictClientOptions>(options => options.Registrations.Add(registration));
});
return this; return this;
} }
{{~ end ~}} {{~ end ~}}
{{~ for provider in providers ~}} {{~ for provider in providers ~}}
@ -131,7 +129,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentNullException.ThrowIfNull(methods); ArgumentNullException.ThrowIfNull(methods);
return Set(registration => registration.ClientAuthenticationMethods.UnionWith(methods)); Registration.ClientAuthenticationMethods.UnionWith(methods);
return this;
} }
/// <summary> /// <summary>
@ -145,7 +145,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentNullException.ThrowIfNull(methods); ArgumentNullException.ThrowIfNull(methods);
return Set(registration => registration.CodeChallengeMethods.UnionWith(methods)); Registration.CodeChallengeMethods.UnionWith(methods);
return this;
} }
/// <summary> /// <summary>
@ -159,7 +161,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentNullException.ThrowIfNull(types); ArgumentNullException.ThrowIfNull(types);
return Set(registration => registration.GrantTypes.UnionWith(types)); Registration.GrantTypes.UnionWith(types);
return this;
} }
/// <summary> /// <summary>
@ -173,7 +177,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentNullException.ThrowIfNull(modes); ArgumentNullException.ThrowIfNull(modes);
return Set(registration => registration.ResponseModes.UnionWith(modes)); Registration.ResponseModes.UnionWith(modes);
return this;
} }
/// <summary> /// <summary>
@ -187,7 +193,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentNullException.ThrowIfNull(types); ArgumentNullException.ThrowIfNull(types);
return Set(registration => registration.ResponseTypes.UnionWith(types)); Registration.ResponseTypes.UnionWith(types);
return this;
} }
/// <summary> /// <summary>
@ -199,7 +207,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentNullException.ThrowIfNull(scopes); ArgumentNullException.ThrowIfNull(scopes);
return Set(registration => registration.Scopes.UnionWith(scopes)); Registration.Scopes.UnionWith(scopes);
return this;
} }
/// <summary> /// <summary>
@ -210,7 +220,11 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
/// </summary> /// </summary>
/// <returns>The <see cref=""OpenIddictClientWebIntegrationBuilder.{{ provider.name }}""/> instance.</returns> /// <returns>The <see cref=""OpenIddictClientWebIntegrationBuilder.{{ provider.name }}""/> instance.</returns>
public {{ provider.name }} DisablePushedAuthorizationRequests() public {{ provider.name }} DisablePushedAuthorizationRequests()
=> Set(registration => registration.DisablePushedAuthorizationRequests = true); {
Registration.DisablePushedAuthorizationRequests = true;
return this;
}
/// <summary> /// <summary>
/// Sets the issuer that will be attached to the <see cref=""Claim""/> /// Sets the issuer that will be attached to the <see cref=""Claim""/>
@ -222,7 +236,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentException.ThrowIfNullOrEmpty(issuer); ArgumentException.ThrowIfNullOrEmpty(issuer);
return Set(registration => registration.ClaimsIssuer = issuer); Registration.ClaimsIssuer = issuer;
return this;
} }
/// <summary> /// <summary>
@ -234,7 +250,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentException.ThrowIfNullOrEmpty(name); ArgumentException.ThrowIfNullOrEmpty(name);
return Set(registration => registration.ProviderName = name); Registration.ProviderName = name;
return this;
} }
/// <summary> /// <summary>
@ -246,7 +264,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentException.ThrowIfNullOrEmpty(name); ArgumentException.ThrowIfNullOrEmpty(name);
return Set(registration => registration.ProviderDisplayName = name); Registration.ProviderDisplayName = name;
return this;
} }
/// <summary> /// <summary>
@ -258,7 +278,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentException.ThrowIfNullOrEmpty(identifier); ArgumentException.ThrowIfNullOrEmpty(identifier);
return Set(registration => registration.RegistrationId = identifier); Registration.RegistrationId = identifier;
return this;
} }
/// <summary> /// <summary>
@ -270,7 +292,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentException.ThrowIfNullOrEmpty(identifier); ArgumentException.ThrowIfNullOrEmpty(identifier);
return Set(registration => registration.ClientId = identifier); Registration.ClientId = identifier;
return this;
} }
/// <summary> /// <summary>
@ -282,7 +306,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentException.ThrowIfNullOrEmpty(secret); ArgumentException.ThrowIfNullOrEmpty(secret);
return Set(registration => registration.ClientSecret = secret); Registration.ClientSecret = secret;
return this;
} }
/// <summary> /// <summary>
@ -294,7 +320,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentException.ThrowIfNullOrEmpty(type); ArgumentException.ThrowIfNullOrEmpty(type);
return Set(registration => registration.ClientType = type); Registration.ClientType = type;
return this;
} }
/// <summary> /// <summary>
@ -310,7 +338,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentNullException.ThrowIfNull(uri); ArgumentNullException.ThrowIfNull(uri);
return Set(registration => registration.PostLogoutRedirectUri = uri); Registration.PostLogoutRedirectUri = uri;
return this;
} }
/// <summary> /// <summary>
@ -342,7 +372,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentNullException.ThrowIfNull(uri); ArgumentNullException.ThrowIfNull(uri);
return Set(registration => registration.RedirectUri = uri); Registration.RedirectUri = uri;
return this;
} }
/// <summary> /// <summary>
@ -367,7 +399,12 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
/// </summary> /// </summary>
/// <returns>The <see cref=""OpenIddictClientWebIntegrationBuilder.{{ provider.name }}""/> instance.</returns> /// <returns>The <see cref=""OpenIddictClientWebIntegrationBuilder.{{ provider.name }}""/> instance.</returns>
public {{ provider.name }} Use{{ environment.name }}Environment() public {{ provider.name }} Use{{ environment.name }}Environment()
=> Set(registration => registration.Get{{ provider.name }}Settings().Environment = OpenIddictClientWebIntegrationConstants.{{ provider.name }}.Environments.{{ environment.name }}); {
Registration.Get{{ provider.name }}Settings().Environment = OpenIddictClientWebIntegrationConstants.{{ provider.name }}.Environments.{{ environment.name }};
return this;
}
{{~ end ~}} {{~ end ~}}
{{~ for setting in provider.settings ~}} {{~ for setting in provider.settings ~}}
@ -384,7 +421,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentNullException.ThrowIfNull({{ setting.parameter_name }}); ArgumentNullException.ThrowIfNull({{ setting.parameter_name }});
return Set(registration => registration.Get{{ provider.name }}Settings().{{ setting.property_name }}.UnionWith({{ setting.parameter_name }})); Registration.Get{{ provider.name }}Settings().{{ setting.property_name }}.UnionWith({{ setting.parameter_name }});
return this;
} }
{{~ else if setting.clr_type == 'ECDsaSecurityKey' ~}} {{~ else if setting.clr_type == 'ECDsaSecurityKey' ~}}
/// <summary> /// <summary>
@ -404,7 +443,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
throw new ArgumentException(SR.GetResourceString(SR.ID0055), nameof({{ setting.parameter_name }})); throw new ArgumentException(SR.GetResourceString(SR.ID0055), nameof({{ setting.parameter_name }}));
} }
return Set(registration => registration.Get{{ provider.name }}Settings().{{ setting.property_name }} = {{ setting.parameter_name }}); Registration.Get{{ provider.name }}Settings().{{ setting.property_name }} = {{ setting.parameter_name }};
return this;
} }
#if SUPPORTS_PEM_ENCODED_KEY_IMPORT #if SUPPORTS_PEM_ENCODED_KEY_IMPORT
@ -486,7 +527,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
throw new ArgumentException(SR.GetResourceString(SR.ID0144), nameof({{ setting.parameter_name }})); throw new ArgumentException(SR.GetResourceString(SR.ID0144), nameof({{ setting.parameter_name }}));
} }
return Set(registration => registration.Get{{ provider.name }}Settings().{{ setting.property_name }} = {{ setting.parameter_name }}); Registration.Get{{ provider.name }}Settings().{{ setting.property_name }} = {{ setting.parameter_name }};
return this;
} }
/// <summary> /// <summary>
@ -521,7 +564,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
throw new ArgumentException(SR.GetResourceString(SR.ID0061), nameof({{ setting.parameter_name }})); throw new ArgumentException(SR.GetResourceString(SR.ID0061), nameof({{ setting.parameter_name }}));
} }
return Set(registration => registration.Get{{ provider.name }}Settings().{{ setting.property_name }} = {{ setting.parameter_name }}); Registration.Get{{ provider.name }}Settings().{{ setting.property_name }} = {{ setting.parameter_name }};
return this;
} }
/// <summary> /// <summary>
@ -677,7 +722,11 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
[Obsolete(""This option is no longer supported and will be removed in a future version."")] [Obsolete(""This option is no longer supported and will be removed in a future version."")]
{{~ end ~}} {{~ end ~}}
public {{ provider.name }} Set{{ setting.property_name }}(bool {{ setting.parameter_name }}) public {{ provider.name }} Set{{ setting.property_name }}(bool {{ setting.parameter_name }})
=> Set(registration => registration.Get{{ provider.name }}Settings().{{ setting.property_name }} = {{ setting.parameter_name }}); {
Registration.Get{{ provider.name }}Settings().{{ setting.property_name }} = {{ setting.parameter_name }};
return this;
}
{{~ else ~}} {{~ else ~}}
/// <summary> /// <summary>
/// Configures {{ setting.description }}. /// Configures {{ setting.description }}.
@ -691,7 +740,9 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
{ {
ArgumentNullException.ThrowIfNull({{ setting.parameter_name }}); ArgumentNullException.ThrowIfNull({{ setting.parameter_name }});
return Set(registration => registration.Get{{ provider.name }}Settings().{{ setting.property_name }} = {{ setting.parameter_name }}); Registration.Get{{ provider.name }}Settings().{{ setting.property_name }} = {{ setting.parameter_name }};
return this;
} }
{{~ end ~}} {{~ end ~}}
@ -708,22 +759,8 @@ public sealed partial class OpenIddictClientWebIntegrationBuilder
/// <inheritdoc/> /// <inheritdoc/>
[EditorBrowsable(EditorBrowsableState.Never)] [EditorBrowsable(EditorBrowsableState.Never)]
public override string? ToString() => base.ToString(); public override string? ToString() => base.ToString();
/// <summary>
/// Amends the client registration created by the {{ provider.display_name }} integration.
/// </summary>
/// <param name=""configuration"">The delegate used to configure the {{ provider.display_name }} client registration.</param>
/// <remarks>This extension can be safely called multiple times.</remarks>
/// <returns>The <see cref=""OpenIddictClientRegistration""/> instance.</returns>
private {{ provider.name }} Set(Action<OpenIddictClientRegistration> configuration)
{
ArgumentNullException.ThrowIfNull(configuration);
configuration(Registration);
return this;
}
} }
{{~ end ~}} {{~ end ~}}
} }
"); ");
@ -1226,6 +1263,7 @@ public sealed partial class OpenIddictClientWebIntegrationConfiguration
{{~ end ~}} {{~ end ~}}
{{~ end ~}} {{~ end ~}}
} }
{{~ end ~}} {{~ end ~}}
else else
@ -1398,8 +1436,13 @@ public static partial class OpenIddictClientWebIntegrationHelpers
/// <returns>The {{ provider.display_name }} provider settings.</returns> /// <returns>The {{ provider.display_name }} provider settings.</returns>
/// <exception cref=""InvalidOperationException"">The provider options cannot be resolved.</exception> /// <exception cref=""InvalidOperationException"">The provider options cannot be resolved.</exception>
public static OpenIddictClientWebIntegrationSettings.{{ provider.name }} Get{{ provider.name }}Settings(this OpenIddictClientRegistration registration) public static OpenIddictClientWebIntegrationSettings.{{ provider.name }} Get{{ provider.name }}Settings(this OpenIddictClientRegistration registration)
=> registration.ProviderSettings is OpenIddictClientWebIntegrationSettings.{{ provider.name }} settings ? settings : {
throw new InvalidOperationException(SR.FormatID0333(Providers.{{ provider.name }})); ArgumentNullException.ThrowIfNull(registration);
return registration.ProviderSettings is OpenIddictClientWebIntegrationSettings.{{ provider.name }} settings
? settings
: throw new InvalidOperationException(SR.FormatID0333(Providers.{{ provider.name }}));
}
{{~ end ~}} {{~ end ~}}
} }
@ -1455,6 +1498,7 @@ public sealed partial class OpenIddictClientWebIntegrationSettings
{{~ end ~}} {{~ end ~}}
} }
{{~ end ~}} {{~ end ~}}
} }
"); ");
@ -1514,6 +1558,7 @@ public sealed partial class OpenIddictClientWebIntegrationSettings
{ {
var context = new TemplateContext var context = new TemplateContext
{ {
LimitToString = 128 * 1024 * 1024,
LoopLimit = 100_000 LoopLimit = 100_000
}; };

Loading…
Cancel
Save