1- using Microsoft . Extensions . Options ;
2- using WebApiClientCore . Extensions . OAuths ;
1+ using Microsoft . Extensions . Configuration ;
2+ using Microsoft . Extensions . Options ;
3+ using System ;
34using WebApiClientCore . Extensions . OAuths . TokenProviders ;
45
56namespace Microsoft . Extensions . DependencyInjection
@@ -10,34 +11,106 @@ namespace Microsoft.Extensions.DependencyInjection
1011 public static class TokenProviderBuilderExtensions
1112 {
1213 /// <summary>
13- /// 配置Client模式的授权信息
14+ /// 配置ClientCredentialsOptions
1415 /// </summary>
1516 /// <param name="builder"></param>
17+ /// <param name="configureOptions">配置</param>
1618 /// <returns></returns>
17- public static OptionsBuilder < ClientCredentialsOptions > AddClientCredentialsOptions ( this ITokenProviderBuilder builder )
19+ public static ITokenProviderBuilder ConfigureClientCredentials ( this ITokenProviderBuilder builder , Action < ClientCredentialsOptions , IServiceProvider > configureOptions )
1820 {
19- return builder . AddOptions < ClientCredentialsOptions > ( ) ;
21+ builder . AddClientCredentialsOptions ( ) . Configure ( configureOptions ) ;
22+ return builder ;
2023 }
2124
25+ /// <summary>
26+ /// 配置ClientCredentialsOptions
27+ /// </summary>
28+ /// <param name="builder"></param>
29+ /// <param name="configureOptions">配置</param>
30+ /// <returns></returns>
31+ public static ITokenProviderBuilder ConfigureClientCredentials ( this ITokenProviderBuilder builder , Action < ClientCredentialsOptions > configureOptions )
32+ {
33+ builder . AddClientCredentialsOptions ( ) . Configure ( configureOptions ) ;
34+ return builder ;
35+ }
2236
2337 /// <summary>
24- /// 配置Password模式的授权信息
38+ /// 配置ClientCredentialsOptions
2539 /// </summary>
2640 /// <param name="builder"></param>
41+ /// <param name="configuration">配置</param>
2742 /// <returns></returns>
28- public static OptionsBuilder < PasswordCredentialsOptions > AddPasswordCredentialsOptions ( this ITokenProviderBuilder builder )
43+ public static ITokenProviderBuilder ConfigureClientCredentials ( this ITokenProviderBuilder builder , IConfiguration configuration )
2944 {
30- return builder . AddOptions < PasswordCredentialsOptions > ( ) ;
45+ builder . AddClientCredentialsOptions ( ) . Bind ( configuration ) ;
46+ return builder ;
47+ }
48+
49+
50+ /// <summary>
51+ /// 配置PasswordCredentialsOptions
52+ /// </summary>
53+ /// <param name="builder"></param>
54+ /// <param name="configureOptions">配置</param>
55+ /// <returns></returns>
56+ public static ITokenProviderBuilder ConfigurePasswordCredentials ( this ITokenProviderBuilder builder , Action < PasswordCredentialsOptions , IServiceProvider > configureOptions )
57+ {
58+ builder . AddPasswordCredentialsOptions ( ) . Configure ( configureOptions ) ;
59+ return builder ;
60+ }
61+
62+ /// <summary>
63+ /// 配置PasswordCredentialsOptions
64+ /// </summary>
65+ /// <param name="builder"></param>
66+ /// <param name="configureOptions">配置</param>
67+ /// <returns></returns>
68+ public static ITokenProviderBuilder ConfigurePasswordCredentials ( this ITokenProviderBuilder builder , Action < PasswordCredentialsOptions > configureOptions )
69+ {
70+ builder . AddPasswordCredentialsOptions ( ) . Configure ( configureOptions ) ;
71+ return builder ;
3172 }
3273
74+ /// <summary>
75+ /// 配置PasswordCredentialsOptions
76+ /// </summary>
77+ /// <param name="builder"></param>
78+ /// <param name="configuration">配置</param>
79+ /// <returns></returns>
80+ public static ITokenProviderBuilder ConfigurePasswordCredentials ( this ITokenProviderBuilder builder , IConfiguration configuration )
81+ {
82+ builder . AddPasswordCredentialsOptions ( ) . Bind ( configuration ) ;
83+ return builder ;
84+ }
85+
86+
87+ /// <summary>
88+ /// 配置ClientCredentialsOptions
89+ /// </summary>
90+ /// <param name="builder"></param>
91+ /// <returns></returns>
92+ private static OptionsBuilder < ClientCredentialsOptions > AddClientCredentialsOptions ( this ITokenProviderBuilder builder )
93+ {
94+ return builder . AddOptions < ClientCredentialsOptions > ( ) ;
95+ }
96+
97+ /// <summary>
98+ /// 配置PasswordCredentialsOptions
99+ /// </summary>
100+ /// <param name="builder"></param>
101+ /// <returns></returns>
102+ private static OptionsBuilder < PasswordCredentialsOptions > AddPasswordCredentialsOptions ( this ITokenProviderBuilder builder )
103+ {
104+ return builder . AddOptions < PasswordCredentialsOptions > ( ) ;
105+ }
33106
34107 /// <summary>
35108 /// 使用token提供者的名称创建指定类型的OptionsBuilder
36109 /// </summary>
37110 /// <typeparam name="TOptions"></typeparam>
38111 /// <param name="builder"></param>
39112 /// <returns></returns>
40- public static OptionsBuilder < TOptions > AddOptions < TOptions > ( this ITokenProviderBuilder builder ) where TOptions : class
113+ private static OptionsBuilder < TOptions > AddOptions < TOptions > ( this ITokenProviderBuilder builder ) where TOptions : class
41114 {
42115 return builder . Services . AddOptions < TOptions > ( builder . Name ) ;
43116 }
0 commit comments