-
Notifications
You must be signed in to change notification settings - Fork 14
/
WebServices.cs
74 lines (64 loc) · 2.11 KB
/
WebServices.cs
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
using System.Threading;
using System.Threading.Tasks;
using ServiceModel;
using ServiceStack;
using ServiceStack.Auth;
namespace Server
{
public static class SharedAppHost
{
public static void Configure(IAppHost appHost)
{
appHost.Config.DefaultRedirectPath = "/metadata";
appHost.Plugins.Add(new CorsFeature());
appHost.Plugins.Add(new AuthFeature(() => new AuthUserSession(),
new IAuthProvider[] {
new CustomCredentialsAuthProvider(),
new JwtAuthProvider
{
AuthKeyBase64 = Config.JwtAuthKeyBase64,
RequireSecureConnection = false,
},
}));
appHost.Plugins.Add(new EncryptedMessagesFeature
{
PrivateKeyXml = Config.PrivateKeyXml
});
}
public class CustomCredentialsAuthProvider : CredentialsAuthProvider
{
public override async Task<bool> TryAuthenticateAsync(IServiceBase authService, string userName, string password, CancellationToken token=default)
{
return userName == "user" && password == "pass";
}
}
}
public class WebServices : Service
{
public object Any(Hello request) => new HelloResponse { Result = "Hello, " + request.Name };
}
[Authenticate]
public class AuthServices : Service
{
public object Any(HelloAuth request)
{
return new HelloResponse { Result = "Hello, " + request.Name };
}
}
public class FileServices : Service
{
public object Any(SendFile request)
{
var response = new SendFileResponse
{
Name = request.Name,
};
if (base.Request.Files.Length > 0)
{
var file = base.Request.Files[0];
response.Result = $"Files: {Request.Files.Length}, name: {file.FileName}, size: {file.ContentLength} bytes";
}
return response;
}
}
}