| |
| function mysplit(inputstr, sep) |
| if sep == nil then |
| sep = "%s" |
| end |
| local t = {} |
| for str in inputstr:gmatch("([^"..sep.."]+)") do |
| table.insert(t, str) |
| end |
| return t |
| end |
| |
| core.register_action("set_repo_name", { "http-req" }, function(txn) |
| local requestPath = txn.sf:path() |
| local pp = mysplit(requestPath, "/") |
| local queryString = txn.sf:query() |
| local has_srv = string.find(queryString, "service=git-") |
| local git = has_srv ~= nil |
| local e = has_srv ~= nil and #pp-2 or #pp-1 |
| if pp[#pp] == "git-upload-pack" or pp[#pp] == "git-recieve-pack" then |
| git = true |
| end |
| local s = 1 |
| if pp[1] == 'a' or pp[1] == 'p' then |
| s = 2 |
| end |
| local repo = "" |
| if git then |
| for k = s, e, 1 do |
| repo = repo.."/"..pp[k] |
| end |
| else |
| if pp[s] == "changes" or pp[s] == "projects" then |
| repo = "/" |
| if pp[s+1] ~= nil then |
| repo = "/"..pp[s+1] |
| end |
| core.Info(repo) |
| local sep = string.find(repo, "~") |
| if sep ~= nil then |
| repo = string.sub(repo, 1, sep - 1) |
| end |
| repo = repo:gsub("%%2F", "/") |
| repo = repo:gsub("%%2f", "/") |
| end |
| end |
| if repo == "" then |
| repo = requestPath |
| end |
| txn.http:req_set_header("Gerrit-Project", repo) |
| end) |
| |