59 lines
2.4 KiB
C#
59 lines
2.4 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System;
|
|
using System.Text;
|
|
using Microsoft.AspNetCore.Builder;
|
|
using Microsoft.AspNetCore.Routing;
|
|
using Microsoft.AspNetCore.Routing.Matchers;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace DispatcherSample.Web
|
|
{
|
|
public class Startup
|
|
{
|
|
private static readonly byte[] _homePayload = Encoding.UTF8.GetBytes("Dispatcher sample endpoints:" + Environment.NewLine + "/plaintext");
|
|
private static readonly byte[] _helloWorldPayload = Encoding.UTF8.GetBytes("Hello, World!");
|
|
|
|
public void ConfigureServices(IServiceCollection services)
|
|
{
|
|
services.AddRouting();
|
|
services.AddDispatcher(options =>
|
|
{
|
|
options.DataSources.Add(new DefaultEndpointDataSource(new[]
|
|
{
|
|
new MatcherEndpoint((next) => (httpContext) =>
|
|
{
|
|
var response = httpContext.Response;
|
|
var payloadLength = _homePayload.Length;
|
|
response.StatusCode = 200;
|
|
response.ContentType = "text/plain";
|
|
response.ContentLength = payloadLength;
|
|
return response.Body.WriteAsync(_homePayload, 0, payloadLength);
|
|
},
|
|
"/", new { }, 0, EndpointMetadataCollection.Empty, "Home", address: null),
|
|
new MatcherEndpoint((next) => (httpContext) =>
|
|
{
|
|
var response = httpContext.Response;
|
|
var payloadLength = _helloWorldPayload.Length;
|
|
response.StatusCode = 200;
|
|
response.ContentType = "text/plain";
|
|
response.ContentLength = payloadLength;
|
|
return response.Body.WriteAsync(_helloWorldPayload, 0, payloadLength);
|
|
},
|
|
"/plaintext", new { }, 0, EndpointMetadataCollection.Empty, "Plaintext", address: null),
|
|
}));
|
|
});
|
|
}
|
|
|
|
public void Configure(IApplicationBuilder app)
|
|
{
|
|
app.UseDispatcher();
|
|
|
|
// Imagine some more stuff here...
|
|
|
|
app.UseEndpoint();
|
|
}
|
|
}
|
|
}
|