changeset 11244:7a4d00ef25a8 octave-forge

POST support
author abarth93
date Mon, 19 Nov 2012 20:49:15 +0000
parents cf9bc1303f12
children d4f697a0ce8e
files extra/cgi/inst/@cgi/cgi.m
diffstat 1 files changed, 17 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/extra/cgi/inst/@cgi/cgi.m	Mon Nov 19 20:46:46 2012 +0000
+++ b/extra/cgi/inst/@cgi/cgi.m	Mon Nov 19 20:49:15 2012 +0000
@@ -11,11 +11,27 @@
 
 function retval = cgi()
 
-self.query_string = getenv('QUERY_STRING');
+self.request_method = getenv('REQUEST_METHOD');
 
 self.params = {};
 self.vals = {};
 
+if strcmp(self.request_method,'GET') || ...
+   strcmp(self.request_method,'HEAD')
+  % GET/HEAD request
+  self.query_string = getenv('QUERY_STRING');
+elseif strcmp(self.request_method,'POST')
+  % POST request
+  content_type = getenv('CONTENT_TYPE');
+  content_length = str2double(getenv('CONTENT_LENGTH'));
+  assert(content_type,'application/x-www-form-urlencoded');
+  self.query_string = fscanf(stdin,'%c',content_length);
+  %fprintf(stderr,'query_string "%s" "%s" "%d"',self.query_string,content_type,content_length);
+else
+  error('unsupported requested method',self.request_method);
+end
+
+
 % should also split at ";"
 p = strsplit(self.query_string,'&');