Add GetRedbeanVersion & rename GetVersion (#219)

- Add GetRedbeanVersion() to redbean (#97)
- Rename GetVersion to GetHttpVersion() for consistency (#97)
- Update Content-Length format to use a proper size modifier (#97, #218)
This commit is contained in:
Paul Kulchenko 2021-08-02 14:46:43 -07:00 committed by GitHub
parent 0b317523a0
commit 64d87d4e5a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 5 deletions

View file

@ -664,10 +664,15 @@ FUNCTIONS
if redbean is being used as an HTTP proxy server. In the future if redbean is being used as an HTTP proxy server. In the future
this API might change to return an object instead. this API might change to return an object instead.
GetVersion() → int GetHttpVersion() → int
Returns the request HTTP protocol version, which can be 9 for Returns the request HTTP protocol version, which can be 9 for
HTTP/0.9, 10 for HTTP/1.0, or 11 for HTTP/1.1. HTTP/0.9, 10 for HTTP/1.0, or 11 for HTTP/1.1.
GetRedbeanVersion() → int
Returns the Redbean version in the format 0xMMmmpp, with major (MM),
minor (mm), and patch (pp) versions encoded. The version value 1.4
would be represented as 0x010400.
GetZipPaths() → array[str] GetZipPaths() → array[str]
Returns paths of all assets in the zip central directory, prefixed Returns paths of all assets in the zip central directory, prefixed
by a slash. by a slash.

View file

@ -142,6 +142,7 @@
#define REDBEAN "redbean" #define REDBEAN "redbean"
#endif #endif
#define VERSION 0x010400
#define HASH_LOAD_FACTOR /* 1. / */ 4 #define HASH_LOAD_FACTOR /* 1. / */ 4
#define read(F, P, N) readv(F, &(struct iovec){P, N}, 1) #define read(F, P, N) readv(F, &(struct iovec){P, N}, 1)
#define write(F, P, N) writev(F, &(struct iovec){P, N}, 1) #define write(F, P, N) writev(F, &(struct iovec){P, N}, 1)
@ -960,7 +961,7 @@ static void ProgramCache(long x) {
} }
static void SetDefaults(void) { static void SetDefaults(void) {
ProgramBrand(REDBEAN "/1.4"); ProgramBrand(gc(xasprintf("%s/%hhd.%hhd", REDBEAN, VERSION>>020, VERSION>>010)));
__log_level = kLogInfo; __log_level = kLogInfo;
maxpayloadsize = 64 * 1024; maxpayloadsize = 64 * 1024;
ProgramCache(-1); ProgramCache(-1);
@ -3727,7 +3728,7 @@ static int LuaFetch(lua_State *L) {
if (bodylen > 0 || if (bodylen > 0 ||
!(methodidx == kHttpGet || methodidx == kHttpHead || !(methodidx == kHttpGet || methodidx == kHttpHead ||
methodidx == kHttpTrace || methodidx == kHttpDelete || methodidx == kHttpConnect)) methodidx == kHttpTrace || methodidx == kHttpDelete || methodidx == kHttpConnect))
conlenhdr = gc(xasprintf("Content-Length: %d\r\n", bodylen)); conlenhdr = gc(xasprintf("Content-Length: %zu\r\n", bodylen));
/* /*
* Parse URL. * Parse URL.
@ -4017,11 +4018,16 @@ static int LuaGetDate(lua_State *L) {
return 1; return 1;
} }
static int LuaGetVersion(lua_State *L) { static int LuaGetHttpVersion(lua_State *L) {
lua_pushinteger(L, msg.version); lua_pushinteger(L, msg.version);
return 1; return 1;
} }
static int LuaGetRedbeanVersion(lua_State *L) {
lua_pushinteger(L, VERSION);
return 1;
}
static int LuaGetMethod(lua_State *L) { static int LuaGetMethod(lua_State *L) {
if (msg.method) { if (msg.method) {
lua_pushstring(L, kHttpMethod[msg.method]); lua_pushstring(L, kHttpMethod[msg.method]);
@ -5198,7 +5204,8 @@ static const luaL_Reg kLuaFuncs[] = {
{"GetServerAddr", LuaGetServerAddr}, // {"GetServerAddr", LuaGetServerAddr}, //
{"GetUrl", LuaGetUrl}, // {"GetUrl", LuaGetUrl}, //
{"GetUser", LuaGetUser}, // {"GetUser", LuaGetUser}, //
{"GetVersion", LuaGetVersion}, // {"GetHttpVersion", LuaGetHttpVersion}, //
{"GetRedbeanVersion", LuaGetRedbeanVersion}, //
{"GetZipPaths", LuaGetZipPaths}, // {"GetZipPaths", LuaGetZipPaths}, //
{"HasControlCodes", LuaHasControlCodes}, // {"HasControlCodes", LuaHasControlCodes}, //
{"HasParam", LuaHasParam}, // {"HasParam", LuaHasParam}, //