qicosmos / cinatra

modern c++(c++20), cross-platform, header-only, easy to use http framework
MIT License
1.81k stars 369 forks source link

feat:add br support #600

Closed helintongh closed 1 week ago

helintongh commented 2 weeks ago

add br compression support.

server code:

int main()
{
  coro_http_server server(1, 9001);

  server.set_http_handler<GET, POST>(
      "/get", [](coro_http_request &req, coro_http_response &resp) {
        auto encoding_type = req.get_encoding_type();

        if (encoding_type == content_encoding::br) {
          std::string decode_str;
          bool r = br_codec::brotli_decompress(req.get_body(), decode_str);
          std::cout << decode_str << std::endl;
        }
        resp.set_status_and_content(status_type::ok, "ok", content_encoding::br,
                                    req.get_accept_encoding());
      });

  server.sync_start();
}

python client test code:

import requests
import brotli

additional_headers= {
    'Content-Encoding': 'br'
}
request_body = brotli.compress("Hello world".encode('utf-8'))
r = requests.post('http://192.168.16.2:9001/get', request_body, headers=additional_headers)

print(r.content)

Test pass.

github-actions[bot] commented 2 weeks ago

Code Coverage Report for detail, goto summary download Artifacts

Filename                                      Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cinatra_log_wrapper.hpp                               4                 1    75.00%           9                 1    88.89%           0                 0         -
cookie.hpp                                           15                 2    86.67%          84                 2    97.62%          28                 3    89.29%
coro_http_client.hpp                                 83                 5    93.98%        1280               198    84.53%         410               114    72.20%
coro_http_connection.hpp                             36                 2    94.44%         667               208    68.82%         202                71    64.85%
coro_http_request.hpp                                31                 7    77.42%         218                41    81.19%          74                10    86.49%
coro_http_response.hpp                               31                 6    80.65%         226                68    69.91%          90                36    60.00%
coro_http_router.hpp                                 15                 0   100.00%         181                32    82.32%          20                 8    60.00%
coro_http_server.hpp                                 50                 5    90.00%         947               122    87.12%         178                47    73.60%
coro_radix_tree.hpp                                  17                 0   100.00%         264                38    85.61%         136                30    77.94%
define.h                                              2                 0   100.00%          28                 2    92.86%          20                 1    95.00%
http_parser.hpp                                      29                 5    82.76%         201                32    84.08%          56                12    78.57%
metric_conf.hpp                                       8                 4    50.00%          96                80    16.67%          32                28    12.50%
mime_types.hpp                                        1                 0   100.00%           7                 2    71.43%           2                 1    50.00%
multipart.hpp                                         4                 0   100.00%          89                15    83.15%          22                 5    77.27%
picohttpparser.h                                     14                 6    57.14%         467               278    40.47%         212               103    51.42%
response_cv.hpp                                       2                 0   100.00%          55                32    41.82%          46                16    65.22%
session.hpp                                          11                 0   100.00%          54                 2    96.30%           4                 1    75.00%
session_manager.hpp                                  10                 1    90.00%          67                 5    92.54%          10                 1    90.00%
sha1.hpp                                             12                 0   100.00%         181                 8    95.58%          12                 2    83.33%
string_resize.hpp                                     2                 0   100.00%          18                 0   100.00%           2                 0   100.00%
time_util.hpp                                        20                 7    65.00%         172                70    59.30%          28                 2    92.86%
uri.hpp                                              17                 5    70.59%         200                62    69.00%         166                52    68.67%
url_encode_decode.hpp                                 4                 0   100.00%          85                20    76.47%          48                16    66.67%
utils.hpp                                            13                 0   100.00%         201                22    89.05%         116                43    62.93%
websocket.hpp                                        15                 4    73.33%         170                43    74.71%          70                18    74.29%
ylt/coro_io/channel.hpp                              15                 0   100.00%         106                 7    93.40%          30                 5    83.33%
ylt/coro_io/client_pool.hpp                          21                 3    85.71%         324               125    61.42%          62                38    38.71%
ylt/coro_io/coro_file.hpp                            22                 1    95.45%         213                38    82.16%          56                19    66.07%
ylt/coro_io/coro_io.hpp                              52                 6    88.46%         329                38    88.45%           8                 2    75.00%
ylt/coro_io/detail/client_queue.hpp                  10                 5    50.00%          47                23    51.06%          10                 4    60.00%
ylt/coro_io/io_context_pool.hpp                      38                 6    84.21%         216                29    86.57%          28                 8    71.43%
ylt/metric/counter.hpp                               18                18     0.00%         192               192     0.00%           2                 2     0.00%
ylt/metric/detail/ckms_quantiles.hpp                  9                 9     0.00%         127               127     0.00%           0                 0         -
ylt/metric/detail/time_window_quantiles.hpp           4                 4     0.00%          25                25     0.00%           0                 0         -
ylt/metric/gauge.hpp                                  5                 5     0.00%          31                31     0.00%           0                 0         -
ylt/metric/histogram.hpp                              5                 5     0.00%          55                55     0.00%           0                 0         -
ylt/metric/metric.hpp                                25                25     0.00%         128               128     0.00%           8                 8     0.00%
ylt/metric/summary.hpp                               10                10     0.00%          98                98     0.00%           0                 0         -
ylt/util/concurrentqueue.h                           79                28    64.56%        1568              1049    33.10%         290               198    31.72%
ylt/util/expected.hpp                                 6                 4    33.33%           6                 4    33.33%           0                 0         -
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                               765               189    75.29%        9432              3352    64.46%        2478               904    63.52%
github-actions[bot] commented 2 weeks ago

