]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/gamecommand.qc
add some test code for uri_post
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / gamecommand.qc
index 94357b2270ed928ac907c7676be41147b03cd5f5..03e863e278a1cfa8885469cfad5d30cd27bdb1f6 100644 (file)
@@ -31,6 +31,30 @@ void _dumptree_close(entity pass, entity me)
        }
 }
 
+float curl_uri_get_pos;
+float curl_uri_get_exec[URI_GET_CURL_END - URI_GET_CURL + 1];
+string curl_uri_get_cvar[URI_GET_CURL_END - URI_GET_CURL + 1];
+void Curl_URI_Get_Callback(float id, float status, string data)
+{
+       float i;
+       float do_exec;
+       string do_cvar;
+       i = id - URI_GET_CURL;
+       do_exec = curl_uri_get_exec[i];
+       do_cvar = curl_uri_get_cvar[i];
+       if(status != 0)
+       {
+               print("error: status is ", ftos(status), "\n");
+               return;
+       }
+       if(do_exec)
+               localcmd(data);
+       if(do_cvar)
+               cvar_set(do_cvar, data);
+       if(!do_exec && !do_cvar)
+               print(data);
+}
+
 void GameCommand(string theCommand)
 {
        float argc;
@@ -65,10 +89,7 @@ void GameCommand(string theCommand)
        if(argv(0) == "directpanelhudmenu")
        {
                // switch to a menu item
-               m_goto("HUDOptions");
-               entity panelvar;
-               panelvar = findstring(NULL, name, "HUDOptions");
-               panelvar.change(panelvar, stof(argv(1)));
+               m_goto(strcat("HUD", argv(1)));
                return;
        }
 
@@ -97,6 +118,73 @@ void GameCommand(string theCommand)
                return;
        }
 
+       if(argv(0) == "setcompression")
+       {
+               updateCompression();
+               return;
+       }
+
+       if(argv(0) == "curl")
+       {
+               float do_exec;
+               string do_cvar;
+               float key;
+               float i, j;
+               string url;
+               float buf;
+
+               do_exec = FALSE;
+               do_cvar = string_null;
+               key = -1;
+
+               for(i = 1; i+1 < argc; ++i)
+               {
+                       if(argv(i) == "--cvar" && i+2 < argc)
+                       {
+                               ++i;
+                               do_cvar = argv(i);
+                               ++i;
+                               continue;
+                       }
+                       if(argv(i) == "--exec")
+                       {
+                               do_exec = TRUE;
+                               ++i;
+                               continue;
+                       }
+                       if(argv(i) == "--key" && i+2 < argc)
+                       {
+                               ++i;
+                               key = stof(argv(i));
+                               ++i;
+                               continue;
+                       }
+                       break;
+               }
+
+               // now, argv(i) is the URL
+               // following args may be POST parameters
+               url = argv(i);
+               ++i;
+               buf = buf_create();
+               j = 0;
+               for(; i+1 < argc; i += 2)
+                       bufstr_set(buf, ++j, sprintf("%s=%s", uri_escape(argv(i)), uri_escape(argv(i+1))));
+               if(i < argc)
+                       bufstr_set(buf, ++j, sprintf("submit=%s", uri_escape(argv(i))));
+
+               if(j == 0) // no args: GET
+                       crypto_uri_postbuf(url, URI_GET_CURL + curl_uri_get_pos, string_null, string_null, -1, key);
+               else // with args: POST
+                       crypto_uri_postbuf(url, URI_GET_CURL + curl_uri_get_pos, "application/x-www-form-urlencoded", "&", buf, key);
+
+               curl_uri_get_pos = mod(curl_uri_get_pos + 1, URI_GET_CURL_END - URI_GET_CURL + 1);
+
+               buf_del(buf);
+
+               return;
+       }
+
 #if 0
        if(argv(0) == "tokentest")
        {