diff --git a/lib/src/http/request/request.dart b/lib/src/http/request/request.dart index b33d648..722dc52 100644 --- a/lib/src/http/request/request.dart +++ b/lib/src/http/request/request.dart @@ -33,11 +33,36 @@ class Request { Map get _query => uri.queryParameters; - List get cookies => request.cookies; - Map body = {}; + final Map _cookies = {}; + + T? cookie(String key) { + if (_cookies[key] == null) return null; + return switch (T.toString()) { + 'String' => _cookies[key].toString(), + 'bool' => bool.parse(_cookies[key]) as T, + 'int' => int.parse(_cookies[key]) as T, + 'double' => double.parse(_cookies[key]) as T, + (_) => _cookies[key], + }; + } + + void _extractCookies() { + List? cookies = _httpHeaders[HttpHeaders.cookieHeader]; + if (cookies == null) { + return; + } + for (String cookie in cookies) { + List cookies = cookie.split(';'); + for (String cookie in cookies) { + List cookieList = cookie.split('='); + _cookies[cookieList[0].trim()] = cookieList[1].trim(); + } + } + } Future extractBody() async { + _extractCookies(); final whereMethod = ['post', 'patch', 'put'] .where((method) => method == request.method.toLowerCase()) .toList();