Code Coverage Report for detail, goto summary download Artifacts

Filename                                      Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cinatra_log_wrapper.hpp                               4                 1    75.00%           9                 1    88.89%           0                 0         -
cookie.hpp                                           15                 2    86.67%          84                 2    97.62%          28                 3    89.29%
coro_http_client.hpp                                 83                 5    93.98%        1280               198    84.53%         410               114    72.20%
coro_http_connection.hpp                             36                 2    94.44%         667               208    68.82%         202                71    64.85%
coro_http_request.hpp                                31                 7    77.42%         218                41    81.19%          74                10    86.49%
coro_http_response.hpp                               31                 6    80.65%         226                68    69.91%          90                36    60.00%
coro_http_router.hpp                                 15                 0   100.00%         181                32    82.32%          20                 8    60.00%
coro_http_server.hpp                                 50                 5    90.00%         947               125    86.80%         178                48    73.03%
coro_radix_tree.hpp                                  17                 0   100.00%         264                38    85.61%         136                30    77.94%
define.h                                              2                 0   100.00%          28                 2    92.86%          20                 1    95.00%
http_parser.hpp                                      29                 5    82.76%         201                32    84.08%          56                12    78.57%
metric_conf.hpp                                       8                 4    50.00%          96                80    16.67%          32                28    12.50%
mime_types.hpp                                        1                 0   100.00%           7                 2    71.43%           2                 1    50.00%
multipart.hpp                                         4                 0   100.00%          89                15    83.15%          22                 5    77.27%
picohttpparser.h                                     14                 6    57.14%         467               278    40.47%         212               103    51.42%
response_cv.hpp                                       2                 0   100.00%          55                32    41.82%          46                16    65.22%
session.hpp                                          11                 0   100.00%          54                 2    96.30%           4                 1    75.00%
session_manager.hpp                                  10                 1    90.00%          67                 5    92.54%          10                 1    90.00%
sha1.hpp                                             12                 0   100.00%         181                 8    95.58%          12                 2    83.33%
string_resize.hpp                                     2                 0   100.00%          18                 0   100.00%           2                 0   100.00%
time_util.hpp                                        20                 7    65.00%         172                70    59.30%          28                 2    92.86%
uri.hpp                                              17                 5    70.59%         200                62    69.00%         166                52    68.67%
url_encode_decode.hpp                                 4                 0   100.00%          85                20    76.47%          48                16    66.67%
utils.hpp                                            13                 0   100.00%         201                22    89.05%         116                43    62.93%
websocket.hpp                                        15                 4    73.33%         170                43    74.71%          70                18    74.29%
ylt/coro_io/channel.hpp                              15                 0   100.00%         106                 7    93.40%          30                 5    83.33%
ylt/coro_io/client_pool.hpp                          21                 3    85.71%         324               125    61.42%          62                38    38.71%
ylt/coro_io/coro_file.hpp                            22                 1    95.45%         213                38    82.16%          56                19    66.07%
ylt/coro_io/coro_io.hpp                              52                 6    88.46%         329                38    88.45%           8                 2    75.00%
ylt/coro_io/detail/client_queue.hpp                  10                 5    50.00%          47                23    51.06%          10                 4    60.00%
ylt/coro_io/io_context_pool.hpp                      38                 6    84.21%         216                29    86.57%          28                 8    71.43%
ylt/metric/counter.hpp                               18                18     0.00%         192               192     0.00%           2                 2     0.00%
ylt/metric/detail/ckms_quantiles.hpp                  9                 9     0.00%         127               127     0.00%           0                 0         -
ylt/metric/detail/time_window_quantiles.hpp           4                 4     0.00%          25                25     0.00%           0                 0         -
ylt/metric/gauge.hpp                                  5                 5     0.00%          31                31     0.00%           0                 0         -
ylt/metric/histogram.hpp                              5                 5     0.00%          55                55     0.00%           0                 0         -
ylt/metric/metric.hpp                                25                25     0.00%         128               128     0.00%           8                 8     0.00%
ylt/metric/summary.hpp                               10                10     0.00%          98                98     0.00%           0                 0         -
ylt/util/concurrentqueue.h                           79                28    64.56%        1568              1049    33.10%         290               198    31.72%
ylt/util/expected.hpp                                 6                 4    33.33%           6                 4    33.33%           0                 0         -
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                               765               189    75.29%        9432              3355    64.43%        2478               905    63.48%
codecov-commenter commented 2 weeks ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 65.28%. Comparing base (5745cbb) to head (c18c875). Report is 17 commits behind head on master.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #600 +/- ## ========================================== - Coverage 70.45% 65.28% -5.17% ========================================== Files 233 222 -11 Lines 13882 13921 +39 ========================================== - Hits 9780 9089 -691 - Misses 4102 4832 +730 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

