1 module spasm.bindings.fetch;
2 
3 import spasm.types;
4 import spasm.bindings.common;
5 import spasm.bindings.dom;
6 import spasm.bindings.fileapi;
7 import spasm.bindings.streams;
8 import spasm.bindings.url;
9 import spasm.bindings.webappsec;
10 import spasm.bindings.xhr;
11 
12 @safe:
13 nothrow:
14 
15 alias BodyInit = SumType!(Blob, BufferSource, FormData, URLSearchParams, ReadableStream, string);
16 struct Headers {
17   nothrow:
18   JsHandle handle;
19   alias handle this;
20   this(Handle h) {
21     this.handle = JsHandle(h);
22   }
23   void append()(string name, string value) {
24     Headers_append(this.handle, name, value);
25   }
26   void delete_()(string name) {
27     Headers_delete(this.handle, name);
28   }
29   auto get()(string name) {
30     return Headers_get(this.handle, name);
31   }
32   auto has()(string name) {
33     return Headers_has(this.handle, name);
34   }
35   void set()(string name, string value) {
36     Headers_set(this.handle, name, value);
37   }
38 }
39 alias HeadersInit = SumType!(Sequence!(Sequence!(string)), Record!(string, string));
40 struct Request {
41   nothrow:
42   JsHandle handle;
43   alias handle this;
44   this(Handle h) {
45     this.handle = JsHandle(h);
46   }
47   auto method()() {
48     return Request_method_Get(this.handle);
49   }
50   auto url()() {
51     return Request_url_Get(this.handle);
52   }
53   auto headers()() {
54     return Headers(Request_headers_Get(this.handle));
55   }
56   auto destination()() {
57     return Request_destination_Get(this.handle);
58   }
59   auto referrer()() {
60     return Request_referrer_Get(this.handle);
61   }
62   auto referrerPolicy()() {
63     return Request_referrerPolicy_Get(this.handle);
64   }
65   auto mode()() {
66     return Request_mode_Get(this.handle);
67   }
68   auto credentials()() {
69     return Request_credentials_Get(this.handle);
70   }
71   auto cache()() {
72     return Request_cache_Get(this.handle);
73   }
74   auto redirect()() {
75     return Request_redirect_Get(this.handle);
76   }
77   auto integrity()() {
78     return Request_integrity_Get(this.handle);
79   }
80   auto keepalive()() {
81     return Request_keepalive_Get(this.handle);
82   }
83   auto isReloadNavigation()() {
84     return Request_isReloadNavigation_Get(this.handle);
85   }
86   auto isHistoryNavigation()() {
87     return Request_isHistoryNavigation_Get(this.handle);
88   }
89   auto signal()() {
90     return AbortSignal(Request_signal_Get(this.handle));
91   }
92   auto clone()() {
93     return Request(Request_clone(this.handle));
94   }
95   auto body_()() {
96     return Body_body_Get(this.handle);
97   }
98   auto bodyUsed()() {
99     return Body_bodyUsed_Get(this.handle);
100   }
101   auto arrayBuffer()() {
102     return Promise!(ArrayBuffer)(Body_arrayBuffer(this.handle));
103   }
104   auto blob()() {
105     return Promise!(Blob)(Body_blob(this.handle));
106   }
107   auto formData()() {
108     return Promise!(FormData)(Body_formData(this.handle));
109   }
110   auto json()() {
111     return Promise!(Any)(Body_json(this.handle));
112   }
113   auto text()() {
114     return Promise!(string)(Body_text(this.handle));
115   }
116 }
117 enum RequestCache {
118   default_,
119   no_store,
120   reload,
121   no_cache,
122   force_cache,
123   only_if_cached
124 }
125 enum RequestCredentials {
126   omit,
127   same_origin,
128   include
129 }
130 enum RequestDestination {
131   none,
132   audio,
133   audioworklet,
134   document,
135   embed,
136   font,
137   image,
138   manifest,
139   object,
140   paintworklet,
141   report,
142   script,
143   sharedworker,
144   style,
145   track,
146   video,
147   worker,
148   xslt
149 }
150 alias RequestInfo = SumType!(Request, string);
151 struct RequestInit {
152   nothrow:
153   JsHandle handle;
154   alias handle this;
155   this(Handle h) {
156     this.handle = JsHandle(h);
157   }
158   static auto create() {
159     return RequestInit(spasm_add__object());
160   }
161   void method()(string method) {
162     RequestInit_method_Set(this.handle, method);
163   }
164   auto method()() {
165     return RequestInit_method_Get(this.handle);
166   }
167   void headers()(scope ref HeadersInit headers) {
168     RequestInit_headers_Set(this.handle, headers);
169   }
170   auto headers()() {
171     return RequestInit_headers_Get(this.handle);
172   }
173   void body_(T0)(scope auto ref Optional!(T0) body_) if (isTOrPointer!(T0, BodyInit)) {
174     RequestInit_body_Set(this.handle, !body_.empty, *body_.frontRef);
175   }
176   auto body_()() {
177     return RequestInit_body_Get(this.handle);
178   }
179   void referrer()(string referrer) {
180     RequestInit_referrer_Set(this.handle, referrer);
181   }
182   auto referrer()() {
183     return RequestInit_referrer_Get(this.handle);
184   }
185   void referrerPolicy()(ReferrerPolicy referrerPolicy) {
186     RequestInit_referrerPolicy_Set(this.handle, referrerPolicy);
187   }
188   auto referrerPolicy()() {
189     return RequestInit_referrerPolicy_Get(this.handle);
190   }
191   void mode()(RequestMode mode) {
192     RequestInit_mode_Set(this.handle, mode);
193   }
194   auto mode()() {
195     return RequestInit_mode_Get(this.handle);
196   }
197   void credentials()(RequestCredentials credentials) {
198     RequestInit_credentials_Set(this.handle, credentials);
199   }
200   auto credentials()() {
201     return RequestInit_credentials_Get(this.handle);
202   }
203   void cache()(RequestCache cache) {
204     RequestInit_cache_Set(this.handle, cache);
205   }
206   auto cache()() {
207     return RequestInit_cache_Get(this.handle);
208   }
209   void redirect()(RequestRedirect redirect) {
210     RequestInit_redirect_Set(this.handle, redirect);
211   }
212   auto redirect()() {
213     return RequestInit_redirect_Get(this.handle);
214   }
215   void integrity()(string integrity) {
216     RequestInit_integrity_Set(this.handle, integrity);
217   }
218   auto integrity()() {
219     return RequestInit_integrity_Get(this.handle);
220   }
221   void keepalive()(bool keepalive) {
222     RequestInit_keepalive_Set(this.handle, keepalive);
223   }
224   auto keepalive()() {
225     return RequestInit_keepalive_Get(this.handle);
226   }
227   void signal(T0)(scope auto ref Optional!(T0) signal) if (isTOrPointer!(T0, AbortSignal)) {
228     RequestInit_signal_Set(this.handle, !signal.empty, signal.front._parent);
229   }
230   auto signal()() {
231     return RequestInit_signal_Get(this.handle);
232   }
233   void window(T0)(scope auto ref T0 window) {
234     Handle _handle_window = getOrCreateHandle(window);
235     RequestInit_window_Set(this.handle, _handle_window);
236     dropHandle!(T0)(_handle_window);
237   }
238   auto window()() {
239     return Any(RequestInit_window_Get(this.handle));
240   }
241 }
242 enum RequestMode {
243   navigate,
244   same_origin,
245   no_cors,
246   cors
247 }
248 enum RequestRedirect {
249   follow,
250   error,
251   manual
252 }
253 struct Response {
254   nothrow:
255   JsHandle handle;
256   alias handle this;
257   this(Handle h) {
258     this.handle = JsHandle(h);
259   }
260   auto error()() {
261     return Response(Response_error(this.handle));
262   }
263   auto redirect()(string url, ushort status /* = 302 */) {
264     return Response(Response_redirect(this.handle, url, status));
265   }
266   auto redirect()(string url) {
267     return Response(Response_redirect_0(this.handle, url));
268   }
269   auto type()() {
270     return Response_type_Get(this.handle);
271   }
272   auto url()() {
273     return Response_url_Get(this.handle);
274   }
275   auto redirected()() {
276     return Response_redirected_Get(this.handle);
277   }
278   auto status()() {
279     return Response_status_Get(this.handle);
280   }
281   auto ok()() {
282     return Response_ok_Get(this.handle);
283   }
284   auto statusText()() {
285     return Response_statusText_Get(this.handle);
286   }
287   auto headers()() {
288     return Headers(Response_headers_Get(this.handle));
289   }
290   auto trailer()() {
291     return Promise!(Headers)(Response_trailer_Get(this.handle));
292   }
293   auto clone()() {
294     return Response(Response_clone(this.handle));
295   }
296   auto body_()() {
297     return Body_body_Get(this.handle);
298   }
299   auto bodyUsed()() {
300     return Body_bodyUsed_Get(this.handle);
301   }
302   auto arrayBuffer()() {
303     return Promise!(ArrayBuffer)(Body_arrayBuffer(this.handle));
304   }
305   auto blob()() {
306     return Promise!(Blob)(Body_blob(this.handle));
307   }
308   auto formData()() {
309     return Promise!(FormData)(Body_formData(this.handle));
310   }
311   auto json()() {
312     return Promise!(Any)(Body_json(this.handle));
313   }
314   auto text()() {
315     return Promise!(string)(Body_text(this.handle));
316   }
317 }
318 struct ResponseInit {
319   nothrow:
320   JsHandle handle;
321   alias handle this;
322   this(Handle h) {
323     this.handle = JsHandle(h);
324   }
325   static auto create() {
326     return ResponseInit(spasm_add__object());
327   }
328   void status()(ushort status) {
329     ResponseInit_status_Set(this.handle, status);
330   }
331   auto status()() {
332     return ResponseInit_status_Get(this.handle);
333   }
334   void statusText()(string statusText) {
335     ResponseInit_statusText_Set(this.handle, statusText);
336   }
337   auto statusText()() {
338     return ResponseInit_statusText_Get(this.handle);
339   }
340   void headers()(scope ref HeadersInit headers) {
341     ResponseInit_headers_Set(this.handle, headers);
342   }
343   auto headers()() {
344     return ResponseInit_headers_Get(this.handle);
345   }
346 }
347 enum ResponseType {
348   basic,
349   cors,
350   default_,
351   error,
352   opaque,
353   opaqueredirect
354 }
355 
356 
357 extern (C) Optional!(ReadableStream) Body_body_Get(Handle);
358 extern (C) bool Body_bodyUsed_Get(Handle);
359 extern (C) Handle Body_arrayBuffer(Handle);
360 extern (C) Handle Body_blob(Handle);
361 extern (C) Handle Body_formData(Handle);
362 extern (C) Handle Body_json(Handle);
363 extern (C) Handle Body_text(Handle);
364 extern (C) void Headers_append(Handle, string, string);
365 extern (C) void Headers_delete(Handle, string);
366 extern (C) Optional!(string) Headers_get(Handle, string);
367 extern (C) bool Headers_has(Handle, string);
368 extern (C) void Headers_set(Handle, string, string);
369 extern (C) string Request_method_Get(Handle);
370 extern (C) string Request_url_Get(Handle);
371 extern (C) Handle Request_headers_Get(Handle);
372 extern (C) RequestDestination Request_destination_Get(Handle);
373 extern (C) string Request_referrer_Get(Handle);
374 extern (C) ReferrerPolicy Request_referrerPolicy_Get(Handle);
375 extern (C) RequestMode Request_mode_Get(Handle);
376 extern (C) RequestCredentials Request_credentials_Get(Handle);
377 extern (C) RequestCache Request_cache_Get(Handle);
378 extern (C) RequestRedirect Request_redirect_Get(Handle);
379 extern (C) string Request_integrity_Get(Handle);
380 extern (C) bool Request_keepalive_Get(Handle);
381 extern (C) bool Request_isReloadNavigation_Get(Handle);
382 extern (C) bool Request_isHistoryNavigation_Get(Handle);
383 extern (C) Handle Request_signal_Get(Handle);
384 extern (C) Handle Request_clone(Handle);
385 extern (C) void RequestInit_method_Set(Handle, string);
386 extern (C) string RequestInit_method_Get(Handle);
387 extern (C) void RequestInit_headers_Set(Handle, scope ref HeadersInit);
388 extern (C) HeadersInit RequestInit_headers_Get(Handle);
389 extern (C) void RequestInit_body_Set(Handle, bool, scope ref BodyInit);
390 extern (C) Optional!(BodyInit) RequestInit_body_Get(Handle);
391 extern (C) void RequestInit_referrer_Set(Handle, string);
392 extern (C) string RequestInit_referrer_Get(Handle);
393 extern (C) void RequestInit_referrerPolicy_Set(Handle, ReferrerPolicy);
394 extern (C) ReferrerPolicy RequestInit_referrerPolicy_Get(Handle);
395 extern (C) void RequestInit_mode_Set(Handle, RequestMode);
396 extern (C) RequestMode RequestInit_mode_Get(Handle);
397 extern (C) void RequestInit_credentials_Set(Handle, RequestCredentials);
398 extern (C) RequestCredentials RequestInit_credentials_Get(Handle);
399 extern (C) void RequestInit_cache_Set(Handle, RequestCache);
400 extern (C) RequestCache RequestInit_cache_Get(Handle);
401 extern (C) void RequestInit_redirect_Set(Handle, RequestRedirect);
402 extern (C) RequestRedirect RequestInit_redirect_Get(Handle);
403 extern (C) void RequestInit_integrity_Set(Handle, string);
404 extern (C) string RequestInit_integrity_Get(Handle);
405 extern (C) void RequestInit_keepalive_Set(Handle, bool);
406 extern (C) bool RequestInit_keepalive_Get(Handle);
407 extern (C) void RequestInit_signal_Set(Handle, bool, Handle);
408 extern (C) Optional!(AbortSignal) RequestInit_signal_Get(Handle);
409 extern (C) void RequestInit_window_Set(Handle, Handle);
410 extern (C) Handle RequestInit_window_Get(Handle);
411 extern (C) Handle Response_error(Handle);
412 extern (C) Handle Response_redirect(Handle, string, ushort);
413 extern (C) Handle Response_redirect_0(Handle, string);
414 extern (C) ResponseType Response_type_Get(Handle);
415 extern (C) string Response_url_Get(Handle);
416 extern (C) bool Response_redirected_Get(Handle);
417 extern (C) ushort Response_status_Get(Handle);
418 extern (C) bool Response_ok_Get(Handle);
419 extern (C) string Response_statusText_Get(Handle);
420 extern (C) Handle Response_headers_Get(Handle);
421 extern (C) Handle Response_trailer_Get(Handle);
422 extern (C) Handle Response_clone(Handle);
423 extern (C) void ResponseInit_status_Set(Handle, ushort);
424 extern (C) ushort ResponseInit_status_Get(Handle);
425 extern (C) void ResponseInit_statusText_Set(Handle, string);
426 extern (C) string ResponseInit_statusText_Get(Handle);
427 extern (C) void ResponseInit_headers_Set(Handle, scope ref HeadersInit);
428 extern (C) HeadersInit ResponseInit_headers_Get(Handle);