/
Startup.fs
38 lines (26 loc) · 1.43 KB
/
Startup.fs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
namespace WebmentionService
open System
open Microsoft.Extensions.DependencyInjection
open Microsoft.Azure.Functions.Extensions.DependencyInjection
open WebmentionFs
open WebmentionFs.Services
open WebmentionService.Services
type Startup () =
inherit FunctionsStartup ()
override x.Configure(builder:IFunctionsHostBuilder) =
// Add request validation service
builder.Services.AddScoped<RequestValidationService>(fun _ ->
let hostNames = Environment.GetEnvironmentVariable("PERSONAL_WEBSITE_HOSTNAMES")
let hostNameList = hostNames.Split(',')
new RequestValidationService(hostNameList)) |> ignore
// Add webmention validation service
builder.Services.AddScoped<WebmentionValidationService>() |> ignore
// Add receiver service
builder.Services.AddScoped<IWebmentionReceiver<Webmention>,WebmentionReceiverService>(fun (s:IServiceProvider) ->
let requestValidationService = s.GetRequiredService<RequestValidationService>()
let webmentionValidationService = s.GetRequiredService<WebmentionValidationService>()
new WebmentionReceiverService(requestValidationService,webmentionValidationService)) |> ignore
// Add RSS service
builder.Services.AddScoped<RssService>() |> ignore
[<assembly: FunctionsStartup(typeof<Startup>)>]
do ()