github-actions[bot] commented 1 week ago

Code Coverage Report for detail, goto summary download Artifacts

Filename                               Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cinatra_log_wrapper.hpp                        4                 1    75.00%           9                 1    88.89%           0                 0         -
cookie.hpp                                    15                 2    86.67%          84                 2    97.62%          28                 3    89.29%
coro_http_client.hpp                          83                 5    93.98%        1280               198    84.53%         410               114    72.20%
coro_http_connection.hpp                      36                 2    94.44%         667               208    68.82%         202                71    64.85%
coro_http_request.hpp                         31                 7    77.42%         218                41    81.19%          74                10    86.49%
coro_http_response.hpp                        31                 6    80.65%         226                68    69.91%          90                36    60.00%
coro_http_router.hpp                          15                 0   100.00%         181                32    82.32%          20                 8    60.00%
coro_http_server.hpp                          50                 5    90.00%         957               135    85.89%         178                48    73.03%
coro_radix_tree.hpp                           17                 0   100.00%         264                38    85.61%         136                30    77.94%
define.h                                       2                 0   100.00%          28                 2    92.86%          20                 1    95.00%
http_parser.hpp                               29                 5    82.76%         201                32    84.08%          56                12    78.57%
metric_conf.hpp                                8                 4    50.00%          88                72    18.18%          32                28    12.50%
mime_types.hpp                                 1                 0   100.00%           7                 2    71.43%           2                 1    50.00%
multipart.hpp                                  4                 0   100.00%          89                15    83.15%          22                 5    77.27%
picohttpparser.h                              14                 6    57.14%         467               278    40.47%         212               103    51.42%
response_cv.hpp                                2                 0   100.00%          55                32    41.82%          46                16    65.22%
session.hpp                                   11                 0   100.00%          54                 2    96.30%           4                 1    75.00%
session_manager.hpp                           10                 1    90.00%          67                 5    92.54%          10                 1    90.00%
sha1.hpp                                      12                 0   100.00%         181                 8    95.58%          12                 2    83.33%
string_resize.hpp                              2                 0   100.00%          18                 0   100.00%           2                 0   100.00%
time_util.hpp                                 20                 7    65.00%         172                70    59.30%          28                 2    92.86%
uri.hpp                                       17                 5    70.59%         200                62    69.00%         166                52    68.67%
url_encode_decode.hpp                          4                 0   100.00%          85                20    76.47%          48                16    66.67%
utils.hpp                                     13                 0   100.00%         201                22    89.05%         116                43    62.93%
websocket.hpp                                 15                 4    73.33%         170                43    74.71%          70                18    74.29%
ylt/coro_io/channel.hpp                       15                 0   100.00%         106                 7    93.40%          30                 5    83.33%
ylt/coro_io/client_pool.hpp                   21                 3    85.71%         324               125    61.42%          62                38    38.71%
ylt/coro_io/coro_file.hpp                     22                 1    95.45%         213                38    82.16%          56                19    66.07%
ylt/coro_io/coro_io.hpp                       52                 6    88.46%         329                38    88.45%           8                 2    75.00%
ylt/coro_io/detail/client_queue.hpp           10                 5    50.00%          47                23    51.06%          10                 4    60.00%
ylt/coro_io/io_context_pool.hpp               40                 6    85.00%         227                29    87.22%          28                 8    71.43%
ylt/metric/counter.hpp                         2                 1    50.00%          10                 3    70.00%           2                 0   100.00%
ylt/metric/detail/ckms_quantiles.hpp           1                 1     0.00%           5                 5     0.00%           0                 0         -
ylt/metric/gauge.hpp                           1                 0   100.00%           4                 0   100.00%           0                 0         -
ylt/metric/histogram.hpp                       1                 0   100.00%          11                 2    81.82%           4                 2    50.00%
ylt/metric/metric.hpp                         14                 8    42.86%          56                31    44.64%           8                 5    37.50%
ylt/metric/summary.hpp                         1                 1     0.00%           1                 1     0.00%           0                 0         -
ylt/util/concurrentqueue.h                    78                27    65.38%        1359               840    38.19%         290               198    31.72%
ylt/util/expected.hpp                          6                 4    33.33%           6                 4    33.33%           0                 0         -
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                        710               123    82.68%        8667              2534    70.76%        2482               902    63.66%
helintongh commented 1 week ago

