mirror of
https://github.com/lunarmodules/luasocket.git
synced 2024-09-20 19:16:40 +02:00
Compare commits
5 Commits
f815d7005c
...
24528134fd
Author | SHA1 | Date | |
---|---|---|---|
|
24528134fd | ||
|
93eef5015e | ||
|
b281e6f717 | ||
|
784b0631e1 | ||
|
a1b5d3abd1 |
@ -55,7 +55,7 @@ protocol. For that, check the implementation.
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
To really benefit from this module, a good understanding of
|
To really benefit from this module, a good understanding of
|
||||||
<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> is necessary.
|
LTN012, Filters sources and sinks</a> is necessary.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -122,7 +122,7 @@ expects at least the fields <tt>host</tt>, <tt>sink</tt>, and one of
|
|||||||
<tt>argument</tt> or <tt>path</tt> (<tt>argument</tt> takes
|
<tt>argument</tt> or <tt>path</tt> (<tt>argument</tt> takes
|
||||||
precedence). <tt>Host</tt> is the server to connect to. <tt>Sink</tt> is
|
precedence). <tt>Host</tt> is the server to connect to. <tt>Sink</tt> is
|
||||||
the <em>simple</em>
|
the <em>simple</em>
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a>
|
||||||
sink that will receive the downloaded data. <tt>Argument</tt> or
|
sink that will receive the downloaded data. <tt>Argument</tt> or
|
||||||
<tt>path</tt> give the target path to the resource in the server. The
|
<tt>path</tt> give the target path to the resource in the server. The
|
||||||
optional arguments are the following:
|
optional arguments are the following:
|
||||||
@ -136,7 +136,7 @@ authentication. Defaults to "<tt>ftp:anonymous@anonymous.org</tt>";</li>
|
|||||||
<li><tt>type</tt>: The transfer mode. Can take values "<tt>i</tt>" or
|
<li><tt>type</tt>: The transfer mode. Can take values "<tt>i</tt>" or
|
||||||
"<tt>a</tt>". Defaults to whatever is the server default;</li>
|
"<tt>a</tt>". Defaults to whatever is the server default;</li>
|
||||||
<li><tt>step</tt>:
|
<li><tt>step</tt>:
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a>
|
||||||
pump step function used to pass data from the
|
pump step function used to pass data from the
|
||||||
server to the sink. Defaults to the LTN12 <tt>pump.step</tt> function;</li>
|
server to the sink. Defaults to the LTN12 <tt>pump.step</tt> function;</li>
|
||||||
<li><tt>create</tt>: An optional function to be used instead of
|
<li><tt>create</tt>: An optional function to be used instead of
|
||||||
@ -206,7 +206,7 @@ expects at least the fields <tt>host</tt>, <tt>source</tt>, and one of
|
|||||||
<tt>argument</tt> or <tt>path</tt> (<tt>argument</tt> takes
|
<tt>argument</tt> or <tt>path</tt> (<tt>argument</tt> takes
|
||||||
precedence). <tt>Host</tt> is the server to connect to. <tt>Source</tt> is
|
precedence). <tt>Host</tt> is the server to connect to. <tt>Source</tt> is
|
||||||
the <em>simple</em>
|
the <em>simple</em>
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a>
|
||||||
source that will provide the contents to be uploaded.
|
source that will provide the contents to be uploaded.
|
||||||
<tt>Argument</tt> or
|
<tt>Argument</tt> or
|
||||||
<tt>path</tt> give the target path to the resource in the server. The
|
<tt>path</tt> give the target path to the resource in the server. The
|
||||||
@ -221,7 +221,7 @@ authentication. Defaults to "<tt>ftp:anonymous@anonymous.org</tt>";</li>
|
|||||||
<li><tt>type</tt>: The transfer mode. Can take values "<tt>i</tt>" or
|
<li><tt>type</tt>: The transfer mode. Can take values "<tt>i</tt>" or
|
||||||
"<tt>a</tt>". Defaults to whatever is the server default;</li>
|
"<tt>a</tt>". Defaults to whatever is the server default;</li>
|
||||||
<li><tt>step</tt>:
|
<li><tt>step</tt>:
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a>
|
||||||
pump step function used to pass data from the
|
pump step function used to pass data from the
|
||||||
server to the sink. Defaults to the LTN12 <tt>pump.step</tt> function;</li>
|
server to the sink. Defaults to the LTN12 <tt>pump.step</tt> function;</li>
|
||||||
<li><tt>create</tt>: An optional function to be used instead of
|
<li><tt>create</tt>: An optional function to be used instead of
|
||||||
|
@ -52,7 +52,7 @@ implementation conforms to the HTTP/1.1 standard,
|
|||||||
The module exports functions that provide HTTP functionality in different
|
The module exports functions that provide HTTP functionality in different
|
||||||
levels of abstraction. From the simple
|
levels of abstraction. From the simple
|
||||||
string oriented requests, through generic
|
string oriented requests, through generic
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a> based, down to even lower-level if you bother to look through the source code.
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a> based, down to even lower-level if you bother to look through the source code.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -144,7 +144,7 @@ http.<b>request{</b><br>
|
|||||||
The request function has two forms. The simple form downloads
|
The request function has two forms. The simple form downloads
|
||||||
a URL using the <tt>GET</tt> or <tt>POST</tt> method and is based
|
a URL using the <tt>GET</tt> or <tt>POST</tt> method and is based
|
||||||
on strings. The generic form performs any HTTP method and is
|
on strings. The generic form performs any HTTP method and is
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a> based.
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a> based.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="parameters">
|
<p class="parameters">
|
||||||
@ -158,7 +158,7 @@ in the <tt>url</tt>. Otherwise, it performs a <tt>GET</tt> in the
|
|||||||
<p class="parameters">
|
<p class="parameters">
|
||||||
If the first argument is instead a table, the most important fields are
|
If the first argument is instead a table, the most important fields are
|
||||||
the <tt>url</tt> and the <em>simple</em>
|
the <tt>url</tt> and the <em>simple</em>
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a>
|
||||||
<tt>sink</tt> that will receive the downloaded content.
|
<tt>sink</tt> that will receive the downloaded content.
|
||||||
Any part of the <tt>url</tt> can be overridden by including
|
Any part of the <tt>url</tt> can be overridden by including
|
||||||
the appropriate field in the request table.
|
the appropriate field in the request table.
|
||||||
@ -172,13 +172,13 @@ following:
|
|||||||
<li><tt>method</tt>: The HTTP request method. Defaults to "GET";</li>
|
<li><tt>method</tt>: The HTTP request method. Defaults to "GET";</li>
|
||||||
<li><tt>headers</tt>: Any additional HTTP headers to send with the request;</li>
|
<li><tt>headers</tt>: Any additional HTTP headers to send with the request;</li>
|
||||||
<li><tt>source</tt>: <em>simple</em>
|
<li><tt>source</tt>: <em>simple</em>
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a>
|
||||||
source to provide the request body. If there
|
source to provide the request body. If there
|
||||||
is a body, you need to provide an appropriate "<tt>content-length</tt>"
|
is a body, you need to provide an appropriate "<tt>content-length</tt>"
|
||||||
request header field, or the function will attempt to send the body as
|
request header field, or the function will attempt to send the body as
|
||||||
"<tt>chunked</tt>" (something few servers support). Defaults to the empty source;</li>
|
"<tt>chunked</tt>" (something few servers support). Defaults to the empty source;</li>
|
||||||
<li><tt>step</tt>:
|
<li><tt>step</tt>:
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a>
|
||||||
pump step function used to move data.
|
pump step function used to move data.
|
||||||
Defaults to the LTN12 <tt>pump.step</tt> function.</li>
|
Defaults to the LTN12 <tt>pump.step</tt> function.</li>
|
||||||
<li><tt>proxy</tt>: The URL of a proxy server to use. Defaults to no proxy;</li>
|
<li><tt>proxy</tt>: The URL of a proxy server to use. Defaults to no proxy;</li>
|
||||||
|
@ -54,7 +54,7 @@ MIME is described mainly in
|
|||||||
<p>
|
<p>
|
||||||
All functionality provided by the MIME module
|
All functionality provided by the MIME module
|
||||||
follows the ideas presented in
|
follows the ideas presented 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>.
|
LTN012, Filters sources and sinks</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ of the MIME standard, but described mainly
|
|||||||
in <a href="http://www.ietf.org/rfc/rfc2046.txt">RFC 2046</a>.</p>
|
in <a href="http://www.ietf.org/rfc/rfc2046.txt">RFC 2046</a>.</p>
|
||||||
|
|
||||||
<p> In the description below, good understanding of <a
|
<p> In the description below, good understanding of <a
|
||||||
href="http://lua-users.org/wiki/FiltersSourcesAndSinks"> LTN012, Filters
|
href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md"> LTN012, Filters
|
||||||
sources and sinks</a> and the <a href="mime.html">MIME</a> module is
|
sources and sinks</a> and the <a href="mime.html">MIME</a> module is
|
||||||
assumed. In fact, the SMTP module was the main reason for their
|
assumed. In fact, the SMTP module was the main reason for their
|
||||||
creation. </p>
|
creation. </p>
|
||||||
@ -122,7 +122,7 @@ smtp.<b>message(</b>mesgt<b>)</b>
|
|||||||
|
|
||||||
<p class="description">
|
<p class="description">
|
||||||
Returns a <em>simple</em>
|
Returns a <em>simple</em>
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a> source that sends an SMTP message body, possibly multipart (arbitrarily deep).
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a> source that sends an SMTP message body, possibly multipart (arbitrarily deep).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="parameters">
|
<p class="parameters">
|
||||||
@ -155,7 +155,7 @@ multipart-mesgt = {<br>
|
|||||||
For a simple message, all that is needed is a set of <tt>headers</tt>
|
For a simple message, all that is needed is a set of <tt>headers</tt>
|
||||||
and the <tt>body</tt>. The message <tt>body</tt> can be given as a string
|
and the <tt>body</tt>. The message <tt>body</tt> can be given as a string
|
||||||
or as a <em>simple</em>
|
or as a <em>simple</em>
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a>
|
||||||
source. For multipart messages, the body is a table that
|
source. For multipart messages, the body is a table that
|
||||||
recursively defines each part as an independent message, plus an optional
|
recursively defines each part as an independent message, plus an optional
|
||||||
<tt>preamble</tt> and <tt>epilogue</tt>.
|
<tt>preamble</tt> and <tt>epilogue</tt>.
|
||||||
@ -163,7 +163,7 @@ recursively defines each part as an independent message, plus an optional
|
|||||||
|
|
||||||
<p class="return">
|
<p class="return">
|
||||||
The function returns a <em>simple</em>
|
The function returns a <em>simple</em>
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a>
|
||||||
source that produces the
|
source that produces the
|
||||||
message contents as defined by <tt>mesgt</tt>, chunk by chunk.
|
message contents as defined by <tt>mesgt</tt>, chunk by chunk.
|
||||||
Hopefully, the following
|
Hopefully, the following
|
||||||
@ -264,7 +264,7 @@ The sender is given by the e-mail address in the <tt>from</tt> field.
|
|||||||
address, or a string
|
address, or a string
|
||||||
in case there is just one recipient.
|
in case there is just one recipient.
|
||||||
The contents of the message are given by a <em>simple</em>
|
The contents of the message are given by a <em>simple</em>
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a>
|
||||||
<tt>source</tt>. Several arguments are optional:
|
<tt>source</tt>. Several arguments are optional:
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
@ -276,7 +276,7 @@ methods if supported by the server (both are unsafe);</li>
|
|||||||
<li> <tt>domain</tt>: Domain name used to greet the server; Defaults to the
|
<li> <tt>domain</tt>: Domain name used to greet the server; Defaults to the
|
||||||
local machine host name;</li>
|
local machine host name;</li>
|
||||||
<li> <tt>step</tt>:
|
<li> <tt>step</tt>:
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a>
|
||||||
pump step function used to pass data from the
|
pump step function used to pass data from the
|
||||||
source to the server. Defaults to the LTN12 <tt>pump.step</tt> function;</li>
|
source to the server. Defaults to the LTN12 <tt>pump.step</tt> function;</li>
|
||||||
<li><tt>create</tt>: An optional function to be used instead of
|
<li><tt>create</tt>: An optional function to be used instead of
|
||||||
@ -308,7 +308,7 @@ Only recipients specified in the <tt>rcpt</tt> list will receive a copy of the
|
|||||||
message. Each recipient of an SMTP mail message receives a copy of the
|
message. Each recipient of an SMTP mail message receives a copy of the
|
||||||
message body along with the headers, and nothing more. The headers
|
message body along with the headers, and nothing more. The headers
|
||||||
<em>are</em> part of the message and should be produced by the
|
<em>are</em> part of the message and should be produced by the
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a>
|
||||||
<tt>source</tt> function. The <tt>rcpt</tt> list is <em>not</em>
|
<tt>source</tt> function. The <tt>rcpt</tt> list is <em>not</em>
|
||||||
part of the message and will not be sent to anyone.
|
part of the message and will not be sent to anyone.
|
||||||
</p>
|
</p>
|
||||||
|
@ -311,7 +311,7 @@ socket.<b>sink(</b>mode, socket<b>)</b>
|
|||||||
|
|
||||||
<p class="description">
|
<p class="description">
|
||||||
Creates an
|
Creates an
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a>
|
||||||
sink from a stream socket object.
|
sink from a stream socket object.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -386,7 +386,7 @@ socket.<b>source(</b>mode, socket [, length]<b>)</b>
|
|||||||
|
|
||||||
<p class="description">
|
<p class="description">
|
||||||
Creates an
|
Creates an
|
||||||
<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
|
<a href="https://github.com/lunarmodules/luasocket/blob/master/ltn012.md">LTN12</a>
|
||||||
source from a stream socket object.
|
source from a stream socket object.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ An URL is defined by the following grammar:
|
|||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<tt>
|
<tt>
|
||||||
<url> ::= [<scheme>:][//<authority>][/<path>][;<params>][?<query>][#<fragment>]<br>
|
<url> ::= [<scheme>:][//<authority>][/<path>][?<query>][#<fragment>]<br>
|
||||||
<authority> ::= [<userinfo>@]<host>[:<port>]<br>
|
<authority> ::= [<userinfo>@]<host>[:<port>]<br>
|
||||||
<userinfo> ::= <user>[:<password>]<br>
|
<userinfo> ::= <user>[:<password>]<br>
|
||||||
<path> ::= {<segment>/}<segment><br>
|
<path> ::= {<segment>/}<segment><br>
|
||||||
@ -225,7 +225,6 @@ parsed_url = {<br>
|
|||||||
scheme = <i>string</i>,<br>
|
scheme = <i>string</i>,<br>
|
||||||
authority = <i>string</i>,<br>
|
authority = <i>string</i>,<br>
|
||||||
path = <i>string</i>,<br>
|
path = <i>string</i>,<br>
|
||||||
params = <i>string</i>,<br>
|
|
||||||
query = <i>string</i>,<br>
|
query = <i>string</i>,<br>
|
||||||
fragment = <i>string</i>,<br>
|
fragment = <i>string</i>,<br>
|
||||||
userinfo = <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",
|
-- scheme = "ftp",
|
||||||
-- authority = "root:passwd@unsafe.org",
|
-- authority = "root:passwd@unsafe.org",
|
||||||
-- path = "/pub/virus.exe",
|
-- path = "/pub/virus.exe",
|
||||||
-- params = "type=i",
|
|
||||||
-- userinfo = "root:passwd",
|
-- userinfo = "root:passwd",
|
||||||
-- host = "unsafe.org",
|
-- host = "unsafe.org",
|
||||||
-- user = "root",
|
-- user = "root",
|
||||||
|
@ -207,7 +207,6 @@ local function adjusturi(reqt)
|
|||||||
if not reqt.proxy and not _M.PROXY then
|
if not reqt.proxy and not _M.PROXY then
|
||||||
u = {
|
u = {
|
||||||
path = socket.try(reqt.path, "invalid path 'nil'"),
|
path = socket.try(reqt.path, "invalid path 'nil'"),
|
||||||
params = reqt.params,
|
|
||||||
query = reqt.query,
|
query = reqt.query,
|
||||||
fragment = reqt.fragment
|
fragment = reqt.fragment
|
||||||
}
|
}
|
||||||
|
13
src/url.lua
13
src/url.lua
@ -125,7 +125,7 @@ end
|
|||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
-- Parses a url and returns a table with all its parts according to RFC 2396
|
-- 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
|
-- 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>
|
-- <authority> ::= <userinfo>@<host>:<port>
|
||||||
-- <userinfo> ::= <user>[:<password>]
|
-- <userinfo> ::= <user>[:<password>]
|
||||||
-- <path> :: = {<segment>/}<segment>
|
-- <path> :: = {<segment>/}<segment>
|
||||||
@ -136,7 +136,7 @@ end
|
|||||||
-- table with the following fields, where RFC naming conventions have
|
-- table with the following fields, where RFC naming conventions have
|
||||||
-- been preserved:
|
-- been preserved:
|
||||||
-- scheme, authority, userinfo, user, password, host, port,
|
-- scheme, authority, userinfo, user, password, host, port,
|
||||||
-- path, params, query, fragment
|
-- path, query, fragment
|
||||||
-- Obs:
|
-- Obs:
|
||||||
-- the leading '/' in {/<path>} is considered part of <path>
|
-- the leading '/' in {/<path>} is considered part of <path>
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
@ -166,11 +166,6 @@ function _M.parse(url, default)
|
|||||||
parsed.query = q
|
parsed.query = q
|
||||||
return ""
|
return ""
|
||||||
end)
|
end)
|
||||||
-- get params
|
|
||||||
url = string.gsub(url, "%;(.*)", function(p)
|
|
||||||
parsed.params = p
|
|
||||||
return ""
|
|
||||||
end)
|
|
||||||
-- path is whatever was left
|
-- path is whatever was left
|
||||||
if url ~= "" then parsed.path = url end
|
if url ~= "" then parsed.path = url end
|
||||||
local authority = parsed.authority
|
local authority = parsed.authority
|
||||||
@ -203,7 +198,6 @@ function _M.build(parsed)
|
|||||||
--local ppath = _M.parse_path(parsed.path or "")
|
--local ppath = _M.parse_path(parsed.path or "")
|
||||||
--local url = _M.build_path(ppath)
|
--local url = _M.build_path(ppath)
|
||||||
local url = parsed.path or ""
|
local url = parsed.path or ""
|
||||||
if parsed.params then url = url .. ";" .. parsed.params end
|
|
||||||
if parsed.query then url = url .. "?" .. parsed.query end
|
if parsed.query then url = url .. "?" .. parsed.query end
|
||||||
local authority = parsed.authority
|
local authority = parsed.authority
|
||||||
if parsed.host then
|
if parsed.host then
|
||||||
@ -258,12 +252,9 @@ function _M.absolute(base_url, relative_url)
|
|||||||
relative_parsed.authority = base_parsed.authority
|
relative_parsed.authority = base_parsed.authority
|
||||||
if not relative_parsed.path then
|
if not relative_parsed.path then
|
||||||
relative_parsed.path = base_parsed.path
|
relative_parsed.path = base_parsed.path
|
||||||
if not relative_parsed.params then
|
|
||||||
relative_parsed.params = base_parsed.params
|
|
||||||
if not relative_parsed.query then
|
if not relative_parsed.query then
|
||||||
relative_parsed.query = base_parsed.query
|
relative_parsed.query = base_parsed.query
|
||||||
end
|
end
|
||||||
end
|
|
||||||
else
|
else
|
||||||
relative_parsed.path = absolute_path(base_parsed.path or "",
|
relative_parsed.path = absolute_path(base_parsed.path or "",
|
||||||
relative_parsed.path)
|
relative_parsed.path)
|
||||||
|
@ -99,8 +99,7 @@ check_parse_url{
|
|||||||
userinfo = "user:pass$%?#wd",
|
userinfo = "user:pass$%?#wd",
|
||||||
password = "pass$%?#wd",
|
password = "pass$%?#wd",
|
||||||
user = "user",
|
user = "user",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -113,8 +112,7 @@ check_parse_url{
|
|||||||
userinfo = "user:pass?#wd",
|
userinfo = "user:pass?#wd",
|
||||||
password = "pass?#wd",
|
password = "pass?#wd",
|
||||||
user = "user",
|
user = "user",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -127,8 +125,7 @@ check_parse_url{
|
|||||||
userinfo = "user:pass-wd",
|
userinfo = "user:pass-wd",
|
||||||
password = "pass-wd",
|
password = "pass-wd",
|
||||||
user = "user",
|
user = "user",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -141,8 +138,7 @@ check_parse_url{
|
|||||||
userinfo = "user:pass#wd",
|
userinfo = "user:pass#wd",
|
||||||
password = "pass#wd",
|
password = "pass#wd",
|
||||||
user = "user",
|
user = "user",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -155,8 +151,7 @@ check_parse_url{
|
|||||||
userinfo = "user:pass#wd",
|
userinfo = "user:pass#wd",
|
||||||
password = "pass#wd",
|
password = "pass#wd",
|
||||||
user = "user",
|
user = "user",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
}
|
}
|
||||||
check_parse_url{
|
check_parse_url{
|
||||||
@ -167,8 +162,7 @@ check_parse_url{
|
|||||||
port = "port",
|
port = "port",
|
||||||
userinfo = "userinfo",
|
userinfo = "userinfo",
|
||||||
user = "userinfo",
|
user = "userinfo",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -182,8 +176,7 @@ check_parse_url{
|
|||||||
userinfo = "user:password",
|
userinfo = "user:password",
|
||||||
user = "user",
|
user = "user",
|
||||||
password = "password",
|
password = "password",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment",
|
fragment = "fragment",
|
||||||
}
|
}
|
||||||
@ -196,8 +189,7 @@ check_parse_url{
|
|||||||
port = "port",
|
port = "port",
|
||||||
userinfo = "userinfo",
|
userinfo = "userinfo",
|
||||||
user = "userinfo",
|
user = "userinfo",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = ""
|
fragment = ""
|
||||||
}
|
}
|
||||||
@ -210,8 +202,7 @@ check_parse_url{
|
|||||||
port = "port",
|
port = "port",
|
||||||
userinfo = "userinfo",
|
userinfo = "userinfo",
|
||||||
user = "userinfo",
|
user = "userinfo",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "",
|
query = "",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -224,8 +215,7 @@ check_parse_url{
|
|||||||
port = "port",
|
port = "port",
|
||||||
userinfo = "userinfo",
|
userinfo = "userinfo",
|
||||||
user = "userinfo",
|
user = "userinfo",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,8 +227,7 @@ check_parse_url{
|
|||||||
port = "port",
|
port = "port",
|
||||||
userinfo = "userinfo",
|
userinfo = "userinfo",
|
||||||
user = "userinfo",
|
user = "userinfo",
|
||||||
path = "/path",
|
path = "/path;",
|
||||||
params = "",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -264,8 +253,7 @@ check_parse_url{
|
|||||||
port = "port",
|
port = "port",
|
||||||
userinfo = "userinfo",
|
userinfo = "userinfo",
|
||||||
user = "userinfo",
|
user = "userinfo",
|
||||||
path = "/",
|
path = "/;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -287,8 +275,7 @@ check_parse_url{
|
|||||||
port = "port",
|
port = "port",
|
||||||
userinfo = "userinfo",
|
userinfo = "userinfo",
|
||||||
user = "userinfo",
|
user = "userinfo",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -438,8 +425,7 @@ check_parse_url{
|
|||||||
port = "port",
|
port = "port",
|
||||||
userinfo = "userinfo",
|
userinfo = "userinfo",
|
||||||
user = "userinfo",
|
user = "userinfo",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -453,8 +439,7 @@ check_parse_url{
|
|||||||
userinfo = "user:password",
|
userinfo = "user:password",
|
||||||
user = "user",
|
user = "user",
|
||||||
password = "password",
|
password = "password",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -467,8 +452,7 @@ check_build_url {
|
|||||||
port = "port",
|
port = "port",
|
||||||
user = "user",
|
user = "user",
|
||||||
password = "password",
|
password = "password",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -478,8 +462,7 @@ check_build_url{
|
|||||||
host = "::FFFF:129.144.52.38",
|
host = "::FFFF:129.144.52.38",
|
||||||
port = "port",
|
port = "port",
|
||||||
user = "userinfo",
|
user = "userinfo",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -491,8 +474,7 @@ check_build_url{
|
|||||||
port = "port",
|
port = "port",
|
||||||
user = "user",
|
user = "user",
|
||||||
password = "password",
|
password = "password",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -503,8 +485,7 @@ check_build_url {
|
|||||||
host = "host",
|
host = "host",
|
||||||
user = "user",
|
user = "user",
|
||||||
password = "password",
|
password = "password",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -514,8 +495,7 @@ check_build_url {
|
|||||||
scheme = "scheme",
|
scheme = "scheme",
|
||||||
host = "host",
|
host = "host",
|
||||||
user = "user",
|
user = "user",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -524,8 +504,7 @@ check_build_url {
|
|||||||
url = "scheme://host/path;params?query#fragment",
|
url = "scheme://host/path;params?query#fragment",
|
||||||
scheme = "scheme",
|
scheme = "scheme",
|
||||||
host = "host",
|
host = "host",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -534,8 +513,7 @@ check_build_url {
|
|||||||
url = "scheme://host/path;params#fragment",
|
url = "scheme://host/path;params#fragment",
|
||||||
scheme = "scheme",
|
scheme = "scheme",
|
||||||
host = "host",
|
host = "host",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -573,9 +551,7 @@ check_build_url {
|
|||||||
user = "user",
|
user = "user",
|
||||||
userinfo = "not used",
|
userinfo = "not used",
|
||||||
password = "password",
|
password = "password",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -588,8 +564,7 @@ check_build_url {
|
|||||||
userinfo = "not used",
|
userinfo = "not used",
|
||||||
authority = "not used",
|
authority = "not used",
|
||||||
password = "password",
|
password = "password",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -601,8 +576,7 @@ check_build_url {
|
|||||||
port = "port",
|
port = "port",
|
||||||
userinfo = "user:password",
|
userinfo = "user:password",
|
||||||
authority = "not used",
|
authority = "not used",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
@ -611,8 +585,7 @@ check_build_url {
|
|||||||
url = "scheme://user:password@host:port/path;params?query#fragment",
|
url = "scheme://user:password@host:port/path;params?query#fragment",
|
||||||
scheme = "scheme",
|
scheme = "scheme",
|
||||||
authority = "user:password@host:port",
|
authority = "user:password@host:port",
|
||||||
path = "/path",
|
path = "/path;params",
|
||||||
params = "params",
|
|
||||||
query = "query",
|
query = "query",
|
||||||
fragment = "fragment"
|
fragment = "fragment"
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user