11using System . Text . Json ;
22using 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 ;
244
255var builder = WebApplication . CreateBuilder ( args ) ;
266builder . Services . AddHttpLogging ( logging =>
@@ -37,14 +17,14 @@ static async Task<bool> handleJsonp(HttpContext theContext, object data)
3717
3818 var result = new TestOutput ( false , "404 Not Found" , "" ) ;
3919
40- await handleJsonp ( theContext , result ) ;
20+ await JsonpHandler . handleJsonp ( theContext , result ) ;
4121} ) ;
4222
4323app . UseHttpLogging ( ) ;
4424
4525app . UseStaticFiles ( ) ;
4626
47- app . MapGet ( "/" , ( ) => "Running! ") ;
27+ app . MapGet ( "/" , ( ) => $ ".NET { Environment . Version } ") ;
4828app . MapGet ( "/status.json" , static async ( HttpContext theContext ) =>
4929{
5030 var statusResult = new StatusResult ( true ,
@@ -55,25 +35,43 @@ static async Task<bool> handleJsonp(HttpContext theContext, object data)
5535 Environment . GetEnvironmentVariable ( "COMMIT" ) ?? "(local)"
5636 ) ;
5737
58- await handleJsonp ( theContext , statusResult ) ;
38+ await JsonpHandler . handleJsonp ( theContext , statusResult ) ;
5939} ) ;
6040
61- app . MapPost ( "/test.json" , RunTest ) ;
62- app . MapGet ( "/test.json" , RunTest ) ;
41+ app . MapPost ( "/test.json" , PostRunTest ) ;
42+ app . MapGet ( "/test.json" , GetRunTest ) ;
6343
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+ }
7161
72- var html = $ "{ regex } { replacement } { input . Length } { input . FirstOrDefault ( ) } ";
7362
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 ) ;
7573
76- await handleJsonp ( theContext , testOutput ) ;
74+ await JsonpHandler . handleJsonp ( theContext , testOutput ) ;
7775}
7876
7977var hostname = Environment . GetEnvironmentVariable ( "HOSTNAME" ) ?? "0.0.0.0" ;
@@ -85,5 +83,4 @@ static async Task RunTest(HttpContext theContext)
8583app . Run ( url ) ;
8684
8785record StatusResult ( Boolean success , string tech , string version , string timestamp , string lastmod , string commit ) ;
88- record TestOutput ( Boolean success , string message , string html ) ;
8986
0 commit comments