Skip to content

Commit aed4e55

Browse files
JamesNKpranavkmTratcher
authored
Add OWIN docs (#28947)
Co-authored-by: Pranav K <[email protected]> Co-authored-by: Chris Ross <[email protected]>
1 parent 652c03f commit aed4e55

11 files changed

+205
-7
lines changed

src/Http/Owin/src/IOwinEnvironmentFeature.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,14 @@
55

66
namespace Microsoft.AspNetCore.Owin
77
{
8+
/// <summary>
9+
/// A feature interface for an OWIN environment.
10+
/// </summary>
811
public interface IOwinEnvironmentFeature
912
{
13+
/// <summary>
14+
/// Gets or sets the environment values.
15+
/// </summary>
1016
IDictionary<string, object> Environment { get; set; }
1117
}
12-
}
18+
}

src/Http/Owin/src/Microsoft.AspNetCore.Owin.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
<PropertyGroup>
44
<Description>ASP.NET Core component for running OWIN middleware in an ASP.NET Core application, and to run ASP.NET Core middleware in an OWIN application.</Description>
55
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
6-
<NoWarn>$(NoWarn);CS1591</NoWarn>
76
<GenerateDocumentationFile>true</GenerateDocumentationFile>
87
<PackageTags>aspnetcore;owin</PackageTags>
98
</PropertyGroup>

src/Http/Owin/src/OwinEnvironment.cs

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,18 @@ namespace Microsoft.AspNetCore.Owin
2828
Task<WebSocket>
2929
>;
3030

31+
/// <summary>
32+
/// A loosely-typed OWIN environment wrapper over an <see cref="HttpContext"/>.
33+
/// </summary>
3134
public class OwinEnvironment : IDictionary<string, object>
3235
{
3336
private HttpContext _context;
3437
private IDictionary<string, FeatureMap> _entries;
3538

39+
/// <summary>
40+
/// Initializes a new instance of <see cref="OwinEnvironment"/>.
41+
/// </summary>
42+
/// <param name="context">The request context.</param>
3643
public OwinEnvironment(HttpContext context)
3744
{
3845
if (context.Features.Get<IHttpRequestFeature>() == null)
@@ -131,6 +138,9 @@ public OwinEnvironment(HttpContext context)
131138
}
132139

133140
// Public in case there's a new/custom feature interface that needs to be added.
141+
/// <summary>
142+
/// Get the environment's feature maps.
143+
/// </summary>
134144
public IDictionary<string, FeatureMap> FeatureMaps
135145
{
136146
get { return _entries; }
@@ -269,6 +279,7 @@ bool ICollection<KeyValuePair<string, object>>.Remove(KeyValuePair<string, objec
269279
throw new NotImplementedException();
270280
}
271281

282+
/// <inheritdoc />
272283
public IEnumerator<KeyValuePair<string, object>> GetEnumerator()
273284
{
274285
foreach (var entryPair in _entries)
@@ -290,27 +301,63 @@ IEnumerator IEnumerable.GetEnumerator()
290301
return GetEnumerator();
291302
}
292303

304+
/// <summary>
305+
/// Maps OWIN keys to ASP.NET Core features.
306+
/// </summary>
293307
public class FeatureMap
294308
{
309+
/// <summary>
310+
/// Create a <see cref="FeatureMap"/> for the specified feature interface type.
311+
/// </summary>
312+
/// <param name="featureInterface">The feature interface type.</param>
313+
/// <param name="getter">Value getter.</param>
295314
public FeatureMap(Type featureInterface, Func<object, object> getter)
296315
: this(featureInterface, getter, defaultFactory: null)
297316
{
298317
}
318+
319+
/// <summary>
320+
/// Initializes a new instance of <see cref="FeatureMap"/> for the specified feature interface type.
321+
/// </summary>
322+
/// <param name="featureInterface">The feature interface type.</param>
323+
/// <param name="getter">Value getter delegate.</param>
324+
/// <param name="defaultFactory">Default value factory delegate.</param>
299325
public FeatureMap(Type featureInterface, Func<object, object> getter, Func<object> defaultFactory)
300326
: this(featureInterface, getter, defaultFactory, setter: null)
301327
{
302328
}
303329

330+
/// <summary>
331+
/// Initializes a new instance of <see cref="FeatureMap"/> for the specified feature interface type.
332+
/// </summary>
333+
/// <param name="featureInterface">The feature interface type.</param>
334+
/// <param name="getter">Value getter delegate.</param>
335+
/// <param name="setter">Value setter delegate.</param>
304336
public FeatureMap(Type featureInterface, Func<object, object> getter, Action<object, object> setter)
305337
: this(featureInterface, getter, defaultFactory: null, setter: setter)
306338
{
307339
}
308340

341+
/// <summary>
342+
/// Initializes a new instance of <see cref="FeatureMap"/> for the specified feature interface type.
343+
/// </summary>
344+
/// <param name="featureInterface">The feature interface type.</param>
345+
/// <param name="getter">Value getter delegate.</param>
346+
/// <param name="defaultFactory">Default value factory delegate.</param>
347+
/// <param name="setter">Value setter delegate.</param>
309348
public FeatureMap(Type featureInterface, Func<object, object> getter, Func<object> defaultFactory, Action<object, object> setter)
310349
: this(featureInterface, getter, defaultFactory, setter, featureFactory: null)
311350
{
312351
}
313352

353+
/// <summary>
354+
/// Initializes a new instance of <see cref="FeatureMap"/> for the specified feature interface type.
355+
/// </summary>
356+
/// <param name="featureInterface">The feature interface type.</param>
357+
/// <param name="getter">Value getter delegate.</param>
358+
/// <param name="defaultFactory">Default value factory delegate.</param>
359+
/// <param name="setter">Value setter delegate.</param>
360+
/// <param name="featureFactory">Feature factory delegate.</param>
314361
public FeatureMap(Type featureInterface, Func<object, object> getter, Func<object> defaultFactory, Action<object, object> setter, Func<object> featureFactory)
315362
{
316363
FeatureInterface = featureInterface;
@@ -326,6 +373,9 @@ public FeatureMap(Type featureInterface, Func<object, object> getter, Func<objec
326373
private Func<object> DefaultFactory { get; set; }
327374
private Func<object> FeatureFactory { get; set; }
328375

376+
/// <summary>
377+
/// Gets a value indicating whether the feature map is settable.
378+
/// </summary>
329379
public bool CanSet
330380
{
331381
get { return Setter != null; }
@@ -366,28 +416,59 @@ internal void Set(HttpContext context, object value)
366416
}
367417
}
368418

419+
/// <summary>
420+
/// Maps OWIN keys to ASP.NET Core features.
421+
/// </summary>
422+
/// <typeparam name="TFeature">Feature interface type.</typeparam>
369423
public class FeatureMap<TFeature> : FeatureMap
370424
{
425+
/// <summary>
426+
/// Initializes a new instance of <see cref="FeatureMap"/> for the specified feature interface type.
427+
/// </summary>
428+
/// <param name="getter">Value getter.</param>
371429
public FeatureMap(Func<TFeature, object> getter)
372430
: base(typeof(TFeature), feature => getter((TFeature)feature))
373431
{
374432
}
375433

434+
/// <summary>
435+
/// Initializes a new instance of <see cref="FeatureMap"/> for the specified feature interface type.
436+
/// </summary>
437+
/// <param name="getter">Value getter delegate.</param>
438+
/// <param name="defaultFactory">Default value factory delegate.</param>
376439
public FeatureMap(Func<TFeature, object> getter, Func<object> defaultFactory)
377440
: base(typeof(TFeature), feature => getter((TFeature)feature), defaultFactory)
378441
{
379442
}
380443

444+
/// <summary>
445+
/// Initializes a new instance of <see cref="FeatureMap"/> for the specified feature interface type.
446+
/// </summary>
447+
/// <param name="getter">Value getter delegate.</param>
448+
/// <param name="setter">Value setter delegate.</param>
381449
public FeatureMap(Func<TFeature, object> getter, Action<TFeature, object> setter)
382450
: base(typeof(TFeature), feature => getter((TFeature)feature), (feature, value) => setter((TFeature)feature, value))
383451
{
384452
}
385453

454+
/// <summary>
455+
/// Initializes a new instance of <see cref="FeatureMap"/> for the specified feature interface type.
456+
/// </summary>
457+
/// <param name="getter">Value getter delegate.</param>
458+
/// <param name="defaultFactory">Default value factory delegate.</param>
459+
/// <param name="setter">Value setter delegate.</param>
386460
public FeatureMap(Func<TFeature, object> getter, Func<object> defaultFactory, Action<TFeature, object> setter)
387461
: base(typeof(TFeature), feature => getter((TFeature)feature), defaultFactory, (feature, value) => setter((TFeature)feature, value))
388462
{
389463
}
390464

465+
/// <summary>
466+
/// Initializes a new instance of <see cref="FeatureMap"/> for the specified feature interface type.
467+
/// </summary>
468+
/// <param name="getter">Value getter delegate.</param>
469+
/// <param name="defaultFactory">Default value factory delegate.</param>
470+
/// <param name="setter">Value setter delegate.</param>
471+
/// <param name="featureFactory">Feature factory delegate.</param>
391472
public FeatureMap(Func<TFeature, object> getter, Func<object> defaultFactory, Action<TFeature, object> setter, Func<TFeature> featureFactory)
392473
: base(typeof(TFeature), feature => getter((TFeature)feature), defaultFactory, (feature, value) => setter((TFeature)feature, value), () => featureFactory())
393474
{

src/Http/Owin/src/OwinEnvironmentFeature.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,12 @@
55

66
namespace Microsoft.AspNetCore.Owin
77
{
8+
/// <summary>
9+
/// Default implementation of <see cref="IOwinEnvironmentFeature"/>.
10+
/// </summary>
811
public class OwinEnvironmentFeature : IOwinEnvironmentFeature
912
{
13+
/// <inheritdoc />
1014
public IDictionary<string, object> Environment { get; set; }
1115
}
12-
}
16+
}

src/Http/Owin/src/OwinExtensions.cs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,16 @@ namespace Microsoft.AspNetCore.Builder
2020
Func<IDictionary<string, object>, Task>
2121
>;
2222

23+
/// <summary>
24+
/// Extension methods to add OWIN to an HTTP application pipeline.
25+
/// </summary>
2326
public static class OwinExtensions
2427
{
28+
/// <summary>
29+
/// Adds an OWIN pipeline to the specified <see cref="IApplicationBuilder"/>.
30+
/// </summary>
31+
/// <param name="builder">The <see cref="IApplicationBuilder"/> to add the pipeline to.</param>
32+
/// <returns>An action used to create the OWIN pipeline.</returns>
2533
public static AddMiddleware UseOwin(this IApplicationBuilder builder)
2634
{
2735
if (builder == null)
@@ -62,6 +70,12 @@ public static AddMiddleware UseOwin(this IApplicationBuilder builder)
6270
return add;
6371
}
6472

73+
/// <summary>
74+
/// Adds OWIN middleware pipeline to the specified <see cref="IApplicationBuilder"/>.
75+
/// </summary>
76+
/// <param name="builder">The <see cref="IApplicationBuilder"/> to add the middleware to.</param>
77+
/// <param name="pipeline">A delegate which can specify the OWIN pipeline.</param>
78+
/// <returns>The original <see cref="IApplicationBuilder"/>.</returns>
6579
public static IApplicationBuilder UseOwin(this IApplicationBuilder builder, Action<AddMiddleware> pipeline)
6680
{
6781
if (builder == null)
@@ -77,11 +91,22 @@ public static IApplicationBuilder UseOwin(this IApplicationBuilder builder, Acti
7791
return builder;
7892
}
7993

94+
/// <summary>
95+
/// Creates an <see cref="IApplicationBuilder"/> for an OWIN pipeline.
96+
/// </summary>
97+
/// <param name="app">The OWIN pipeline.</param>
98+
/// <returns>An <see cref="IApplicationBuilder"/></returns>
8099
public static IApplicationBuilder UseBuilder(this AddMiddleware app)
81100
{
82101
return app.UseBuilder(serviceProvider: null);
83102
}
84103

104+
/// <summary>
105+
/// Creates an <see cref="IApplicationBuilder"/> for an OWIN pipeline.
106+
/// </summary>
107+
/// <param name="app">The OWIN pipeline.</param>
108+
/// <param name="serviceProvider">A service provider for <see cref="IApplicationBuilder.ApplicationServices"/>.</param>
109+
/// <returns>An <see cref="IApplicationBuilder"/>.</returns>
85110
public static IApplicationBuilder UseBuilder(this AddMiddleware app, IServiceProvider serviceProvider)
86111
{
87112
if (app == null)
@@ -142,11 +167,24 @@ private static CreateMiddleware CreateMiddlewareFactory(Func<RequestDelegate, Re
142167
};
143168
}
144169

170+
/// <summary>
171+
/// Creates an <see cref="IApplicationBuilder"/> for an OWIN pipeline.
172+
/// </summary>
173+
/// <param name="app">The OWIN pipeline.</param>
174+
/// <param name="pipeline">A delegate used to configure a middleware pipeline.</param>
175+
/// <returns>An <see cref="IApplicationBuilder"/>.</returns>
145176
public static AddMiddleware UseBuilder(this AddMiddleware app, Action<IApplicationBuilder> pipeline)
146177
{
147178
return app.UseBuilder(pipeline, serviceProvider: null);
148179
}
149180

181+
/// <summary>
182+
/// Creates an <see cref="IApplicationBuilder"/> for an OWIN pipeline.
183+
/// </summary>
184+
/// <param name="app">The OWIN pipeline.</param>
185+
/// <param name="pipeline">A delegate used to configure a middleware pipeline.</param>
186+
/// <param name="serviceProvider">A service provider for <see cref="IApplicationBuilder.ApplicationServices"/>.</param>
187+
/// <returns>An <see cref="IApplicationBuilder"/>.</returns>
150188
public static AddMiddleware UseBuilder(this AddMiddleware app, Action<IApplicationBuilder> pipeline, IServiceProvider serviceProvider)
151189
{
152190
if (app == null)

src/Http/Owin/src/OwinFeatureCollection.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ namespace Microsoft.AspNetCore.Owin
2323
{
2424
using SendFileFunc = Func<string, long, long?, CancellationToken, Task>;
2525

26+
/// <summary>
27+
/// OWIN feature collection.
28+
/// </summary>
2629
public class OwinFeatureCollection :
2730
IFeatureCollection,
2831
IHttpRequestFeature,
@@ -36,10 +39,17 @@ public class OwinFeatureCollection :
3639
IHttpWebSocketFeature,
3740
IOwinEnvironmentFeature
3841
{
42+
/// <summary>
43+
/// Gets or sets OWIN environment values.
44+
/// </summary>
3945
public IDictionary<string, object> Environment { get; set; }
4046
private PipeWriter _responseBodyWrapper;
4147
private bool _headersSent;
4248

49+
/// <summary>
50+
/// Initializes a new instance of <see cref="OwinFeatureCollection"/>.
51+
/// </summary>
52+
/// <param name="environment">The environment values.</param>
4353
public OwinFeatureCollection(IDictionary<string, object> environment)
4454
{
4555
Environment = environment;
@@ -318,16 +328,19 @@ Task<WebSocket> IHttpWebSocketFeature.AcceptAsync(WebSocketAcceptContext context
318328

319329
// IFeatureCollection
320330

331+
/// <inheritdoc/>
321332
public int Revision
322333
{
323334
get { return 0; } // Not modifiable
324335
}
325336

337+
/// <inheritdoc/>
326338
public bool IsReadOnly
327339
{
328340
get { return true; }
329341
}
330342

343+
/// <inheritdoc/>
331344
public object this[Type key]
332345
{
333346
get { return Get(key); }
@@ -355,6 +368,7 @@ private bool SupportsInterface(Type key)
355368
return false;
356369
}
357370

371+
/// <inheritdoc/>
358372
public object Get(Type key)
359373
{
360374
if (SupportsInterface(key))
@@ -364,16 +378,19 @@ public object Get(Type key)
364378
return null;
365379
}
366380

381+
/// <inheritdoc/>
367382
public void Set(Type key, object value)
368383
{
369384
throw new NotSupportedException();
370385
}
371386

387+
/// <inheritdoc/>
372388
public TFeature Get<TFeature>()
373389
{
374390
return (TFeature)this[typeof(TFeature)];
375391
}
376392

393+
/// <inheritdoc/>
377394
public void Set<TFeature>(TFeature instance)
378395
{
379396
this[typeof(TFeature)] = instance;
@@ -384,6 +401,7 @@ IEnumerator IEnumerable.GetEnumerator()
384401
return GetEnumerator();
385402
}
386403

404+
/// <inheritdoc/>
387405
public IEnumerator<KeyValuePair<Type, object>> GetEnumerator()
388406
{
389407
yield return new KeyValuePair<Type, object>(typeof(IHttpRequestFeature), this);
@@ -431,6 +449,7 @@ Task IHttpResponseBodyFeature.CompleteAsync()
431449
return Task.CompletedTask;
432450
}
433451

452+
/// <inheritdoc/>
434453
public void Dispose()
435454
{
436455
}

0 commit comments

Comments
 (0)