]> git.e2factory.org Git - e2factory.git/commitdiff
Add url.to_file_path()
authorTobias Ulmer <tu@emlix.com>
Tue, 3 Dec 2013 13:54:44 +0000 (14:54 +0100)
committerTobias Ulmer <tu@emlix.com>
Wed, 16 Nov 2016 14:01:23 +0000 (15:01 +0100)
Signed-off-by: Tobias Ulmer <tu@emlix.com>
generic/url.lua

index 78db534a9d171402730ac815de54c2352a216edc..6cb8aa3067184798777bd94909a3b49edeca0524 100644 (file)
@@ -29,6 +29,7 @@
 ]]
 
 local url = {}
+local e2lib = require("e2lib")
 local strict = require("strict")
 
 --- parse
@@ -99,6 +100,29 @@ function url.parse(url)
     return u
 end
 
+--- Returns a file path from an URL object.
+-- @param u URL object.
+-- @param transport Transport of URL object must match this transport. Optional.
+-- @param relative Return a relative path if true, otherwise absolute. Optional.
+-- @return Path on success, false on error.
+-- @return Error object on failure.
+function url.to_file_path(u, transport, relative)
+    if transport and u.transport ~= transport then
+        return false, err.new("converting URL to file path: transport mismatch")
+    end
+
+    if type(u.path) ~= "string" then
+        return false,
+            err.new("converting URL to file path: path component in URL empty")
+    end
+
+    if relative then
+        return u.path
+    end
+
+    return e2lib.join("/", u.path)
+end
+
 return strict.lock(url)
 
 -- vim:sw=4:sts=4:et: