CVSROOT: /cvsroot/gnash Module name: gnash Changes by: Udo Giacomozzi <udog> 08/01/12 12:48:07
Modified files: . : ChangeLog libbase : URL.h server : sprite_instance.cpp sprite_instance.h Log message: * libbase/URL.h: add set method for querystring * server/sprite_instance.{cpp,h}: implement GET and POST for loadVariables() CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5384&r2=1.5385 http://cvs.savannah.gnu.org/viewcvs/gnash/libbase/URL.h?cvsroot=gnash&r1=1.18&r2=1.19 http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.442&r2=1.443 http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.h?cvsroot=gnash&r1=1.163&r2=1.164 Patches: Index: ChangeLog =================================================================== RCS file: /cvsroot/gnash/gnash/ChangeLog,v retrieving revision 1.5384 retrieving revision 1.5385 diff -u -b -r1.5384 -r1.5385 --- ChangeLog 11 Jan 2008 18:35:49 -0000 1.5384 +++ ChangeLog 12 Jan 2008 12:48:06 -0000 1.5385 @@ -1,3 +1,9 @@ +2008-01-12 Udo Giacomozzi <[EMAIL PROTECTED]> + + * libbase/URL.h: add set method for querystring + * server/sprite_instance.{cpp,h}: implement GET and POST for + loadVariables() + 2008-01-11 Sandro Santilli <[EMAIL PROTECTED]> * testsuite/generic-testrunner.sh: sleep a tenth (1/10) Index: libbase/URL.h =================================================================== RCS file: /cvsroot/gnash/gnash/libbase/URL.h,v retrieving revision 1.18 retrieving revision 1.19 diff -u -b -r1.18 -r1.19 --- libbase/URL.h 13 Dec 2007 01:08:06 -0000 1.18 +++ libbase/URL.h 12 Jan 2008 12:48:06 -0000 1.19 @@ -86,6 +86,10 @@ /// std::string querystring() const { return _querystring; } + /// Set the 'querystring' member of this URL to a new value + /// + void set_querystring(std::string value) { _querystring = value; } + /// Return the full absolute URL as a string. // /// TODO: make output operator and operator+ for strings Index: server/sprite_instance.cpp =================================================================== RCS file: /cvsroot/gnash/gnash/server/sprite_instance.cpp,v retrieving revision 1.442 retrieving revision 1.443 diff -u -b -r1.442 -r1.443 --- server/sprite_instance.cpp 12 Jan 2008 11:04:33 -0000 1.442 +++ server/sprite_instance.cpp 12 Jan 2008 12:48:06 -0000 1.443 @@ -3934,20 +3934,58 @@ } void -sprite_instance::loadVariables(const URL& url, short sendVarsMethod) +sprite_instance::loadVariables(URL url, short sendVarsMethod) { // Check host security // will be done by LoadVariablesThread (down by getStream, that is) //if ( ! URLAccessManager::allow(url) ) return; - if ( sendVarsMethod ) + std::string postdata = ""; + + if ( sendVarsMethod ) // 1=GET, 2=POST + { + + typedef std::map<std::string, as_value> PropMap; + PropMap props; + dump_members(props); + + std::string del = ""; + std::string data = ""; + + if ( sendVarsMethod == 1 ) { // GET + if (url.querystring() != "") + del = "&"; + else + del = "?"; + } + + for (PropMap::iterator i=props.begin(), e=props.end(); i!=e; ++i) { - log_unimpl(_("MovieClip.loadVariables() with GET/POST won't append vars for now")); + std::string name = i->first; + std::string value = url.encode(i->second.to_string()); + + // This is to filter movieclip properties from local variables. I am + // sure there is a better way to do it [TODO] + if (name[0] == '_') continue; + if (name == "$version") continue; + + data += del + name + "=" + value; + + del = "&"; + + } + + if ( sendVarsMethod == 1 ) // GET + url.set_querystring(url.querystring() + data); + else + if ( sendVarsMethod == 2 ) // POST + postdata = data; + } try { - _loadVariableRequests.push_back(new LoadVariablesThread(url)); + _loadVariableRequests.push_back(new LoadVariablesThread(url, postdata)); _loadVariableRequests.back()->process(); } catch (NetworkException& ex) Index: server/sprite_instance.h =================================================================== RCS file: /cvsroot/gnash/gnash/server/sprite_instance.h,v retrieving revision 1.163 retrieving revision 1.164 diff -u -b -r1.163 -r1.164 --- server/sprite_instance.h 2 Jan 2008 19:08:32 -0000 1.163 +++ server/sprite_instance.h 12 Jan 2008 12:48:07 -0000 1.164 @@ -594,7 +594,7 @@ /// If 1, GET will be used. /// If 2, POST will be used. /// - void loadVariables(const URL& url, short sendVarsMethod=0); + void loadVariables(URL url, short sendVarsMethod=0); // // ActionScript support _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit