35 if (e.url_rbuf >= 0 || e.url_wbuf >= 0)
37 LOG_INFOF(
"WARNING: handle %d (%s) has already received data?!?",
id +
NUM_URL_ID, e.url_url);
45 if (e.url_rbuf != -1 || e.url_wbuf != -1 || e.url_fh !=
URL_FH_CURL)
error(
"url_URI_Get_Callback: not a request waiting for data");
55 LOG_INFO(
"url_URI_Get_Callback: out of memory in buf_create");
64 LOG_INFO(
"url_URI_Get_Callback: out of memory in buf_create");
70 for (i = 0; i < n; ++i)
71 bufstr_set(e.url_rbuf, i,
argv(i));
78 e.url_ready(e, e.url_ready_pass, -
fabs(status));
100 e =
new_pure(url_single_fopen_file);
102 e.url_content_type =
"text/plain";
108 LOG_INFO(
"url_single_fopen: out of memory in buf_create");
117 e.url_ready_pass =
pass;
133 LOG_INFO(
"url_single_fopen: too many concurrent requests");
142 LOG_INFO(
"url_single_fopen: failure in crypto_uri_postbuf");
150 e =
new_pure(url_single_fopen_file);
156 e.url_ready_pass =
pass;
171 e =
new_pure(url_single_fopen_stdout);
174 e.url_ready_pass =
pass;
178 LOG_INFO(
"url_single_fopen: cannot open '-' for reading");
185 float fh =
fopen(url, mode);
193 e =
new_pure(url_single_fopen_file);
196 e.url_ready_pass =
pass;
211 if (e.url_rbuf == -1 || e.url_wbuf != -1)
212 if (e.url_rbuf != -1 || e.url_wbuf == -1)
213 error(
"url_fclose: not closable in current state");
229 LOG_INFO(
"url_fclose: too many concurrent requests");
239 if (!crypto_uri_postbuf(e.url_url, i +
MIN_URL_ID, e.url_content_type, e.url_verb, e.url_wbuf, 0))
241 LOG_INFO(
"url_fclose: failure in crypto_uri_postbuf");
289 if (e.url_rbuf == -1)
error(
"url_fgets: not readable in current state");
291 string s = bufstr_get(e.url_rbuf, e.url_rbufpos);
303 return fgets(e.url_fh);
313 if (e.url_wbuf == -1)
error(
"url_fputs: not writable in current state");
315 bufstr_set(e.url_wbuf, e.url_wbufpos, s);
339 LOG_INFO(
"uri_multi_ready: got HTTP error 422, data is in unusable format - not continuing");
340 me.url_ready(fh, me.url_ready_pass, status);
347 if (n <= me.url_attempt)
349 me.url_ready(fh, me.url_ready_pass, status);
357 me.url_ready(fh, me.url_ready_pass, status);
366 LOG_INFO(
"url_multi_fopen: need at least one URL");
376 me.url_ready_pass =
pass;
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
#define tokenizebyseparator
#define pass(name, colormin, colormax)
#define new_pure(class)
purely logical entities (not linked to the area grid)
int autocvar__urllib_nextslot
ERASEABLE string url_fgets(entity e)
ERASEABLE void url_multi_fopen(string url, int mode, url_ready_func rdy, entity pass)
entity url_fromid[NUM_URL_ID]
const float URL_FH_STDOUT
ERASEABLE void url_multi_ready(entity fh, entity me, float status)
ERASEABLE void url_fputs(entity e, string s)
ERASEABLE void url_single_fopen(string url, int mode, url_ready_func rdy, entity pass)
ERASEABLE float url_URI_Get_Callback(int id, float status, string data)
ERASEABLE void url_fclose(entity e)
const float URL_READY_CLOSED
const float URL_READY_ERROR
const float URL_READY_CANREAD
void(entity handle, entity pass, float status) url_ready_func
const float URL_READY_CANWRITE