public Mono filter()

in start/src/main/java/org/apache/rocketmq/eventbridge/filter/LogFilter.java [48:76]


    public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
        ServerHttpRequestDecorator accessPermissionDecorator = new ServerHttpRequestDecorator(exchange.getRequest()) {
            @Override
            public Flux<DataBuffer> getBody() {
                return super.getBody().doOnNext(dataBuffer -> {
                    try {
                        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                        Channels.newChannel(byteArrayOutputStream).write(dataBuffer.asByteBuffer().asReadOnlyBuffer());
                        String requestBody = new String(byteArrayOutputStream.toByteArray(), StandardCharsets.UTF_8);
                        List<String> requestTraceIds = exchange.getRequest().getHeaders().get(EventBridgeConstants.REQUEST_TRACE_ID);
                        String requestId = "";
                        if (!CollectionUtils.isEmpty(requestTraceIds)) {
                            requestId = requestTraceIds.get(0);
                        }
                        log.info("requestTraceId : {} | url : {} | requestParam : {} | requestMethod : {} | requestBody : {}",
                                requestId,
                                exchange.getRequest().getURI(),
                                exchange.getRequest().getQueryParams(),
                                exchange.getRequest().getMethodValue(),
                                new Gson().toJson(requestBody));
                    } catch (IOException e) {
                        log.error("LoginFilter | filter => e ", e);
                        throw new EventBridgeException(e);
                    }
                });
            }
        };
        return chain.filter(exchange.mutate().request(accessPermissionDecorator).build());
    }