@@ -19,22 +19,22 @@ class RequestHandler {
1919 private final BufferedReader requestStream ;
2020 private final Request request ;
2121
22- static RequestHandler getInstance (Request request ,BufferedReader requestStream ){
23- return new RequestHandler (request ,requestStream );
22+ static RequestHandler getInstance (Request request , BufferedReader requestStream ) {
23+ return new RequestHandler (request , requestStream );
2424 }
2525
26- private RequestHandler (Request request ,BufferedReader requestStream ) {
26+ private RequestHandler (Request request , BufferedReader requestStream ) {
2727 this .requestStream = requestStream ;
2828 this .request = request ;
2929 }
3030
31- Request extract () throws IOException , JSONException {
31+ Request extract () throws IOException , JSONException {
3232 String headerLine = requestStream .readLine (); // ===> POST / HTTP/1.1
3333
34- if (headerLine == null )
34+ if (headerLine == null )
3535 return request ;
3636
37- Scanner scanner = new Scanner (headerLine );
37+ Scanner scanner = new Scanner (headerLine );
3838
3939 this .request .setMethod (scanner .next ().toLowerCase ()); //===> POST
4040 this .request .setRoutePath (scanner .next ().toLowerCase ()); // ===> /
@@ -43,24 +43,39 @@ Request extract() throws IOException ,JSONException{
4343 scanner .close ();
4444
4545 // Headers ...
46- Map <String ,String > requestHeaders = new HashMap <>();
46+ Map <String , String > requestHeaders = new HashMap <>();
4747
48- while ((headerLine = requestStream .readLine ()).length () != 0 ){
48+ while ((headerLine = requestStream .readLine ()).length () != 0 ) {
4949 scanner = new Scanner (headerLine );
5050
51- String key = scanner .next ().replace (":" ,"" );
51+ String key = scanner .next ().replace (":" , "" );
5252 StringBuilder value = new StringBuilder ();
5353
54- while (scanner .hasNext ()){ value .append (scanner .next ()); }
54+ while (scanner .hasNext ()) {
55+ value .append (scanner .next ());
56+ }
5557
5658 requestHeaders .put (key .toLowerCase (), value .toString ());
5759
5860 scanner .close ();
5961 }
6062
63+ String cookies = requestHeaders .get ("cookie" );
64+ if (cookies != null && !cookies .isEmpty ()) {
65+ Map <String , String > requestCookies = new HashMap <>();
66+ String [] data = cookies .split (";" );
67+ for (String s : data ) {
68+ String [] cook = s .split ("=" );
69+ if (cook .length == 2 )
70+ requestCookies .put (cook [0 ], cook [1 ]);
71+ }
72+ request .setRequestCookies (requestCookies );
73+ requestHeaders .remove ("cookie" );
74+ }
75+
6176 // Review Content Type & if Form-Data ==> get Boundary
6277 String contentTypeHeader = requestHeaders .get (ServerHelper .MAIN_HEADERS .CONTENT_TYPE );
63- if (contentTypeHeader != null && contentTypeHeader .toLowerCase ().contains (ServerHelper .CONTENT_TYPE .FORM_DATA )) {
78+ if (contentTypeHeader != null && contentTypeHeader .toLowerCase ().contains (ServerHelper .CONTENT_TYPE .FORM_DATA )) {
6479 // multipart/form-data; boundary=--------------------------809476465016676300543428
6580 String [] data = contentTypeHeader .split (";" );
6681 requestHeaders .put (ServerHelper .MAIN_HEADERS .CONTENT_TYPE , data [0 ]);
@@ -75,14 +90,14 @@ Request extract() throws IOException ,JSONException{
7590 return request ;
7691 }
7792
78- private void extractPayload () throws IOException ,JSONException {
93+ private void extractPayload () throws IOException , JSONException {
7994 StringBuilder payload = new StringBuilder ();
80- while (requestStream .ready ()){
95+ while (requestStream .ready ()) {
8196 payload .append ((char ) requestStream .read ());
8297 }
8398 String contentType = request .getHeaders ().get (ServerHelper .MAIN_HEADERS .CONTENT_TYPE );
8499
85- if (contentType != null ){
100+ if (contentType != null ) {
86101 Object requestPayload = null ;
87102
88103 switch (contentType ) {
@@ -94,11 +109,11 @@ private void extractPayload() throws IOException,JSONException{
94109 break ;
95110 case ServerHelper .CONTENT_TYPE .FORM_URL_ENCODED_DATA :
96111 String [] formParams = payload .toString ().split ("&" );
97- if (formParams .length > 0 ) {
112+ if (formParams .length > 0 ) {
98113 requestPayload = new JSONObject ();
99114 for (String formParam : formParams ) {
100115 String [] details = formParam .split ("=" );
101- if (details .length == 2 ) {
116+ if (details .length == 2 ) {
102117 ((JSONObject ) requestPayload ).put (details [0 ], details [1 ]);
103118 }
104119 }
0 commit comments