aboutsummaryrefslogtreecommitdiff
path: root/src/url.lua
diff options
context:
space:
mode:
authorDiego Nehab <diego@tecgraf.puc-rio.br>2005-02-27 18:30:32 +0000
committerDiego Nehab <diego@tecgraf.puc-rio.br>2005-02-27 18:30:32 +0000
commit7350bad6f434a8546ed669591e1bbf6ed44a5842 (patch)
tree3a11d5c51c7a809c143f58e32049d0ed672f0d54 /src/url.lua
parent8d4e240f6ae50d9b22ddc44f5e207018935da907 (diff)
downloadluasocket-7350bad6f434a8546ed669591e1bbf6ed44a5842.tar.gz
luasocket-7350bad6f434a8546ed669591e1bbf6ed44a5842.tar.bz2
luasocket-7350bad6f434a8546ed669591e1bbf6ed44a5842.zip
Just to check out in the office.
Diffstat (limited to 'src/url.lua')
-rw-r--r--src/url.lua38
1 files changed, 22 insertions, 16 deletions
diff --git a/src/url.lua b/src/url.lua
index 8d7b88f..7aa3760 100644
--- a/src/url.lua
+++ b/src/url.lua
@@ -194,28 +194,34 @@ end
194-- corresponding absolute url 194-- corresponding absolute url
195----------------------------------------------------------------------------- 195-----------------------------------------------------------------------------
196function absolute(base_url, relative_url) 196function absolute(base_url, relative_url)
197 local base = base.type(base_url) == "table" and base_url or parse(base_url) 197 if base.type(base_url) == "table" then
198 local relative = parse(relative_url) 198 base_parsed = base_url
199 if not base then return relative_url 199 base_url = build(base_parsed)
200 elseif not relative then return base_url
201 elseif relative.scheme then return relative_url
202 else 200 else
203 relative.scheme = base.scheme 201 base_parsed = parse(base_url)
204 if not relative.authority then 202 end
205 relative.authority = base.authority 203 local relative_parsed = parse(relative_url)
206 if not relative.path then 204 if not base_parsed then return relative_url
207 relative.path = base.path 205 elseif not relative_parsed then return base_url
208 if not relative.params then 206 elseif relative_parsed.scheme then return relative_url
209 relative.params = base.params 207 else
210 if not relative.query then 208 relative_parsed.scheme = base_parsed.scheme
211 relative.query = base.query 209 if not relative_parsed.authority then
210 relative_parsed.authority = base_parsed.authority
211 if not relative_parsed.path then
212 relative_parsed.path = base_parsed.path
213 if not relative_parsed.params then
214 relative_parsed.params = base_parsed.params
215 if not relative_parsed.query then
216 relative_parsed.query = base_parsed.query
212 end 217 end
213 end 218 end
214 else 219 else
215 relative.path = absolute_path(base.path or "", relative.path) 220 relative_parsed.path = absolute_path(base_parsed.path or "",
221 relative_parsed.path)
216 end 222 end
217 end 223 end
218 return build(relative) 224 return build(relative_parsed)
219 end 225 end
220end 226end
221 227