lib: remove useless comparison on null that broke tests
[nit.git] / lib / nitcorn / http_request.nit
index 07b91ad..47e6823 100644 (file)
@@ -57,6 +57,41 @@ class HttpRequest
 
        # The arguments passed with the POST or GET method (with a priority on POST)
        var all_args = new HashMap[String, String]
+
+       # Returns argument `arg_name` in the request as a String
+       # or null if it was not found.
+       # Also cleans the String by trimming it.
+       # If the Strings happens to be empty after trimming,
+       # the method will return `null`
+       #
+       # NOTE: Prioritizes POST before GET
+       fun string_arg(arg_name: String): nullable String do
+               if not all_args.has_key(arg_name) then return null
+               var s = all_args[arg_name].trim
+               if s.is_empty then return null
+               return s
+       end
+
+       # Returns argument `arg_name` as an Int or `null` if not found or not a number.
+       #
+       # NOTE: Prioritizes POST before GET
+       fun int_arg(arg_name: String): nullable Int do
+               if not all_args.has_key(arg_name) then return null
+               var i = all_args[arg_name]
+               if not i.is_numeric then return null
+               return i.to_i
+       end
+
+       # Returns argument `arg_name` as a Bool or `null` if not found or not a boolean.
+       #
+       # NOTE: Prioritizes POST before GET
+       fun bool_arg(arg_name: String): nullable Bool do
+               if not all_args.has_key(arg_name) then return null
+               var i = all_args[arg_name]
+               if i == "true" then return true
+               if i == "false" then return false
+               return null
+       end
 end
 
 # Utility class to parse a request string and build a `HttpRequest`
@@ -114,10 +149,6 @@ class HttpRequestParser
                                var parts = line.split_once_on('=')
                                if parts.length > 1 then
                                        var decoded = parts[1].replace('+', " ").from_percent_encoding
-                                       if decoded == null then
-                                               print "decode error"
-                                               continue
-                                       end
                                        http_request.post_args[parts[0]] = decoded
                                        http_request.all_args[parts[0]] = decoded
                                else