38 if (e.url_rbuf >= 0 || e.url_wbuf >= 0)
40 LOG_INFOF(
"WARNING: handle %d (%s) has already received data?!?",
id +
NUM_URL_ID, e.url_url);
48 if (e.url_rbuf != -1 || e.url_wbuf != -1 || e.url_fh !=
URL_FH_CURL)
49 error(
"url_URI_Get_Callback: not a request waiting for data");
59 LOG_INFO(
"url_URI_Get_Callback: out of memory in buf_create");
68 LOG_INFO(
"url_URI_Get_Callback: out of memory in buf_create");
74 for (i = 0; i < n; ++i)
75 bufstr_set(e.url_rbuf, i,
argv(i));
82 e.url_ready(e, e.url_ready_pass, -
fabs(status));
103 e =
new_pure(url_single_fopen_file);
105 e.url_content_type =
"text/plain";
111 LOG_INFO(
"url_single_fopen: out of memory in buf_create");
120 e.url_ready_pass =
pass;
138 LOG_INFO(
"url_single_fopen: too many concurrent requests");
147 LOG_INFO(
"url_single_fopen: failure in crypto_uri_postbuf");
155 e =
new_pure(url_single_fopen_file);
161 e.url_ready_pass =
pass;
174 e =
new_pure(url_single_fopen_stdout);
177 e.url_ready_pass =
pass;
181 LOG_INFO(
"url_single_fopen: cannot open '-' for reading");
187 float fh =
fopen(url, mode);
195 e =
new_pure(url_single_fopen_file);
198 e.url_ready_pass =
pass;
215 if (e.url_rbuf == -1 || e.url_wbuf != -1)
216 if (e.url_rbuf != -1 || e.url_wbuf == -1)
217 error(
"url_fclose: not closable in current state");
235 LOG_INFO(
"url_fclose: too many concurrent requests");
245 if (!crypto_uri_postbuf(e.url_url, i +
MIN_URL_ID, e.url_content_type, e.url_verb, e.url_wbuf, 0))
247 LOG_INFO(
"url_fclose: failure in crypto_uri_postbuf");
295 if (e.url_rbuf == -1)
296 error(
"url_fgets: not readable in current state");
298 string s = bufstr_get(e.url_rbuf, e.url_rbufpos);
307 return fgets(e.url_fh);
316 if (e.url_wbuf == -1)
error(
"url_fputs: not writable in current state");
318 bufstr_set(e.url_wbuf, e.url_wbufpos, s);
338 LOG_INFO(
"uri_multi_ready: got HTTP error 422, data is in unusable format - not continuing");
339 me.url_ready(fh, me.url_ready_pass, status);
346 if (n <= me.url_attempt)
348 me.url_ready(fh, me.url_ready_pass, status);
356 me.url_ready(fh, me.url_ready_pass, status);
365 LOG_INFO(
"url_multi_fopen: need at least one URL");
375 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)
void(entity handle, entity pass, float status) url_ready_func
const float URL_READY_CLOSED
const float URL_READY_ERROR
const float URL_READY_CANREAD
const float URL_READY_CANWRITE