1
1
using System . Text . Json ;
2
2
using Microsoft . AspNetCore . HttpLogging ;
3
-
4
- static async Task < bool > handleJsonp ( HttpContext theContext , object data )
5
- {
6
- string jsonStr = JsonSerializer . Serialize ( data ) ;
7
-
8
- var response = theContext . Response ;
9
- var callback = theContext . Request . Query [ "callback" ] ;
10
- theContext . Response . Clear ( ) ;
11
- if ( string . IsNullOrEmpty ( callback ) )
12
- {
13
- response . ContentType = "application/json" ;
14
- response . Headers . Append ( "Access-Control-Allow-Origin" , "*" ) ;
15
- response . Headers . Append ( "Access-Control-Allow-Methods" , "GET" ) ;
16
- response . Headers . Append ( "Access-Control-Max-Age" , "604800" ) ;
17
- await response . WriteAsync ( jsonStr ) ;
18
- } else {
19
- response . ContentType = "text/javascript; charset=utf-8" ;
20
- await response . WriteAsync ( $ "{ callback } ({ jsonStr } );") ;
21
- }
22
- return true ;
23
- }
3
+ using Microsoft . Extensions . Primitives ;
24
4
25
5
var builder = WebApplication . CreateBuilder ( args ) ;
26
6
builder . Services . AddHttpLogging ( logging =>
@@ -37,14 +17,14 @@ static async Task<bool> handleJsonp(HttpContext theContext, object data)
37
17
38
18
var result = new TestOutput ( false , "404 Not Found" , "" ) ;
39
19
40
- await handleJsonp ( theContext , result ) ;
20
+ await JsonpHandler . handleJsonp ( theContext , result ) ;
41
21
} ) ;
42
22
43
23
app . UseHttpLogging ( ) ;
44
24
45
25
app . UseStaticFiles ( ) ;
46
26
47
- app . MapGet ( "/" , ( ) => "Running! ") ;
27
+ app . MapGet ( "/" , ( ) => $ ".NET { Environment . Version } ") ;
48
28
app . MapGet ( "/status.json" , static async ( HttpContext theContext ) =>
49
29
{
50
30
var statusResult = new StatusResult ( true ,
@@ -55,25 +35,43 @@ static async Task<bool> handleJsonp(HttpContext theContext, object data)
55
35
Environment . GetEnvironmentVariable ( "COMMIT" ) ?? "(local)"
56
36
) ;
57
37
58
- await handleJsonp ( theContext , statusResult ) ;
38
+ await JsonpHandler . handleJsonp ( theContext , statusResult ) ;
59
39
} ) ;
60
40
61
- app . MapPost ( "/test.json" , RunTest ) ;
62
- app . MapGet ( "/test.json" , RunTest ) ;
41
+ app . MapPost ( "/test.json" , PostRunTest ) ;
42
+ app . MapGet ( "/test.json" , GetRunTest ) ;
63
43
64
- static async Task RunTest ( HttpContext theContext )
65
- {
66
- // read form variables
67
- var form = await theContext . Request . ReadFormAsync ( ) ;
68
- var regex = form [ "regex" ] . FirstOrDefault ( ) ;
69
- var replacement = form [ "replacement" ] . FirstOrDefault ( ) ;
70
- var input = form [ "input" ] . ToArray ( ) ?? new string [ ] { } ;
44
+ static string [ ] getStrings ( StringValues rawValues ) {
45
+
46
+ return rawValues . Where ( i => i != null ) . Select ( i => i ! ) . ToArray ( ) ?? new string [ ] { } ;
47
+ }
48
+
49
+ static async Task GetRunTest ( HttpContext theContext )
50
+ {
51
+ var regex = theContext . Request . Query [ "regex" ] . FirstOrDefault ( ) ?? "" ;
52
+ var replacement = theContext . Request . Query [ "replacement" ] . FirstOrDefault ( ) ?? "" ;
53
+ var options = getStrings ( theContext . Request . Query [ "option" ] ) ;
54
+ var inputs = getStrings ( theContext . Request . Query [ "input" ] ) ;
55
+
56
+ var testInput = new TestInput ( regex , replacement , options , inputs ) ;
57
+ var testOutput = TestRunner . RunTest ( testInput ) ;
58
+
59
+ await JsonpHandler . handleJsonp ( theContext , testOutput ) ;
60
+ }
71
61
72
- var html = $ "{ regex } { replacement } { input . Length } { input . FirstOrDefault ( ) } ";
73
62
74
- var testOutput = new TestOutput ( true , "" , html ) ;
63
+ static async Task PostRunTest ( HttpContext theContext )
64
+ {
65
+ var form = await theContext . Request . ReadFormAsync ( ) ;
66
+ var regex = form [ "regex" ] . FirstOrDefault ( ) ?? "" ;
67
+ var replacement = form [ "replacement" ] . FirstOrDefault ( ) ?? "" ;
68
+ var options = getStrings ( form [ "option" ] ) ;
69
+ var inputs = getStrings ( form [ "input" ] ) ;
70
+
71
+ var testInput = new TestInput ( regex , replacement , options , inputs ) ;
72
+ var testOutput = TestRunner . RunTest ( testInput ) ;
75
73
76
- await handleJsonp ( theContext , testOutput ) ;
74
+ await JsonpHandler . handleJsonp ( theContext , testOutput ) ;
77
75
}
78
76
79
77
var hostname = Environment . GetEnvironmentVariable ( "HOSTNAME" ) ?? "0.0.0.0" ;
@@ -85,5 +83,4 @@ static async Task RunTest(HttpContext theContext)
85
83
app . Run ( url ) ;
86
84
87
85
record StatusResult ( Boolean success , string tech , string version , string timestamp , string lastmod , string commit ) ;
88
- record TestOutput ( Boolean success , string message , string html ) ;
89
86
0 commit comments