Fun 0.41.5
The programming language that makes You have fun
Loading...
Searching...
No Matches
post.c File Reference

Fun VM opcode snippet: HTTP POST via libcurl (OP_CURL_POST). More...

Go to the source code of this file.

Functions

 free_value (a)
 free_value (b)
 push_value (vm, make_string(""))

Variables

case OP_CURL_POST
Value b = pop_value(vm)
 break

Detailed Description

Fun VM opcode snippet: HTTP POST via libcurl (OP_CURL_POST).

This snippet is included by vm.c and implements the OP_CURL_POST instruction. When FUN_WITH_CURL is enabled, it performs an HTTP POST to the given URL with the provided request body and pushes the response body as a string. If libcurl support is not built in, or an error occurs, an empty string is pushed instead.

Stack behavior:

  • Pops: body:string, url:string (values are converted via value_to_string_alloc)
  • Pushes: body:string (server response; "" on error or when CURL is disabled)

Pops the POST body and URL, performs an HTTP POST, and pushes the response as a string. Without FUN_WITH_CURL, consumes two values and pushes an empty string.

Error handling:

  • If URL conversion fails, the opcode pushes an empty string and discards any converted body.
  • Follows redirects (CURLOPT_FOLLOWLOCATION = 1L).
  • Sets CURLOPT_POST=1L and CURLOPT_POSTFIELDS to submit the body.

Notes:

  • Uses FunCurlBuf and fun_curl_write_cb from the curl extension helpers.
  • All temporary allocations (URL, body, response buffer) are freed.

Definition in file post.c.

Function Documentation

◆ free_value() [1/2]

free_value(a)

◆ free_value() [2/2]

free_value(b)

◆ push_value()

push_value(vm,
make_string("") )

Variable Documentation

◆ b

Value b = pop_value(vm)

Definition at line 82 of file post.c.

◆ break

break

Definition at line 86 of file post.c.

◆ OP_CURL_POST

case OP_CURL_POST

Definition at line 39 of file post.c.