forked from nilaoda/WVCore.Server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRequestHandler.cs
73 lines (69 loc) · 2.76 KB
/
RequestHandler.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
using Microsoft.AspNetCore.Http;
using NLog;
namespace WVCore.Server
{
internal class RequestHandler
{
static Logger logger = LogManager.GetCurrentClassLogger();
public static async Task<IResult> HandleCommon(HttpRequest request, WVApi wvApi)
{
try
{
var apiReqeust = await request.ReadFromJsonAsync<ApiRequest>();
logger.Info(request.Path + " ==> " + Util.ConvertToJson(apiReqeust));
var keys = await WVUtil.GetKeysAsync(apiReqeust.PSSH, apiReqeust.LicenseUrl, apiReqeust.Headers, wvApi);
var apiResponse = new ApiResponse()
{
PSSH = apiReqeust.PSSH,
Keys = keys
};
logger.Info(request.Path + " <== " + Util.ConvertToJson(apiResponse));
return Results.Ok(apiResponse);
}
catch (Exception)
{
return Results.Problem("Error");
}
}
public static async Task<IResult> HandleChallenge(HttpRequest request, WVApi wvApi)
{
try
{
var challengeReqeust = await request.ReadFromJsonAsync<ChallengeRequest>();
logger.Info(request.Path + " ==> " + Util.ConvertToJson(challengeReqeust));
var challenge = wvApi.GetChallenge(challengeReqeust.PSSH, challengeReqeust.CertBase64, false, false);
var challengeResponse = new ChallengeResonse()
{
ChallengeBase64 = Convert.ToBase64String(challenge)
};
logger.Info(request.Path + " <== " + Util.ConvertToJson(challengeResponse));
return Results.Ok(challengeResponse);
}
catch (Exception)
{
return Results.Problem("Error");
}
}
public static async Task<IResult> HandleKeys(HttpRequest request, WVApi wvApi)
{
try
{
var keyReqeust = await request.ReadFromJsonAsync<KeyRequest>();
logger.Info(request.Path + " ==> " + Util.ConvertToJson(keyReqeust));
var pssh = wvApi.ProvideLicense(keyReqeust.LicenseBase64, keyReqeust.ChallengeBase64);
var keys = wvApi.GetKeys().Select(k => k.ToString()).ToList();
var apiResponse = new ApiResponse()
{
PSSH = keyReqeust.PSSH,
Keys = keys
};
logger.Info(request.Path + " <== " + Util.ConvertToJson(apiResponse));
return Results.Ok(apiResponse);
}
catch (Exception)
{
return Results.Problem("Error");
}
}
}
}