From: Tobias Ulmer Date: Tue, 3 Dec 2013 13:54:44 +0000 (+0100) Subject: Add url.to_file_path() X-Git-Tag: e2factory-2.3.15rc1~427 X-Git-Url: https://git.e2factory.org/?a=commitdiff_plain;h=179d8b2a95c0cab592c3918564ba304ccf93598f;p=e2factory.git Add url.to_file_path() Signed-off-by: Tobias Ulmer --- diff --git a/generic/url.lua b/generic/url.lua index 78db534..6cb8aa3 100644 --- a/generic/url.lua +++ b/generic/url.lua @@ -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: