function replace_prefix(str, prefix, value)
    return str:gsub("^"..prefix, value)
end

function envoy_on_request(request_handle)
end

function envoy_on_response(response_handle)
    local headers = response_handle:headers()
    local metadata = response_handle:metadata()

    -- should be in the form:
    -- [{
    --   "header":"Location",
    --   "prefix":"http://localhost:8000/two/",
    --   "value":"http://frontend/one/"
    -- }]
    local rewrite_response_headers = metadata:get("rewrite_response_headers")
    if rewrite_response_headers then
        for _, obj in pairs(rewrite_response_headers) do
            local hdr = headers:get(obj.header)
            if hdr ~= nil then
                local newhdr = replace_prefix(hdr, obj.prefix, obj.value)
                headers:replace(obj.header, newhdr)
            end
        end
    end
end