已经完成所有review修改

github-actions[bot] commented 1 week ago

Code Coverage Report for detail, goto summary download Artifacts

Filename                               Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cinatra_log_wrapper.hpp                        4                 1    75.00%           9                 1    88.89%           0                 0         -
cookie.hpp                                    15                 2    86.67%          84                 2    97.62%          28                 3    89.29%
coro_http_client.hpp                          83                 5    93.98%        1280               198    84.53%         410               114    72.20%
coro_http_connection.hpp                      36                 2    94.44%         667               208    68.82%         202                71    64.85%
coro_http_request.hpp                         31                 7    77.42%         218                41    81.19%          74                10    86.49%
coro_http_response.hpp                        31                 6    80.65%         226                68    69.91%          90                36    60.00%
coro_http_router.hpp                          15                 0   100.00%         181                32    82.32%          20                 8    60.00%
coro_http_server.hpp                          50                 5    90.00%         957               132    86.21%         178                47    73.60%
coro_radix_tree.hpp                           17                 0   100.00%         264                38    85.61%         136                30    77.94%
define.h                                       2                 0   100.00%          28                 2    92.86%          20                 1    95.00%
http_parser.hpp                               29                 5    82.76%         201                32    84.08%          56                12    78.57%
metric_conf.hpp                                8                 4    50.00%          88                72    18.18%          32                28    12.50%
mime_types.hpp                                 1                 0   100.00%           7                 2    71.43%           2                 1    50.00%
multipart.hpp                                  4                 0   100.00%          89                15    83.15%          22                 5    77.27%
picohttpparser.h                              14                 6    57.14%         467               278    40.47%         212               103    51.42%
response_cv.hpp                                2                 0   100.00%          55                32    41.82%          46                16    65.22%
session.hpp                                   11                 0   100.00%          54                 2    96.30%           4                 1    75.00%
session_manager.hpp                           10                 1    90.00%          67                 5    92.54%          10                 1    90.00%
sha1.hpp                                      12                 0   100.00%         181                 8    95.58%          12                 2    83.33%
string_resize.hpp                              2                 0   100.00%          18                 0   100.00%           2                 0   100.00%
time_util.hpp                                 20                 7    65.00%         172                70    59.30%          28                 2    92.86%
uri.hpp                                       17                 5    70.59%         200                62    69.00%         166                52    68.67%
url_encode_decode.hpp                          4                 0   100.00%          85                20    76.47%          48                16    66.67%
utils.hpp                                     13                 0   100.00%         201                22    89.05%         116                43    62.93%
websocket.hpp                                 15                 4    73.33%         170                43    74.71%          70                18    74.29%
ylt/coro_io/channel.hpp                       15                 0   100.00%         106                 7    93.40%          30                 5    83.33%
ylt/coro_io/client_pool.hpp                   21                 3    85.71%         324               125    61.42%          62                38    38.71%
ylt/coro_io/coro_file.hpp                     22                 1    95.45%         213                38    82.16%          56                19    66.07%
ylt/coro_io/coro_io.hpp                       52                 6    88.46%         329                38    88.45%           8                 2    75.00%
ylt/coro_io/detail/client_queue.hpp           10                 5    50.00%          47                23    51.06%          10                 4    60.00%
ylt/coro_io/io_context_pool.hpp               40                 6    85.00%         227                29    87.22%          28                 8    71.43%
ylt/metric/counter.hpp                         2                 1    50.00%          10                 3    70.00%           2                 0   100.00%
ylt/metric/detail/ckms_quantiles.hpp           1                 1     0.00%           5                 5     0.00%           0                 0         -
ylt/metric/gauge.hpp                           1                 0   100.00%           4                 0   100.00%           0                 0         -
ylt/metric/histogram.hpp                       1                 0   100.00%          11                 2    81.82%           4                 2    50.00%
ylt/metric/metric.hpp                         14                 8    42.86%          56                31    44.64%           8                 5    37.50%
ylt/metric/summary.hpp                         1                 1     0.00%           1                 1     0.00%           0                 0         -
ylt/util/concurrentqueue.h                    78                27    65.38%        1359               840    38.19%         290               198    31.72%
ylt/util/expected.hpp                          6                 4    33.33%           6                 4    33.33%           0                 0         -
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                        710               123    82.68%        8667              2531    70.80%        2482               901    63.70%
github-actions[bot] commented 1 week ago

