Added lot more example code. (0.39.8).
This commit is contained in:
parent
3b70d6c92a
commit
564999709c
32 changed files with 1353 additions and 53 deletions
31
examples/data/htdocs/counter.fun
Normal file
31
examples/data/htdocs/counter.fun
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
#!/usr/bin/env fun
|
||||
|
||||
/*
|
||||
* This file is part of the Fun programming language.
|
||||
* https://fun-lang.xyz/
|
||||
*
|
||||
* Copyright 2026 Johannes Findeisen
|
||||
* Licensed under the terms of the Apache-2.0 license.
|
||||
* https://opensource.org/license/apache-2-0
|
||||
*
|
||||
* Added: 2026-03-25
|
||||
*/
|
||||
|
||||
#include <net/cgi.fun>
|
||||
|
||||
cgi = CGI()
|
||||
v = to_number(cgi.cookie("visits"))
|
||||
if (v <= 0) v = 0
|
||||
v = v + 1
|
||||
cgi.header("Set-Cookie", "visits=" + to_string(v) + "; Path=/; HttpOnly")
|
||||
cgi.content_type("text/html; charset=utf-8")
|
||||
body = "<html><body><p>Visits: " + to_string(v) + "</p></body></html>"
|
||||
cgi.send(body)
|
||||
|
||||
/* Expected output (first visit, no existing cookie):
|
||||
Status: 200 OK
|
||||
Content-Type: text/html; charset=utf-8
|
||||
Set-Cookie: visits=1; Path=/; HttpOnly
|
||||
|
||||
<html><body><p>Visits: 1</p></body></html>
|
||||
*/
|
||||
36
examples/data/htdocs/form_post.fun
Normal file
36
examples/data/htdocs/form_post.fun
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
#!/usr/bin/env fun
|
||||
|
||||
/*
|
||||
* This file is part of the Fun programming language.
|
||||
* https://fun-lang.xyz/
|
||||
*
|
||||
* Copyright 2026 Johannes Findeisen
|
||||
* Licensed under the terms of the Apache-2.0 license.
|
||||
* https://opensource.org/license/apache-2-0
|
||||
*
|
||||
* Added: 2026-03-25
|
||||
*/
|
||||
|
||||
#include <net/cgi.fun>
|
||||
|
||||
cgi = CGI()
|
||||
cgi.content_type("text/html; charset=utf-8")
|
||||
pmap = cgi.params()
|
||||
html = "<html><body><h1>POST fields</h1><ul>"
|
||||
for k in keys(pmap)
|
||||
vals = cgi.param_all(k)
|
||||
i = 0; n = len(vals); joined = ""
|
||||
while (i < n)
|
||||
if (i > 0) joined = joined + ", "
|
||||
joined = joined + cgi.escape_html(vals[i])
|
||||
i = i + 1
|
||||
html = html + "<li><b>" + cgi.escape_html(k) + "</b>: " + joined + "</li>"
|
||||
html = html + "</ul></body></html>"
|
||||
cgi.send(html)
|
||||
|
||||
/* Expected output (POST with body: "a=1&b=two&b=2"):
|
||||
Status: 200 OK
|
||||
Content-Type: text/html; charset=utf-8
|
||||
|
||||
<html><body><h1>POST fields</h1><ul><li><b>a</b>: 1</li><li><b>b</b>: two, 2</li></ul></body></html>
|
||||
*/
|
||||
|
|
@ -52,3 +52,11 @@ html = html + "</body></html>"
|
|||
|
||||
// Send CGI headers + body
|
||||
cgi.send(html)
|
||||
|
||||
/* Expected output (GET /hello.fun?name=Fun with no ua cookie):
|
||||
Status: 200 OK
|
||||
Content-Type: text/html; charset=utf-8
|
||||
Set-Cookie: ua=FunClient; Path=/; HttpOnly
|
||||
|
||||
<html><head><title>Fun CGI</title></head><body><h1>Hello, Fun!</h1><p>REQUEST_METHOD: GET</p><p>QUERY_STRING: name=Fun</p><p>User-Agent cookie: </p><h2>Params</h2><ul><li><b>name</b>: Fun</li></ul></body></html>
|
||||
*/
|
||||
|
|
|
|||
21
examples/data/htdocs/json_like_api.fun
Normal file
21
examples/data/htdocs/json_like_api.fun
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#!/usr/bin/env fun
|
||||
|
||||
/*
|
||||
* This file is part of the Fun programming language.
|
||||
* https://fun-lang.xyz/
|
||||
*
|
||||
* Copyright 2026 Johannes Findeisen
|
||||
* Licensed under the terms of the Apache-2.0 license.
|
||||
* https://opensource.org/license/apache-2-0
|
||||
*
|
||||
* Added: 2026-03-25
|
||||
*/
|
||||
|
||||
#include <net/cgi.fun>
|
||||
|
||||
cgi = CGI()
|
||||
cgi.content_type("application/json; charset=utf-8")
|
||||
name = cgi.param("name")
|
||||
if (len(name) == 0) name = "World"
|
||||
body = "{\n \"greeting\": \"Hello, " + cgi.escape_html(name) + "!\",\n \"method\": \"" + cgi.escape_html(cgi.env["REQUEST_METHOD"]) + "\"\n}"
|
||||
cgi.send(body)
|
||||
19
examples/data/htdocs/redirect.fun
Normal file
19
examples/data/htdocs/redirect.fun
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/env fun
|
||||
|
||||
/*
|
||||
* This file is part of the Fun programming language.
|
||||
* https://fun-lang.xyz/
|
||||
*
|
||||
* Copyright 2026 Johannes Findeisen
|
||||
* Licensed under the terms of the Apache-2.0 license.
|
||||
* https://opensource.org/license/apache-2-0
|
||||
*
|
||||
* Added: 2026-03-25
|
||||
*/
|
||||
|
||||
#include <net/cgi.fun>
|
||||
|
||||
cgi = CGI()
|
||||
cgi.redirect("/hello.fun?name=Fun", 302)
|
||||
cgi.content_type("text/html; charset=utf-8")
|
||||
cgi.send("<html><body>Redirecting...</body></html>")
|
||||
4
examples/data/sample.csv
Normal file
4
examples/data/sample.csv
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
name,age,city
|
||||
Ada,37,London
|
||||
Lin,29,Paris
|
||||
Max,42,Berlin
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue