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);