lights FAQ Forum github.com/luapower/uri
This package
uri

Misc
ace.js
csv
daemon
dollar
font_db
fonts-amiri
fonts-awesome
fonts-dejavuserif
fonts-fireflysung
fonts-fixedsys
fonts-ionicons
fonts-material-icons
fonts-noto-emoji
fonts-open-sans
http
luamyadmin
lx
minizip2
resty-core
resty-lrucache
resty.http
resty.mail
resty.string
socket2
uri
website
x-widgets
xlsxwriter

uri

URI parsing and formatting in Lua


local uri = require'uri'

URI parsing and formatting.

API

uri.format(t) -> s format URI
uri.parse(s) -> t parse URI
uri.escape(s[,res][,unres]) -> s escape URI fragment
uri.unescape(s) -> s unescape URI fragment

uri.format(t) -> s

Format a URI from a table containing the fields: scheme, user, pass, host, port, path or segments, query or args, and fragment.

If the field segments is present, it will be used instead of path to format the path part of the URI. It must be a list of strings representing the path segments, with the advantage that each segment can contain slashes which will be properly encoded.

If the field args is present, it will be used instead of query to format the query part of the URI with the advantage that arg keys and values can contain the characters &, =, ?, # which will be properly encoded. The args can be given as a list of form {key1, value1, ...} or as a table of form {key -> value}. The first form allows duplicate keys and preserves key order while the map form lays out the keys alphabetically. Values can be tostringables, true to format only the key without = or false to ignore the key.

uri.parse(s) -> t

Parse a URI of the form [scheme:](([//[user[:pass]@]host[:port][/path])|path)[?query][#fragment] into its components. The fields segments and args are present too, and have the same meaning as for uri.format above (the args table will have both its array part and its hash part populated).

Some edge cases and how they’re handled:

foo?a=b&a=c {path='foo', args={a='c', 'a', 'b', 'a', 'c'}}
foo?a= {path='foo', args={a='', 'a', ''}}
foo?=b {path='foo', args={[''] = 'b', '', 'b'}}
foo?a {path='foo', args={a=true, 'a', true}}
foo?= {path='foo', args={[''] = '', '', ''}}
foo? {path='foo', args={[''] = true, '', true}}
foo {path='foo'}

Note that ://:@/?# is a valid URL.

uri.escape(s[,reserved][,unreserved]) -> s

Escape all characters except the URI spec unreserved and sub-delims characters, and the characters in the unreserved list, plus the characters in the reserved list, if any.

uri.unescape(s) -> s

Unescape escaped characters in the URI.


Last updated: 16 days ago | Edit on GitHub

Package:uri
Pkg type:Lua+ffi
Version: 1cce79c
Last commit:
Author: Cosmin Apreutesei
License: Public Domain

Requires: glue  luajit 

Required by: http 


Top