Software /
code /
prosody
File
teal-src/util/jsonpointer.tl @ 12705:008a7097fdc5
util.jwt: Provide built-in token expiry support (defaults to 3600s lifetime)
To avoid every user of the library needing to add and verify expiry info, this
is now handled by util.jwt itself (if not overridden or disabled).
Issuing tokens that are valid forever is bad practice and rarely desired, and
the default token lifetime is now 3600s (1 hour).
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Mon, 11 Jul 2022 13:28:29 +0100 |
parent | 12496:87c3d45208ef |
line wrap: on
line source
local enum ptr_error "invalid-table" "invalid-path" end local function unescape_token(escaped_token : string) : string local unescaped = escaped_token:gsub("~1", "/"):gsub("~0", "~") return unescaped end local function resolve_json_pointer(ref : table, path : string) : any, ptr_error local ptr_len = #path+1 for part, pos in path:gmatch("/([^/]*)()") do local token = unescape_token(part) if not ref is table then return nil end local idx = next(ref) local new_ref : any if idx is string then new_ref = ref[token] elseif idx is integer then local i = tonumber(token) if token == "-" then i = #ref + 1 end new_ref = ref[i+1] else return nil, "invalid-table" end if pos as integer == ptr_len then return new_ref elseif new_ref is table then ref = new_ref elseif not ref is table then return nil, "invalid-path" end end return ref end return { resolve = resolve_json_pointer, }