Code Coverage Report for detail, goto summary download Artifacts

Filename                               Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cinatra_log_wrapper.hpp                        4                 1    75.00%           9                 1    88.89%           0                 0         -
cookie.hpp                                    15                 2    86.67%          84                 2    97.62%          28                 3    89.29%
coro_http_client.hpp                          83                 5    93.98%        1280               203    84.14%         410               114    72.20%
coro_http_connection.hpp                      36                 2    94.44%         667               208    68.82%         202                71    64.85%
coro_http_request.hpp                         31                 7    77.42%         218                41    81.19%          74                10    86.49%
coro_http_response.hpp                        31                 6    80.65%         226                68    69.91%          90                36    60.00%
coro_http_router.hpp                          15                 0   100.00%         181                32    82.32%          20                 8    60.00%
coro_http_server.hpp                          50                 5    90.00%         962               137    85.76%         178                47    73.60%
coro_radix_tree.hpp                           17                 0   100.00%         264                38    85.61%         136                30    77.94%
define.h                                       2                 0   100.00%          28                 2    92.86%          20                 1    95.00%
http_parser.hpp                               29                 5    82.76%         201                32    84.08%          56                12    78.57%
metric_conf.hpp                                8                 4    50.00%          88                72    18.18%          32                28    12.50%
mime_types.hpp                                 1                 0   100.00%           7                 2    71.43%           2                 1    50.00%
multipart.hpp                                  4                 0   100.00%          89                15    83.15%          22                 5    77.27%
picohttpparser.h                              14                 6    57.14%         467               278    40.47%         212               103    51.42%
response_cv.hpp                                2                 0   100.00%          55                32    41.82%          46                16    65.22%
session.hpp                                   11                 0   100.00%          54                 2    96.30%           4                 1    75.00%
session_manager.hpp                           10                 1    90.00%          67                 5    92.54%          10                 1    90.00%
sha1.hpp                                      12                 0   100.00%         181                 8    95.58%          12                 2    83.33%
string_resize.hpp                              2                 0   100.00%          18                 0   100.00%           2                 0   100.00%
time_util.hpp                                 20                 7    65.00%         172                70    59.30%          28                 2    92.86%
uri.hpp                                       17                 5    70.59%         200                62    69.00%         166                52    68.67%
url_encode_decode.hpp                          4                 0   100.00%          85                20    76.47%          48                16    66.67%
utils.hpp                                     13                 0   100.00%         201                22    89.05%         116                43    62.93%
websocket.hpp                                 15                 4    73.33%         170                43    74.71%          70                18    74.29%
ylt/coro_io/channel.hpp                       15                 0   100.00%         106                 7    93.40%          30                 5    83.33%
ylt/coro_io/client_pool.hpp                   21                 3    85.71%         324               125    61.42%          62                38    38.71%
ylt/coro_io/coro_file.hpp                     22                 1    95.45%         213                38    82.16%          56                19    66.07%
ylt/coro_io/coro_io.hpp                       52                 6    88.46%         329                38    88.45%           8                 2    75.00%
ylt/coro_io/detail/client_queue.hpp           10                 5    50.00%          47                23    51.06%          10                 4    60.00%
ylt/coro_io/io_context_pool.hpp               40                 6    85.00%         227                29    87.22%          28                 8    71.43%
ylt/metric/counter.hpp                         9                 1    88.89%          83                 3    96.39%          24                 1    95.83%
ylt/metric/detail/ckms_quantiles.hpp           1                 1     0.00%           5                 5     0.00%           0                 0         -
ylt/metric/gauge.hpp                           1                 0   100.00%           4                 0   100.00%           0                 0         -
ylt/metric/histogram.hpp                       1                 0   100.00%          11                 2    81.82%           4                 2    50.00%
ylt/metric/metric.hpp                         23                12    47.83%         114                57    50.00%          24                 7    70.83%
ylt/metric/summary.hpp                         1                 1     0.00%           1                 1     0.00%           0                 0         -
ylt/util/concurrentqueue.h                    78                27    65.38%        1359               840    38.19%         290               198    31.72%
ylt/util/expected.hpp                          6                 4    33.33%           6                 4    33.33%           0                 0         -
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                        726               127    82.51%        8803              2567    70.84%        2520               904    64.13%
qicosmos commented 1 week ago

resp_data结构体中增加的std::string br_data;字段还没删掉。

下面的代码也还有问题:

#ifdef CINATRA_ENABLE_GZIP
      if (encoding_type_ == content_encoding::gzip) {
        std::string unziped_str;
        bool r = gzip_codec::uncompress(reply, unziped_str);
        if (r)
          data.resp_body = unziped_str;
        else
          data.resp_body = reply;
      }
      else if (encoding_type_ == content_encoding::deflate) {
        std::string inflate_str;
        bool r = gzip_codec::inflate(reply, inflate_str);
        if (r)
          data.resp_body = inflate_str;
        else
          data.resp_body = reply;
      }
#endif

其中std::string unziped_str;std::string inflate_str;都是临时变量返回出去了,需要和br一样定义为成员变量才行。resp_body是string_view,它不管赋值字符串的生命周期的,需要client去管。

helintongh commented 1 week ago

已经修复,最新代码使用单一变量uncompressed_str_作为解压缩后的字符。

github-actions[bot] commented 1 week ago

Code Coverage Report for detail, goto summary download Artifacts

Filename                               Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cinatra_log_wrapper.hpp                        4                 1    75.00%           9                 1    88.89%           0                 0         -
cookie.hpp                                    15                 2    86.67%          84                 2    97.62%          28                 3    89.29%
coro_http_client.hpp                          83                 5    93.98%        1280               203    84.14%         410               114    72.20%
coro_http_connection.hpp                      36                 2    94.44%         667               208    68.82%         202                71    64.85%
coro_http_request.hpp                         31                 7    77.42%         218                41    81.19%          74                10    86.49%
coro_http_response.hpp                        31                 6    80.65%         226                68    69.91%          90                36    60.00%
coro_http_router.hpp                          15                 0   100.00%         181                32    82.32%          20                 8    60.00%
coro_http_server.hpp                          50                 5    90.00%         962               137    85.76%         178                47    73.60%
coro_radix_tree.hpp                           17                 0   100.00%         264                38    85.61%         136                30    77.94%
define.h                                       2                 0   100.00%          28                 2    92.86%          20                 1    95.00%
http_parser.hpp                               29                 5    82.76%         201                32    84.08%          56                12    78.57%
metric_conf.hpp                                8                 4    50.00%          88                67    23.86%          32                26    18.75%
mime_types.hpp                                 1                 0   100.00%           7                 2    71.43%           2                 1    50.00%
multipart.hpp                                  4                 0   100.00%          89                15    83.15%          22                 5    77.27%
picohttpparser.h                              14                 6    57.14%         467               278    40.47%         212               103    51.42%
response_cv.hpp                                2                 0   100.00%          55                32    41.82%          46                16    65.22%
session.hpp                                   11                 0   100.00%          54                 2    96.30%           4                 1    75.00%
session_manager.hpp                           10                 1    90.00%          67                 5    92.54%          10                 1    90.00%
sha1.hpp                                      12                 0   100.00%         181                 8    95.58%          12                 2    83.33%
string_resize.hpp                              2                 0   100.00%          18                 0   100.00%           2                 0   100.00%
time_util.hpp                                 20                 7    65.00%         172                70    59.30%          28                 2    92.86%
uri.hpp                                       17                 5    70.59%         200                62    69.00%         166                52    68.67%
url_encode_decode.hpp                          4                 0   100.00%          85                20    76.47%          48                16    66.67%
utils.hpp                                     13                 0   100.00%         201                22    89.05%         116                43    62.93%
websocket.hpp                                 15                 4    73.33%         170                43    74.71%          70                18    74.29%
ylt/coro_io/channel.hpp                       15                 0   100.00%         106                 7    93.40%          30                 5    83.33%
ylt/coro_io/client_pool.hpp                   21                 3    85.71%         324               125    61.42%          62                38    38.71%
ylt/coro_io/coro_file.hpp                     22                 1    95.45%         213                38    82.16%          56                19    66.07%
ylt/coro_io/coro_io.hpp                       52                 6    88.46%         329                38    88.45%           8                 2    75.00%
ylt/coro_io/detail/client_queue.hpp           10                 5    50.00%          47                23    51.06%          10                 4    60.00%
ylt/coro_io/io_context_pool.hpp               40                 6    85.00%         227                29    87.22%          28                 8    71.43%
ylt/metric/counter.hpp                         9                 1    88.89%          83                 3    96.39%          24                 1    95.83%
ylt/metric/detail/ckms_quantiles.hpp           1                 1     0.00%           5                 5     0.00%           0                 0         -
ylt/metric/gauge.hpp                           1                 0   100.00%           4                 0   100.00%           0                 0         -
ylt/metric/histogram.hpp                       1                 0   100.00%          11                 2    81.82%           4                 2    50.00%
ylt/metric/metric.hpp                         23                12    47.83%         114                57    50.00%          24                 7    70.83%
ylt/metric/summary.hpp                         1                 1     0.00%           1                 1     0.00%           0                 0         -
ylt/util/concurrentqueue.h                    78                27    65.38%        1359               840    38.19%         290               198    31.72%
ylt/util/expected.hpp                          6                 4    33.33%           6                 4    33.33%           0                 0         -
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                        726               127    82.51%        8803              2562    70.90%        2520               902    64.21%
github-actions[bot] commented 1 week ago

