add_block_preprocessor()

in t/plugin/http-logger2.t [24:162]


add_block_preprocessor(sub {
    my ($block) = @_;

    if (!$block->request) {
        $block->set_value("request", "GET /t");
    }

    my $http_config = $block->http_config // <<_EOC_;
    server {
        listen 12001;

        location /http-logger/test {
            content_by_lua_block {
                ngx.say("test-http-logger-response")
            }
        }

        location /http-logger/Authorization {
            content_by_lua_block {
                ngx.log(ngx.WARN, "received Authorization header: [", ngx.var.http_authorization, "]")
                ngx.say("OK")
            }
        }

        location /http-logger/center {
            content_by_lua_block {
                local function str_split(str, reps)
                    local str_list = {}
                    string.gsub(str, '[^' .. reps .. ']+', function(w)
                        table.insert(str_list, w)
                    end)
                    return str_list
                end

                local args = ngx.req.get_uri_args()
                local query = args.query or nil
                ngx.req.read_body()
                local body = ngx.req.get_body_data()

                if query then
                    if type(query) == "string" then
                        query = {query}
                    end

                    local data, err = require("cjson").decode(body)
                    if err then
                        ngx.log(ngx.WARN, "logs:", body)
                    end

                    for i = 1, #query do
                        local fields = str_split(query[i], ".")
                        local val
                        for j = 1, #fields do
                            local key = fields[j]
                            if j == 1 then
                                val = data[key]
                            else
                                val = val[key]
                            end
                        end
                        ngx.log(ngx.WARN ,query[i], ":", val)
                    end
                else
                    ngx.log(ngx.WARN, "logs:", body)
                end
            }
        }

        location / {
            content_by_lua_block {
                ngx.log(ngx.WARN, "test http logger for root path")
            }
        }
    }

    server {
        listen 11451;
        gzip on;
        gzip_types *;
        gzip_min_length 1;
        location /gzip_hello {
            content_by_lua_block {
                ngx.req.read_body()
                local s = "gzip hello world"
                ngx.header['Content-Length'] = #s + 1
                ngx.say(s)
            }
        }
    }

    server {
        listen 11452;
        location /brotli_hello {
            content_by_lua_block {
                ngx.req.read_body()
                local s = "brotli hello world"
                ngx.header['Content-Length'] = #s + 1
                ngx.say(s)
            }
            header_filter_by_lua_block {
                local conf = {
                    comp_level = 6,
                    http_version = 1.1,
                    lgblock = 0,
                    lgwin = 19,
                    min_length = 1,
                    mode = 0,
                    types = "*",
                }
                local brotli = require("apisix.plugins.brotli")
                brotli.header_filter(conf, ngx.ctx)
            }
            body_filter_by_lua_block {
                local conf = {
                    comp_level = 6,
                    http_version = 1.1,
                    lgblock = 0,
                    lgwin = 19,
                    min_length = 1,
                    mode = 0,
                    types = "*",
                }
                local brotli = require("apisix.plugins.brotli")
                brotli.body_filter(conf, ngx.ctx)
            }
        }
    }

_EOC_

    $block->set_value("http_config", $http_config);

    my $extra_init_by_lua = <<_EOC_;
    local bpm = require("apisix.utils.batch-processor-manager")
    bpm.set_check_stale_interval(1)
_EOC_

    $block->set_value("extra_init_by_lua", $extra_init_by_lua);
});