mirror of
https://github.com/lunarmodules/luasocket.git
synced 2025-04-29 20:06:43 +02:00
Compare commits
5 Commits
c5428ba7fa
...
f815d7005c
Author | SHA1 | Date | |
---|---|---|---|
|
f815d7005c | ||
|
23241717bf | ||
|
b281e6f717 | ||
|
784b0631e1 | ||
|
a1b5d3abd1 |
@ -40,7 +40,7 @@ Pump, Support, Library">
|
||||
<h2 id="ltn12">LTN12</h2>
|
||||
|
||||
<p> The <tt>ltn12</tt> namespace implements the ideas described in
|
||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">
|
||||
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">
|
||||
LTN012, Filters sources and sinks</a>. This manual simply describes the
|
||||
functions. Please refer to the LTN for a deeper explanation of the
|
||||
functionality provided by this module.
|
||||
|
@ -164,6 +164,9 @@ Creates and returns a <em>clean</em>
|
||||
<a href="#try"><tt>try</tt></a>
|
||||
function that allows for cleanup before the exception
|
||||
is raised.
|
||||
This implements the ideas described in
|
||||
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn013.md">
|
||||
LTN012, Using finalized exceptions</a>.
|
||||
</p>
|
||||
|
||||
<p class="parameters">
|
||||
@ -207,6 +210,9 @@ Converts a function that throws exceptions into a safe function. This
|
||||
function only catches exceptions thrown by the <a href="#try"><tt>try</tt></a>
|
||||
and <a href="#newtry"><tt>newtry</tt></a> functions. It does not catch normal
|
||||
Lua errors.
|
||||
This implements the ideas described in
|
||||
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn013.md">
|
||||
LTN012, Using finalized exceptions</a>.
|
||||
</p>
|
||||
|
||||
<p class="parameters">
|
||||
@ -425,6 +431,9 @@ socket.<b>try(</b>ret<sub>1</sub> [, ret<sub>2</sub> ... ret<sub>N</sub>]<b>)</b
|
||||
Throws an exception in case <tt>ret<sub>1</sub></tt> is falsy, using
|
||||
<tt>ret<sub>2</sub></tt> as the error message. The exception is supposed to be caught
|
||||
by a <a href="#protect"><tt>protect</tt></a>ed function only.
|
||||
This implements the ideas described in
|
||||
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn013.md">
|
||||
LTN012, Using finalized exceptions</a>.
|
||||
</p>
|
||||
|
||||
<p class="parameters">
|
||||
|
@ -60,7 +60,7 @@ An URL is defined by the following grammar:
|
||||
|
||||
<blockquote>
|
||||
<tt>
|
||||
<url> ::= [<scheme>:][//<authority>][/<path>][;<params>][?<query>][#<fragment>]<br>
|
||||
<url> ::= [<scheme>:][//<authority>][/<path>][?<query>][#<fragment>]<br>
|
||||
<authority> ::= [<userinfo>@]<host>[:<port>]<br>
|
||||
<userinfo> ::= <user>[:<password>]<br>
|
||||
<path> ::= {<segment>/}<segment><br>
|
||||
@ -225,7 +225,6 @@ parsed_url = {<br>
|
||||
scheme = <i>string</i>,<br>
|
||||
authority = <i>string</i>,<br>
|
||||
path = <i>string</i>,<br>
|
||||
params = <i>string</i>,<br>
|
||||
query = <i>string</i>,<br>
|
||||
fragment = <i>string</i>,<br>
|
||||
userinfo = <i>string</i>,<br>
|
||||
@ -255,7 +254,6 @@ parsed_url = url.parse("ftp://root:passwd@unsafe.org/pub/virus.exe;type=i")
|
||||
-- scheme = "ftp",
|
||||
-- authority = "root:passwd@unsafe.org",
|
||||
-- path = "/pub/virus.exe",
|
||||
-- params = "type=i",
|
||||
-- userinfo = "root:passwd",
|
||||
-- host = "unsafe.org",
|
||||
-- user = "root",
|
||||
|
@ -207,7 +207,6 @@ local function adjusturi(reqt)
|
||||
if not reqt.proxy and not _M.PROXY then
|
||||
u = {
|
||||
path = socket.try(reqt.path, "invalid path 'nil'"),
|
||||
params = reqt.params,
|
||||
query = reqt.query,
|
||||
fragment = reqt.fragment
|
||||
}
|
||||
|
17
src/url.lua
17
src/url.lua
@ -125,7 +125,7 @@ end
|
||||
-----------------------------------------------------------------------------
|
||||
-- Parses a url and returns a table with all its parts according to RFC 2396
|
||||
-- The following grammar describes the names given to the URL parts
|
||||
-- <url> ::= <scheme>://<authority>/<path>;<params>?<query>#<fragment>
|
||||
-- <url> ::= <scheme>://<authority>/<path>?<query>#<fragment>
|
||||
-- <authority> ::= <userinfo>@<host>:<port>
|
||||
-- <userinfo> ::= <user>[:<password>]
|
||||
-- <path> :: = {<segment>/}<segment>
|
||||
@ -136,7 +136,7 @@ end
|
||||
-- table with the following fields, where RFC naming conventions have
|
||||
-- been preserved:
|
||||
-- scheme, authority, userinfo, user, password, host, port,
|
||||
-- path, params, query, fragment
|
||||
-- path, query, fragment
|
||||
-- Obs:
|
||||
-- the leading '/' in {/<path>} is considered part of <path>
|
||||
-----------------------------------------------------------------------------
|
||||
@ -166,11 +166,6 @@ function _M.parse(url, default)
|
||||
parsed.query = q
|
||||
return ""
|
||||
end)
|
||||
-- get params
|
||||
url = string.gsub(url, "%;(.*)", function(p)
|
||||
parsed.params = p
|
||||
return ""
|
||||
end)
|
||||
-- path is whatever was left
|
||||
if url ~= "" then parsed.path = url end
|
||||
local authority = parsed.authority
|
||||
@ -203,7 +198,6 @@ function _M.build(parsed)
|
||||
--local ppath = _M.parse_path(parsed.path or "")
|
||||
--local url = _M.build_path(ppath)
|
||||
local url = parsed.path or ""
|
||||
if parsed.params then url = url .. ";" .. parsed.params end
|
||||
if parsed.query then url = url .. "?" .. parsed.query end
|
||||
local authority = parsed.authority
|
||||
if parsed.host then
|
||||
@ -258,11 +252,8 @@ function _M.absolute(base_url, relative_url)
|
||||
relative_parsed.authority = base_parsed.authority
|
||||
if not relative_parsed.path then
|
||||
relative_parsed.path = base_parsed.path
|
||||
if not relative_parsed.params then
|
||||
relative_parsed.params = base_parsed.params
|
||||
if not relative_parsed.query then
|
||||
relative_parsed.query = base_parsed.query
|
||||
end
|
||||
if not relative_parsed.query then
|
||||
relative_parsed.query = base_parsed.query
|
||||
end
|
||||
else
|
||||
relative_parsed.path = absolute_path(base_parsed.path or "",
|
||||
|
@ -99,8 +99,7 @@ check_parse_url{
|
||||
userinfo = "user:pass$%?#wd",
|
||||
password = "pass$%?#wd",
|
||||
user = "user",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -113,8 +112,7 @@ check_parse_url{
|
||||
userinfo = "user:pass?#wd",
|
||||
password = "pass?#wd",
|
||||
user = "user",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -127,8 +125,7 @@ check_parse_url{
|
||||
userinfo = "user:pass-wd",
|
||||
password = "pass-wd",
|
||||
user = "user",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -141,8 +138,7 @@ check_parse_url{
|
||||
userinfo = "user:pass#wd",
|
||||
password = "pass#wd",
|
||||
user = "user",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -155,8 +151,7 @@ check_parse_url{
|
||||
userinfo = "user:pass#wd",
|
||||
password = "pass#wd",
|
||||
user = "user",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
}
|
||||
check_parse_url{
|
||||
@ -167,8 +162,7 @@ check_parse_url{
|
||||
port = "port",
|
||||
userinfo = "userinfo",
|
||||
user = "userinfo",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -182,8 +176,7 @@ check_parse_url{
|
||||
userinfo = "user:password",
|
||||
user = "user",
|
||||
password = "password",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment",
|
||||
}
|
||||
@ -196,8 +189,7 @@ check_parse_url{
|
||||
port = "port",
|
||||
userinfo = "userinfo",
|
||||
user = "userinfo",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = ""
|
||||
}
|
||||
@ -210,8 +202,7 @@ check_parse_url{
|
||||
port = "port",
|
||||
userinfo = "userinfo",
|
||||
user = "userinfo",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -224,8 +215,7 @@ check_parse_url{
|
||||
port = "port",
|
||||
userinfo = "userinfo",
|
||||
user = "userinfo",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
fragment = "fragment"
|
||||
}
|
||||
|
||||
@ -237,8 +227,7 @@ check_parse_url{
|
||||
port = "port",
|
||||
userinfo = "userinfo",
|
||||
user = "userinfo",
|
||||
path = "/path",
|
||||
params = "",
|
||||
path = "/path;",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -264,8 +253,7 @@ check_parse_url{
|
||||
port = "port",
|
||||
userinfo = "userinfo",
|
||||
user = "userinfo",
|
||||
path = "/",
|
||||
params = "params",
|
||||
path = "/;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -287,8 +275,7 @@ check_parse_url{
|
||||
port = "port",
|
||||
userinfo = "userinfo",
|
||||
user = "userinfo",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -438,8 +425,7 @@ check_parse_url{
|
||||
port = "port",
|
||||
userinfo = "userinfo",
|
||||
user = "userinfo",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -453,8 +439,7 @@ check_parse_url{
|
||||
userinfo = "user:password",
|
||||
user = "user",
|
||||
password = "password",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -467,8 +452,7 @@ check_build_url {
|
||||
port = "port",
|
||||
user = "user",
|
||||
password = "password",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -478,8 +462,7 @@ check_build_url{
|
||||
host = "::FFFF:129.144.52.38",
|
||||
port = "port",
|
||||
user = "userinfo",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -491,8 +474,7 @@ check_build_url{
|
||||
port = "port",
|
||||
user = "user",
|
||||
password = "password",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -503,8 +485,7 @@ check_build_url {
|
||||
host = "host",
|
||||
user = "user",
|
||||
password = "password",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -514,8 +495,7 @@ check_build_url {
|
||||
scheme = "scheme",
|
||||
host = "host",
|
||||
user = "user",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -524,8 +504,7 @@ check_build_url {
|
||||
url = "scheme://host/path;params?query#fragment",
|
||||
scheme = "scheme",
|
||||
host = "host",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -534,8 +513,7 @@ check_build_url {
|
||||
url = "scheme://host/path;params#fragment",
|
||||
scheme = "scheme",
|
||||
host = "host",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
fragment = "fragment"
|
||||
}
|
||||
|
||||
@ -573,9 +551,7 @@ check_build_url {
|
||||
user = "user",
|
||||
userinfo = "not used",
|
||||
password = "password",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
query = "query",
|
||||
path = "/path;params",
|
||||
fragment = "fragment"
|
||||
}
|
||||
|
||||
@ -588,8 +564,7 @@ check_build_url {
|
||||
userinfo = "not used",
|
||||
authority = "not used",
|
||||
password = "password",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -601,8 +576,7 @@ check_build_url {
|
||||
port = "port",
|
||||
userinfo = "user:password",
|
||||
authority = "not used",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
@ -611,8 +585,7 @@ check_build_url {
|
||||
url = "scheme://user:password@host:port/path;params?query#fragment",
|
||||
scheme = "scheme",
|
||||
authority = "user:password@host:port",
|
||||
path = "/path",
|
||||
params = "params",
|
||||
path = "/path;params",
|
||||
query = "query",
|
||||
fragment = "fragment"
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user