11package express ;
22
3- import com .sun .net .httpserver .*;
3+ import com .sun .net .httpserver .Filter ;
4+ import com .sun .net .httpserver .HttpContext ;
5+ import com .sun .net .httpserver .HttpServer ;
46import express .events .Action ;
57import express .events .HttpRequest ;
68import express .http .Request ;
79import express .http .Response ;
8- import express .middleware .ExpressMiddleware ;
910
11+ import java .io .File ;
1012import java .io .IOException ;
1113import java .net .InetSocketAddress ;
1214import java .util .ArrayList ;
1517
1618public class Express {
1719
20+ private final List <Filter > MIDDLEWARE = Collections .synchronizedList (new ArrayList <>());
1821 private final List <Filter > FILTER = Collections .synchronizedList (new ArrayList <>());
22+ int middlewareIndex = 0 ;
1923
2024 private HttpServer httpServer ;
2125 private HttpContext httpContext ;
2226 private HttpRequest request404 ;
2327
24- public Express () {
25-
26- }
27-
2828 public void use (HttpRequest request ) {
29- add ( "*" , "*" , request );
29+ addFilter ( true , "*" , "*" , request );
3030 }
3131
3232 public void use (String context , HttpRequest request ) {
33- add ("*" , context , request );
34- }
35-
36- public void use (String method , String context , HttpRequest request ) {
37- add (method .toUpperCase (), context , request );
33+ addFilter (true , "*" , context , request );
3834 }
3935
40- public void on (String method , String context , HttpRequest request ) {
41- add ( method .toUpperCase (), context , request );
36+ public void use (String context , String requestMethod , HttpRequest request ) {
37+ addFilter ( true , requestMethod .toUpperCase (), context , request );
4238 }
4339
4440 public void all (String context , HttpRequest request ) {
45- add ( "*" , context , request );
41+ addFilter ( false , "*" , context , request );
4642 }
4743
4844 public void get (String context , HttpRequest request ) {
49- add ( "GET" , context , request );
45+ addFilter ( false , "GET" , context , request );
5046 }
5147
5248 public void post (String context , HttpRequest request ) {
53- add ( "POST" , context , request );
49+ addFilter ( false , "POST" , context , request );
5450 }
5551
5652 public void put (String context , HttpRequest request ) {
57- add ( "PUT" , context , request );
53+ addFilter ( false , "PUT" , context , request );
5854 }
5955
6056 public void delete (String context , HttpRequest request ) {
61- add ( "DELETE" , context , request );
57+ addFilter ( false , "DELETE" , context , request );
6258 }
6359
6460 public void patch (String context , HttpRequest request ) {
65- add ("PATCH" , context , request );
61+ addFilter (false , "PATCH" , context , request );
62+ }
63+
64+ private void addFilter (boolean middleware , String requestMethod , String context , HttpRequest request ) {
65+ ExpressFilter handler = new ExpressFilter (requestMethod , context , request );
66+ if (httpContext == null ) {
67+ if (middleware ) {
68+ MIDDLEWARE .add (handler );
69+ } else {
70+ FILTER .add (handler );
71+ }
72+ } else {
73+ List <Filter > filters = httpContext .getFilters ();
74+
75+ if (middleware ) {
76+ filters .add (middlewareIndex , handler );
77+ middlewareIndex ++;
78+ } else filters .add (handler );
79+ }
6680 }
6781
68- private void add (String requestMethod , String context , HttpRequest request ) {
69- ExpressMiddleware handler = new ExpressMiddleware (requestMethod , context , request );
82+ private void addFirst (String requestMethod , String context , HttpRequest request ) {
83+ ExpressFilter handler = new ExpressFilter (requestMethod , context , request );
7084 if (httpContext == null ) {
71- FILTER .add (handler );
85+ MIDDLEWARE .add (handler );
7286 } else {
7387 httpContext .getFilters ().add (handler );
7488 }
@@ -78,7 +92,6 @@ public void listen() throws IOException {
7892 launch (null , 80 );
7993 }
8094
81-
8295 public void listen (int port ) throws IOException {
8396 launch (null , port );
8497 }
@@ -110,6 +123,7 @@ private void launch(Action action, int port) throws IOException {
110123 }
111124 });
112125
126+ httpContext .getFilters ().addAll (MIDDLEWARE );
113127 httpContext .getFilters ().addAll (FILTER );
114128
115129 httpServer .start ();
@@ -121,4 +135,15 @@ private void launch(Action action, int port) throws IOException {
121135 }).start ();
122136 }
123137
138+ public static HttpRequest statics (String path ) {
139+ return (req , res ) -> {
140+ File reqFile = new File (path + req .getURI ().getPath ());
141+
142+ if (reqFile .exists ()) {
143+ String extension = reqFile .getAbsolutePath ().replaceAll ("^(.*\\ .|.*\\ \\ |.+$)" , "" );
144+ String contentType = ExpressUtils .getContentType (extension );
145+ res .send (reqFile , contentType );
146+ }
147+ };
148+ }
124149}
0 commit comments