Code Coverage Report for detail, goto summary download Artifacts

Filename                               Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cinatra_log_wrapper.hpp                        4                 1    75.00%           9                 1    88.89%           0                 0         -
cookie.hpp                                    15                 2    86.67%          84                 2    97.62%          28                 3    89.29%
coro_http_client.hpp                          83                 5    93.98%        1280               203    84.14%         410               114    72.20%
coro_http_connection.hpp                      36                 2    94.44%         667               208    68.82%         202                71    64.85%
coro_http_request.hpp                         31                 7    77.42%         218                41    81.19%          74                10    86.49%
coro_http_response.hpp                        31                 6    80.65%         226                68    69.91%          90                36    60.00%
coro_http_router.hpp                          15                 0   100.00%         181                32    82.32%          20                 8    60.00%
coro_http_server.hpp                          50                 5    90.00%         962               137    85.76%         178                47    73.60%
coro_radix_tree.hpp                           17                 0   100.00%         264                38    85.61%         136                30    77.94%
define.h                                       2                 0   100.00%          28                 2    92.86%          20                 1    95.00%
http_parser.hpp                               29                 5    82.76%         201                32    84.08%          56                12    78.57%
metric_conf.hpp                                8                 4    50.00%          88                72    18.18%          32                28    12.50%
mime_types.hpp                                 1                 0   100.00%           7                 2    71.43%           2                 1    50.00%
multipart.hpp                                  4                 0   100.00%          89                15    83.15%          22                 5    77.27%
picohttpparser.h                              14                 6    57.14%         467               278    40.47%         212               103    51.42%
response_cv.hpp                                2                 0   100.00%          55                32    41.82%          46                16    65.22%
session.hpp                                   11                 0   100.00%          54                 2    96.30%           4                 1    75.00%
session_manager.hpp                           10                 1    90.00%          67                 5    92.54%          10                 1    90.00%
sha1.hpp                                      12                 0   100.00%         181                 8    95.58%          12                 2    83.33%
string_resize.hpp                              2                 0   100.00%          18                 0   100.00%           2                 0   100.00%
time_util.hpp                                 20                 7    65.00%         172                72    58.14%          28                 3    89.29%
uri.hpp                                       17                 5    70.59%         200                62    69.00%         166                52    68.67%
url_encode_decode.hpp                          4                 0   100.00%          85                20    76.47%          48                16    66.67%
utils.hpp                                     13                 0   100.00%         201                22    89.05%         116                43    62.93%
websocket.hpp                                 15                 4    73.33%         170                43    74.71%          70                18    74.29%
ylt/coro_io/channel.hpp                       15                 0   100.00%         106                 7    93.40%          30                 5    83.33%
ylt/coro_io/client_pool.hpp                   21                 3    85.71%         324               125    61.42%          62                38    38.71%
ylt/coro_io/coro_file.hpp                     22                 1    95.45%         213                38    82.16%          56                19    66.07%
ylt/coro_io/coro_io.hpp                       52                 6    88.46%         329                38    88.45%           8                 2    75.00%
ylt/coro_io/detail/client_queue.hpp           10                 5    50.00%          47                23    51.06%          10                 4    60.00%
ylt/coro_io/io_context_pool.hpp               40                 6    85.00%         227                29    87.22%          28                 8    71.43%
ylt/metric/counter.hpp                         9                 1    88.89%          83                 3    96.39%          24                 1    95.83%
ylt/metric/detail/ckms_quantiles.hpp           1                 1     0.00%           5                 5     0.00%           0                 0         -
ylt/metric/gauge.hpp                           1                 0   100.00%           4                 0   100.00%           0                 0         -
ylt/metric/histogram.hpp                       1                 0   100.00%          11                 2    81.82%           4                 2    50.00%
ylt/metric/metric.hpp                         23                12    47.83%         114                57    50.00%          24                 7    70.83%
ylt/metric/summary.hpp                         1                 1     0.00%           1                 1     0.00%           0                 0         -
ylt/util/concurrentqueue.h                    78                27    65.38%        1359               840    38.19%         290               198    31.72%
ylt/util/expected.hpp                          6                 4    33.33%           6                 4    33.33%           0                 0         -
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                        726               127    82.51%        8803              2569    70.82%        2520               905    64.09%