mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-10-27 03:16:44 +00:00
Add HTTP/HTTPS Fetch() API to redbean
You can now say the following in your redbean Lua code:
status,headers,payload = Fetch("https://foo.example")
The following Lua APIs have been introduced:
- Fetch(str) → str,{str:str},str
- GetHttpReason(int) → str
- GetHttpReason(int) → str
- ProgramSslFetchVerify(bool)
- ProgramSslClientVerify(bool)
The following flags have been introduced:
- `-j` enables client SSL verification
- `-k` disables Fetch() SSL verification
- `-t INT` may now be passed a negative value for keepalive
Lua exceptions now invoke Cosmopolitan's garbage collector when
unwinding the stack. So it's now safe to use _gc() w/ Lua 𝔱𝔥𝔯𝔬𝔴
See #97
This commit is contained in:
parent
36b2710e1a
commit
c89bc56f6a
35 changed files with 1611 additions and 591 deletions
|
|
@ -24,7 +24,7 @@
|
|||
#include "libc/sysv/consts/af.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
|
||||
static const char *ParseIp(unsigned char ip[4]) {
|
||||
static const char *parseip(unsigned char ip[4]) {
|
||||
static char g_ipbuf[16];
|
||||
return inet_ntop(AF_INET, ip, g_ipbuf, sizeof(g_ipbuf));
|
||||
}
|
||||
|
|
@ -51,16 +51,16 @@ TEST(ParseHostsTxt, testCorrectlyTokenizesAndSorts) {
|
|||
ASSERT_EQ(4, ht->entries.i);
|
||||
EXPECT_STREQ("lol.example.", &ht->strings.p[ht->entries.p[0].name]);
|
||||
EXPECT_STREQ("lol.example.", &ht->strings.p[ht->entries.p[0].canon]);
|
||||
EXPECT_STREQ("203.0.113.1", ParseIp(ht->entries.p[0].ip));
|
||||
EXPECT_STREQ("203.0.113.1", parseip(ht->entries.p[0].ip));
|
||||
EXPECT_STREQ("lol", &ht->strings.p[ht->entries.p[1].name]);
|
||||
EXPECT_STREQ("lol.example.", &ht->strings.p[ht->entries.p[1].canon]);
|
||||
EXPECT_STREQ("203.0.113.1", ParseIp(ht->entries.p[1].ip));
|
||||
EXPECT_STREQ("203.0.113.1", parseip(ht->entries.p[1].ip));
|
||||
EXPECT_STREQ("cat.example.", &ht->strings.p[ht->entries.p[2].name]);
|
||||
EXPECT_STREQ("cat.example.", &ht->strings.p[ht->entries.p[2].canon]);
|
||||
EXPECT_STREQ("203.0.113.2", ParseIp(ht->entries.p[2].ip));
|
||||
EXPECT_STREQ("203.0.113.2", parseip(ht->entries.p[2].ip));
|
||||
EXPECT_STREQ("cat", &ht->strings.p[ht->entries.p[3].name]);
|
||||
EXPECT_STREQ("cat.example.", &ht->strings.p[ht->entries.p[3].canon]);
|
||||
EXPECT_STREQ("203.0.113.2", ParseIp(ht->entries.p[3].ip));
|
||||
EXPECT_STREQ("203.0.113.2", parseip(ht->entries.p[3].ip));
|
||||
FreeHostsTxt(&ht);
|
||||
fclose(f);
|
||||
}
|
||||
|
|
@ -74,7 +74,7 @@ TEST(ParseHostsTxt, testIpv6_isIgnored) {
|
|||
ASSERT_EQ(1, ht->entries.i);
|
||||
EXPECT_STREQ("cat", &ht->strings.p[ht->entries.p[0].name]);
|
||||
EXPECT_STREQ("cat", &ht->strings.p[ht->entries.p[0].canon]);
|
||||
EXPECT_STREQ("203.0.113.2", ParseIp(ht->entries.p[0].ip));
|
||||
EXPECT_STREQ("203.0.113.2", parseip(ht->entries.p[0].ip));
|
||||
FreeHostsTxt(&ht);
|
||||
fclose(f);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue