first cut at body matching
[catagits/Web-Simple.git] / lib / Web / Simple / ParamParser.pm
index e1827d1..46f8533 100644 (file)
@@ -4,6 +4,7 @@ use strict;
 use warnings FATAL => 'all';
 
 sub UNPACKED_QUERY () { __PACKAGE__.'.unpacked_query' }
+sub UNPACKED_BODY () { __PACKAGE__.'.unpacked_body' }
 
 sub get_unpacked_query_from {
   return $_[0]->{+UNPACKED_QUERY} ||= do {
@@ -11,6 +12,18 @@ sub get_unpacked_query_from {
   };
 }
 
+sub get_unpacked_body_from {
+  return $_[0]->{+UNPACKED_BODY} ||= do {
+    if (($_[0]->{CONTENT_TYPE}||'') eq 'application/x-www-form-urlencoded'
+        and defined $_[0]->{CONTENT_LENGTH}) {
+      $_[0]->{'psgi.input'}->read(my $buf, $_[0]->{CONTENT_LENGTH});
+      _unpack_params($buf);
+    } else {
+      {}
+    }
+  };
+}
+
 {
   # shamelessly stolen from HTTP::Body::UrlEncoded by Christian Hansen