Repository navigation
Expand file tree
/
Copy pathStartup.cs
More file actions
75 lines (70 loc) · 3.33 KB
/
Copy pathStartup.cs
File metadata and controls
75 lines (70 loc) · 3.33 KB
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using System;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
var clientID = Configuration["APS_CLIENT_ID"];
var clientSecret = Configuration["APS_CLIENT_SECRET"];
var callbackURL = Configuration["APS_CALLBACK_URL"];
if (string.IsNullOrEmpty(clientID) || string.IsNullOrEmpty(clientSecret) || string.IsNullOrEmpty(callbackURL))
{
throw new ApplicationException("Missing required environment variables APS_CLIENT_ID, APS_CLIENT_SECRET, or APS_CALLBACK_URL.");
}
services.AddSingleton(new APS(clientID, clientSecret, callbackURL));
services.AddSingleton(CreateESignProvider());
}
// The e-sign service is chosen per deployment with ESIGN_PROVIDER (adobe or docusign)
private IESignProvider CreateESignProvider()
{
var provider = (Configuration["ESIGN_PROVIDER"] ?? "adobe").ToLowerInvariant();
var esignCallbackURL = Configuration["ESIGN_CALLBACK_URL"];
switch (provider)
{
case "adobe":
var adobeClientID = Configuration["ADOBE_SIGN_CLIENT_ID"];
var adobeClientSecret = Configuration["ADOBE_SIGN_CLIENT_SECRET"];
var adobeShard = Configuration["ADOBE_SIGN_SHARD"] ?? "na1";
if (string.IsNullOrEmpty(adobeClientID) || string.IsNullOrEmpty(adobeClientSecret) || string.IsNullOrEmpty(esignCallbackURL))
{
throw new ApplicationException("Missing required environment variables ADOBE_SIGN_CLIENT_ID, ADOBE_SIGN_CLIENT_SECRET, or ESIGN_CALLBACK_URL.");
}
return new AdobeSign(adobeClientID, adobeClientSecret, esignCallbackURL, adobeShard);
case "docusign":
var docusignClientID = Configuration["DOCUSIGN_CLIENT_ID"];
var docusignClientSecret = Configuration["DOCUSIGN_CLIENT_SECRET"];
var docusignAuthServer = Configuration["DOCUSIGN_AUTH_SERVER"] ?? "account-d.docusign.com";
if (string.IsNullOrEmpty(docusignClientID) || string.IsNullOrEmpty(docusignClientSecret) || string.IsNullOrEmpty(esignCallbackURL))
{
throw new ApplicationException("Missing required environment variables DOCUSIGN_CLIENT_ID, DOCUSIGN_CLIENT_SECRET, or ESIGN_CALLBACK_URL.");
}
return new Docusign(docusignClientID, docusignClientSecret, esignCallbackURL, docusignAuthServer);
default:
throw new ApplicationException($"Unknown ESIGN_PROVIDER '{provider}'. Use adobe or docusign.");
}
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}