├── .github └── workflows │ └── linux.yml ├── .gitignore ├── .gitmodules ├── Build.PL ├── Changes ├── LICENSE ├── META.json ├── README.md ├── TODO ├── author ├── benchmark │ ├── byown.pl │ ├── note.mkdn │ ├── profile.pl │ └── simple.pl └── mk-chunked-response.pl ├── cpanfile ├── example └── get.pl ├── lib ├── Furl.pm └── Furl │ ├── ConnectionCache.pm │ ├── HTTP.pm │ ├── Headers.pm │ ├── Request.pm │ ├── Response.pm │ └── ZlibStream.pm ├── t ├── 00_compile.t ├── 01_version.t ├── 100_low │ ├── 01_simple.t │ ├── 03_redirect.t │ ├── 04_chunked.t │ ├── 05_slowloris.t │ ├── 06_errors.t │ ├── 07_timeout.t │ ├── 08_proxy.t │ ├── 09_body.t │ ├── 11_write_file.t │ ├── 12_write_code.t │ ├── 13_deflate.t │ ├── 15_multiline_header.t │ ├── 16_read_callback.t │ ├── 17_keep_alive.t │ ├── 18_no_proxy.t │ ├── 19_special_headers.t │ ├── 20_header_format_none.t │ ├── 21_keep_alive_timedout.t │ ├── 22_keep_alive.t │ ├── 22_keep_alive_http10.t │ ├── 23_redirect_relative.t │ ├── 24_no_content.t │ ├── 25_signal.t │ ├── 26_headers_only.t │ ├── 27_close_on_eof.t │ ├── 28_idn.t │ ├── 29_completion_slash.t │ ├── 30_user_agent.t │ ├── 31_chunked_unexpected_eof.t │ ├── 32_proxy_auth.t │ ├── 33_basic_auth.t │ ├── 34_keep_request.t │ ├── 35_get_address.t │ ├── 36_inactivity_timeout.t │ ├── 37_bad_content_length.t │ ├── 38_continue.t │ ├── 39_httpoxy.t │ └── 40_timeout_body_no_content_length.t ├── 300_high │ ├── 01_simple.t │ ├── 02_agent.t │ ├── 04_http_request.t │ ├── 05_suppress_dup_host_header.t │ ├── 06_keep_request.t │ ├── 07_cookie.t │ └── 99_error.t ├── 400_components │ ├── 001_response-coding │ │ ├── 01-file.t │ │ ├── t-euc-jp.html │ │ ├── t-iso-2022-jp.html │ │ ├── t-null.html │ │ ├── t-shiftjis.html │ │ └── t-utf-8.html │ ├── 01_headers.t │ ├── 02_response.t │ └── 03_request.t ├── 800_regression │ └── 01_capture_request.t ├── 999_intrenal │ └── parse_url.t ├── HTTPServer.pm ├── Slowloris.pm └── Util.pm └── xt ├── 02_perlcritic.t ├── 04_leaktrace.t ├── 05_valgrind.t ├── 200_online ├── 01_idn.t ├── 02_google.t ├── 03_yahoo_com.t ├── 04_ssl.t ├── 05_connect_error.t ├── 06_net-dns-lite.t └── 07_ssl_shutdown.t └── perlcriticrc /.github/workflows/linux.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/.github/workflows/linux.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/.gitignore -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/.gitmodules -------------------------------------------------------------------------------- /Build.PL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/Build.PL -------------------------------------------------------------------------------- /Changes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/Changes -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/LICENSE -------------------------------------------------------------------------------- /META.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/META.json -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/README.md -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/TODO -------------------------------------------------------------------------------- /author/benchmark/byown.pl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/author/benchmark/byown.pl -------------------------------------------------------------------------------- /author/benchmark/note.mkdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/author/benchmark/note.mkdn -------------------------------------------------------------------------------- /author/benchmark/profile.pl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/author/benchmark/profile.pl -------------------------------------------------------------------------------- /author/benchmark/simple.pl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/author/benchmark/simple.pl -------------------------------------------------------------------------------- /author/mk-chunked-response.pl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/author/mk-chunked-response.pl -------------------------------------------------------------------------------- /cpanfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/cpanfile -------------------------------------------------------------------------------- /example/get.pl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/example/get.pl -------------------------------------------------------------------------------- /lib/Furl.pm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/lib/Furl.pm -------------------------------------------------------------------------------- /lib/Furl/ConnectionCache.pm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/lib/Furl/ConnectionCache.pm -------------------------------------------------------------------------------- /lib/Furl/HTTP.pm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/lib/Furl/HTTP.pm -------------------------------------------------------------------------------- /lib/Furl/Headers.pm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/lib/Furl/Headers.pm -------------------------------------------------------------------------------- /lib/Furl/Request.pm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/lib/Furl/Request.pm -------------------------------------------------------------------------------- /lib/Furl/Response.pm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/lib/Furl/Response.pm -------------------------------------------------------------------------------- /lib/Furl/ZlibStream.pm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/lib/Furl/ZlibStream.pm -------------------------------------------------------------------------------- /t/00_compile.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/00_compile.t -------------------------------------------------------------------------------- /t/01_version.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/01_version.t -------------------------------------------------------------------------------- /t/100_low/01_simple.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/01_simple.t -------------------------------------------------------------------------------- /t/100_low/03_redirect.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/03_redirect.t -------------------------------------------------------------------------------- /t/100_low/04_chunked.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/04_chunked.t -------------------------------------------------------------------------------- /t/100_low/05_slowloris.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/05_slowloris.t -------------------------------------------------------------------------------- /t/100_low/06_errors.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/06_errors.t -------------------------------------------------------------------------------- /t/100_low/07_timeout.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/07_timeout.t -------------------------------------------------------------------------------- /t/100_low/08_proxy.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/08_proxy.t -------------------------------------------------------------------------------- /t/100_low/09_body.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/09_body.t -------------------------------------------------------------------------------- /t/100_low/11_write_file.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/11_write_file.t -------------------------------------------------------------------------------- /t/100_low/12_write_code.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/12_write_code.t -------------------------------------------------------------------------------- /t/100_low/13_deflate.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/13_deflate.t -------------------------------------------------------------------------------- /t/100_low/15_multiline_header.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/15_multiline_header.t -------------------------------------------------------------------------------- /t/100_low/16_read_callback.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/16_read_callback.t -------------------------------------------------------------------------------- /t/100_low/17_keep_alive.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/17_keep_alive.t -------------------------------------------------------------------------------- /t/100_low/18_no_proxy.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/18_no_proxy.t -------------------------------------------------------------------------------- /t/100_low/19_special_headers.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/19_special_headers.t -------------------------------------------------------------------------------- /t/100_low/20_header_format_none.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/20_header_format_none.t -------------------------------------------------------------------------------- /t/100_low/21_keep_alive_timedout.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/21_keep_alive_timedout.t -------------------------------------------------------------------------------- /t/100_low/22_keep_alive.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/22_keep_alive.t -------------------------------------------------------------------------------- /t/100_low/22_keep_alive_http10.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/22_keep_alive_http10.t -------------------------------------------------------------------------------- /t/100_low/23_redirect_relative.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/23_redirect_relative.t -------------------------------------------------------------------------------- /t/100_low/24_no_content.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/24_no_content.t -------------------------------------------------------------------------------- /t/100_low/25_signal.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/25_signal.t -------------------------------------------------------------------------------- /t/100_low/26_headers_only.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/26_headers_only.t -------------------------------------------------------------------------------- /t/100_low/27_close_on_eof.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/27_close_on_eof.t -------------------------------------------------------------------------------- /t/100_low/28_idn.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/28_idn.t -------------------------------------------------------------------------------- /t/100_low/29_completion_slash.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/29_completion_slash.t -------------------------------------------------------------------------------- /t/100_low/30_user_agent.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/30_user_agent.t -------------------------------------------------------------------------------- /t/100_low/31_chunked_unexpected_eof.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/31_chunked_unexpected_eof.t -------------------------------------------------------------------------------- /t/100_low/32_proxy_auth.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/32_proxy_auth.t -------------------------------------------------------------------------------- /t/100_low/33_basic_auth.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/33_basic_auth.t -------------------------------------------------------------------------------- /t/100_low/34_keep_request.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/34_keep_request.t -------------------------------------------------------------------------------- /t/100_low/35_get_address.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/35_get_address.t -------------------------------------------------------------------------------- /t/100_low/36_inactivity_timeout.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/36_inactivity_timeout.t -------------------------------------------------------------------------------- /t/100_low/37_bad_content_length.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/37_bad_content_length.t -------------------------------------------------------------------------------- /t/100_low/38_continue.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/38_continue.t -------------------------------------------------------------------------------- /t/100_low/39_httpoxy.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/39_httpoxy.t -------------------------------------------------------------------------------- /t/100_low/40_timeout_body_no_content_length.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/100_low/40_timeout_body_no_content_length.t -------------------------------------------------------------------------------- /t/300_high/01_simple.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/300_high/01_simple.t -------------------------------------------------------------------------------- /t/300_high/02_agent.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/300_high/02_agent.t -------------------------------------------------------------------------------- /t/300_high/04_http_request.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/300_high/04_http_request.t -------------------------------------------------------------------------------- /t/300_high/05_suppress_dup_host_header.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/300_high/05_suppress_dup_host_header.t -------------------------------------------------------------------------------- /t/300_high/06_keep_request.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/300_high/06_keep_request.t -------------------------------------------------------------------------------- /t/300_high/07_cookie.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/300_high/07_cookie.t -------------------------------------------------------------------------------- /t/300_high/99_error.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/300_high/99_error.t -------------------------------------------------------------------------------- /t/400_components/001_response-coding/01-file.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/400_components/001_response-coding/01-file.t -------------------------------------------------------------------------------- /t/400_components/001_response-coding/t-euc-jp.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/400_components/001_response-coding/t-euc-jp.html -------------------------------------------------------------------------------- /t/400_components/001_response-coding/t-iso-2022-jp.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/400_components/001_response-coding/t-iso-2022-jp.html -------------------------------------------------------------------------------- /t/400_components/001_response-coding/t-null.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/400_components/001_response-coding/t-null.html -------------------------------------------------------------------------------- /t/400_components/001_response-coding/t-shiftjis.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/400_components/001_response-coding/t-shiftjis.html -------------------------------------------------------------------------------- /t/400_components/001_response-coding/t-utf-8.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/400_components/001_response-coding/t-utf-8.html -------------------------------------------------------------------------------- /t/400_components/01_headers.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/400_components/01_headers.t -------------------------------------------------------------------------------- /t/400_components/02_response.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/400_components/02_response.t -------------------------------------------------------------------------------- /t/400_components/03_request.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/400_components/03_request.t -------------------------------------------------------------------------------- /t/800_regression/01_capture_request.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/800_regression/01_capture_request.t -------------------------------------------------------------------------------- /t/999_intrenal/parse_url.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/999_intrenal/parse_url.t -------------------------------------------------------------------------------- /t/HTTPServer.pm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/HTTPServer.pm -------------------------------------------------------------------------------- /t/Slowloris.pm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/Slowloris.pm -------------------------------------------------------------------------------- /t/Util.pm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/t/Util.pm -------------------------------------------------------------------------------- /xt/02_perlcritic.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/xt/02_perlcritic.t -------------------------------------------------------------------------------- /xt/04_leaktrace.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/xt/04_leaktrace.t -------------------------------------------------------------------------------- /xt/05_valgrind.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/xt/05_valgrind.t -------------------------------------------------------------------------------- /xt/200_online/01_idn.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/xt/200_online/01_idn.t -------------------------------------------------------------------------------- /xt/200_online/02_google.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/xt/200_online/02_google.t -------------------------------------------------------------------------------- /xt/200_online/03_yahoo_com.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/xt/200_online/03_yahoo_com.t -------------------------------------------------------------------------------- /xt/200_online/04_ssl.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/xt/200_online/04_ssl.t -------------------------------------------------------------------------------- /xt/200_online/05_connect_error.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/xt/200_online/05_connect_error.t -------------------------------------------------------------------------------- /xt/200_online/06_net-dns-lite.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/xt/200_online/06_net-dns-lite.t -------------------------------------------------------------------------------- /xt/200_online/07_ssl_shutdown.t: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/xt/200_online/07_ssl_shutdown.t -------------------------------------------------------------------------------- /xt/perlcriticrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokuhirom/Furl/HEAD/xt/perlcriticrc --------------------------------------------------------------------------------