tdiary 5.5.0 → 5.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ChangeLog +2 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +37 -37
- data/doc/UPGRADE.md +1 -1
- data/lib/tdiary/admin.rb +11 -13
- data/lib/tdiary/application.rb +2 -7
- data/lib/tdiary/author_only_base.rb +78 -9
- data/lib/tdiary/base.rb +2 -2
- data/lib/tdiary/cgi_adapter.rb +7 -5
- data/lib/tdiary/cgi_compat.rb +27 -95
- data/lib/tdiary/configuration.rb +4 -0
- data/lib/tdiary/core_ext.rb +146 -1
- data/lib/tdiary/dispatcher/index_main.rb +5 -23
- data/lib/tdiary/dispatcher/update_main.rb +2 -17
- data/lib/tdiary/dispatcher.rb +29 -15
- data/lib/tdiary/filter/default.rb +2 -2
- data/lib/tdiary/filter/spam.rb +2 -2
- data/lib/tdiary/filter.rb +1 -1
- data/lib/tdiary/plugin/00default.rb +18 -3
- data/lib/tdiary/plugin/en/00default.rb +15 -0
- data/lib/tdiary/plugin/ja/00default.rb +15 -0
- data/lib/tdiary/plugin.rb +1 -1
- data/lib/tdiary/rack/error_handler.rb +36 -0
- data/lib/tdiary/rack.rb +1 -0
- data/lib/tdiary/request.rb +12 -2
- data/lib/tdiary/server.rb +25 -3
- data/lib/tdiary/version.rb +1 -1
- data/lib/tdiary/view.rb +33 -28
- data/lib/tdiary/view_helper.rb +10 -2
- data/lib/tdiary.rb +6 -1
- data/misc/plugin/image.rb +1 -1
- data/misc/plugin/makerss.rb +3 -3
- data/tdiary.conf.sample +8 -0
- data/tdiary.conf.sample-en +8 -0
- data/vendor/bundle/ruby/3.4.0/cache/net-imap-0.6.6.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/net-protocol-0.3.0.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/rack-3.2.7.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/cgi-0.5.2/gem_make.out +5 -5
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/date-3.5.1/gem_make.out +5 -5
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/Gemfile +3 -4
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/README.md +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.6.6/Rakefile +24 -0
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/command_data.rb +62 -92
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/config/attr_accessors.rb +8 -9
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/config/attr_inheritance.rb +64 -1
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/config/attr_version_defaults.rb +1 -4
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/config.rb +209 -35
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/connection_state.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/data_encoding.rb +127 -27
- data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.6.6/lib/net/imap/errors.rb +372 -0
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/esearch_result.rb +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/response_data.rb +90 -11
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/response_parser/parser_utils.rb +14 -23
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/response_parser.rb +41 -26
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/response_reader.rb +16 -21
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/scram_authenticator.rb +3 -3
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/search_result.rb +11 -1
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sequence_set.rb +620 -312
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/uidplus_data.rb +2 -63
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap.rb +279 -162
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/net-imap.gemspec +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/rakelib/rdoc.rake +1 -18
- data/vendor/bundle/ruby/3.4.0/gems/{net-protocol-0.2.2/LICENSE.txt → net-protocol-0.3.0/BSDL} +3 -3
- data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.3.0/COPYING +56 -0
- data/vendor/bundle/ruby/3.4.0/gems/{net-protocol-0.2.2 → net-protocol-0.3.0}/lib/net/protocol.rb +58 -4
- data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/CHANGELOG.md +54 -1
- data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/utils.rb +3 -3
- data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/version.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/specifications/{net-imap-0.5.15.gemspec → net-imap-0.6.6.gemspec} +4 -4
- data/vendor/bundle/ruby/3.4.0/specifications/{net-protocol-0.2.2.gemspec → net-protocol-0.3.0.gemspec} +5 -5
- data/vendor/bundle/ruby/3.4.0/specifications/{rack-3.2.6.gemspec → rack-3.2.7.gemspec} +3 -3
- data/views/tdiary.rconf +2 -0
- metadata +127 -131
- data/vendor/bundle/ruby/3.4.0/cache/net-imap-0.5.15.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/net-protocol-0.2.2.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/rack-3.2.6.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/Rakefile +0 -13
- data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/data_lite.rb +0 -226
- data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/errors.rb +0 -118
- data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/Gemfile +0 -7
- data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/Rakefile +0 -10
- data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/bin/console +0 -14
- data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/bin/setup +0 -8
- data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/net-protocol.gemspec +0 -33
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/BSDL +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/COPYING +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/LICENSE.txt +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/docs/styles.css +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/authenticators.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/config/attr_type_coercion.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/deprecated_client_options.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/fetch_data.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/flags.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/anonymous_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/authentication_exchange.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/authenticators.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/client_adapter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/cram_md5_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/digest_md5_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/external_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/gs2_header.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/login_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/oauthbearer_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/plain_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/protocol_adapters.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/scram_algorithm.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/stringprep.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/xoauth2_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl_adapter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/stringprep/nameprep.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/stringprep/saslprep.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/stringprep/saslprep_tables.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/stringprep/tables.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/stringprep/trace.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/stringprep.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/vanished_data.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/rakelib/benchmarks.rake +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/rakelib/rfcs.rake +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/rakelib/saslprep.rake +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/rakelib/string_prep_tables_generator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/sample/net-imap.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-protocol-0.2.2 → net-protocol-0.3.0}/README.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/CONTRIBUTING.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/MIT-LICENSE +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/README.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/SPEC.rdoc +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/auth/abstract/handler.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/auth/abstract/request.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/auth/basic.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/bad_request.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/body_proxy.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/builder.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/cascade.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/common_logger.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/conditional_get.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/config.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/constants.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/content_length.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/content_type.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/deflater.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/directory.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/etag.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/events.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/files.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/head.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/headers.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/lint.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/lock.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/media_type.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/method_override.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/mime.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/mock.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/mock_request.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/mock_response.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/multipart/generator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/multipart/parser.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/multipart/uploaded_file.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/multipart.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/null_logger.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/query_parser.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/recursive.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/reloader.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/request.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/response.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/rewindable_input.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/runtime.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/sendfile.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/show_exceptions.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/show_status.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/static.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/tempfile_reaper.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/urlmap.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack.rb +0 -0
|
@@ -38,6 +38,11 @@ module Net
|
|
|
38
38
|
@lex_state = EXPR_BEG
|
|
39
39
|
@token = nil
|
|
40
40
|
return response
|
|
41
|
+
rescue ResponseParseError => error
|
|
42
|
+
if config.debug?
|
|
43
|
+
warn error.detailed_message(parser_state: true, parser_backtrace: true)
|
|
44
|
+
end
|
|
45
|
+
raise
|
|
41
46
|
end
|
|
42
47
|
|
|
43
48
|
private
|
|
@@ -686,6 +691,8 @@ module Net
|
|
|
686
691
|
CRLF!
|
|
687
692
|
EOF!
|
|
688
693
|
resp
|
|
694
|
+
rescue SystemStackError
|
|
695
|
+
parse_error("response recursion too deep")
|
|
689
696
|
end
|
|
690
697
|
|
|
691
698
|
# RFC3501 & RFC9051:
|
|
@@ -1883,12 +1890,17 @@ module Net
|
|
|
1883
1890
|
# We leniently re-interpret this as
|
|
1884
1891
|
# resp-text = ["[" resp-text-code "]" [SP [text]] / [text]
|
|
1885
1892
|
def resp_text
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1893
|
+
begin
|
|
1894
|
+
state = current_state
|
|
1895
|
+
if lbra?
|
|
1896
|
+
code = resp_text_code; rbra
|
|
1897
|
+
return ResponseText.new(code, SP? && text? || "")
|
|
1898
|
+
end
|
|
1899
|
+
rescue ResponseParseError => error
|
|
1900
|
+
raise if /\buid-set\b/i.match? error.message
|
|
1901
|
+
restore_state state
|
|
1891
1902
|
end
|
|
1903
|
+
ResponseText.new(nil, text? || "")
|
|
1892
1904
|
end
|
|
1893
1905
|
|
|
1894
1906
|
# RFC3501 (See https://www.rfc-editor.org/errata/rfc3501):
|
|
@@ -1951,6 +1963,7 @@ module Net
|
|
|
1951
1963
|
# resp-text-code =/ "UIDREQUIRED"
|
|
1952
1964
|
def resp_text_code
|
|
1953
1965
|
name = resp_text_code__name
|
|
1966
|
+
state = current_state
|
|
1954
1967
|
data =
|
|
1955
1968
|
case name
|
|
1956
1969
|
when "CAPABILITY" then resp_code__capability
|
|
@@ -1973,8 +1986,18 @@ module Net
|
|
|
1973
1986
|
when "MAILBOXID" then SP!; parens__objectid # RFC8474: OBJECTID
|
|
1974
1987
|
when "UIDREQUIRED" then # RFC9586: UIDONLY
|
|
1975
1988
|
else
|
|
1989
|
+
state = nil # don't backtrack
|
|
1976
1990
|
SP? and text_chars_except_rbra
|
|
1977
1991
|
end
|
|
1992
|
+
peek_rbra? or
|
|
1993
|
+
parse_error("expected resp-text-code %p to be complete", name)
|
|
1994
|
+
ResponseCode.new(name, data)
|
|
1995
|
+
rescue Net::IMAP::ResponseParseError => parse_error
|
|
1996
|
+
raise unless state
|
|
1997
|
+
raise if parse_error.message.include?("uid-set")
|
|
1998
|
+
restore_state state
|
|
1999
|
+
unparsed_data = SP? && text_chars_except_rbra
|
|
2000
|
+
data = InvalidParseData[parse_error:, unparsed_data:, parsed_data: data]
|
|
1978
2001
|
ResponseCode.new(name, data)
|
|
1979
2002
|
end
|
|
1980
2003
|
|
|
@@ -2017,24 +2040,24 @@ module Net
|
|
|
2017
2040
|
CopyUID(validity, src_uids, dst_uids)
|
|
2018
2041
|
end
|
|
2019
2042
|
|
|
2020
|
-
|
|
2021
|
-
def CopyUID(...) DeprecatedUIDPlus(...) || CopyUIDData.new(...) end
|
|
2043
|
+
PARSER_PATH = File.expand_path(__FILE__).delete_suffix(".rb")
|
|
2022
2044
|
|
|
2023
2045
|
# TODO: remove this code in the v0.6.0 release
|
|
2024
2046
|
def DeprecatedUIDPlus(validity, src_uids = nil, dst_uids)
|
|
2025
2047
|
return unless config.parser_use_deprecated_uidplus_data
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
parse_error("uid-set is too large: %d > %d", count, max)
|
|
2035
|
-
end
|
|
2048
|
+
uplevel = caller_locations
|
|
2049
|
+
.find_index { !_1.path.start_with?(PARSER_PATH) }
|
|
2050
|
+
&.succ
|
|
2051
|
+
warn("#{Config}#parser_use_deprecated_uidplus_data is ignored " \
|
|
2052
|
+
"since v0.6.0. Disable this warning by setting " \
|
|
2053
|
+
"config.parser_use_deprecated_uidplus_data = false.",
|
|
2054
|
+
category: :deprecated, uplevel:)
|
|
2055
|
+
nil
|
|
2036
2056
|
end
|
|
2037
2057
|
|
|
2058
|
+
def AppendUID(...) DeprecatedUIDPlus(...) || AppendUIDData.new(...) end
|
|
2059
|
+
def CopyUID(...) DeprecatedUIDPlus(...) || CopyUIDData.new(...) end
|
|
2060
|
+
|
|
2038
2061
|
ADDRESS_REGEXP = /\G
|
|
2039
2062
|
\( (?: NIL | #{Patterns::QUOTED_rev2} ) # 1: NAME
|
|
2040
2063
|
\s (?: NIL | #{Patterns::QUOTED_rev2} ) # 2: ROUTE
|
|
@@ -2263,20 +2286,12 @@ module Net
|
|
|
2263
2286
|
end
|
|
2264
2287
|
|
|
2265
2288
|
def literal_token(len, type = T_LITERAL)
|
|
2266
|
-
len = coerce_number64 len
|
|
2289
|
+
len = NumValidator.coerce_number64 len
|
|
2267
2290
|
val = @str[@pos, len]
|
|
2268
2291
|
@pos += len
|
|
2269
2292
|
Token.new(type, val)
|
|
2270
2293
|
end
|
|
2271
2294
|
|
|
2272
|
-
# copied/adapted from NumValidator in v0.6
|
|
2273
|
-
def coerce_number64(num)
|
|
2274
|
-
int = num.to_i
|
|
2275
|
-
return int if 0 <= int && int <= 0x7fff_ffff_ffff_ffff
|
|
2276
|
-
raise DataFormatError,
|
|
2277
|
-
"number64 must be unsigned 63-bit integer: #{num}"
|
|
2278
|
-
end
|
|
2279
|
-
|
|
2280
2295
|
end
|
|
2281
2296
|
end
|
|
2282
2297
|
end
|
|
@@ -10,14 +10,21 @@ module Net
|
|
|
10
10
|
|
|
11
11
|
def initialize(client, sock)
|
|
12
12
|
@client, @sock = client, sock
|
|
13
|
+
# cached config
|
|
14
|
+
@max_response_size = nil
|
|
15
|
+
# response buffer state
|
|
13
16
|
@buff = @literal_size = nil
|
|
14
17
|
end
|
|
15
18
|
|
|
16
19
|
def read_response_buffer
|
|
20
|
+
@max_response_size = client.max_response_size
|
|
17
21
|
@buff = String.new
|
|
18
22
|
catch :eof do
|
|
19
23
|
while true
|
|
24
|
+
guard_response_too_large!
|
|
20
25
|
read_line
|
|
26
|
+
# check before allocating memory for literal
|
|
27
|
+
guard_response_too_large!
|
|
21
28
|
break unless literal_size
|
|
22
29
|
read_literal
|
|
23
30
|
end
|
|
@@ -29,6 +36,10 @@ module Net
|
|
|
29
36
|
|
|
30
37
|
private
|
|
31
38
|
|
|
39
|
+
# cached config
|
|
40
|
+
attr_reader :max_response_size
|
|
41
|
+
|
|
42
|
+
# response buffer state
|
|
32
43
|
attr_reader :buff, :literal_size
|
|
33
44
|
|
|
34
45
|
def bytes_read = buff.bytesize
|
|
@@ -44,26 +55,18 @@ module Net
|
|
|
44
55
|
end
|
|
45
56
|
|
|
46
57
|
def read_line
|
|
47
|
-
line = (@sock.gets(CRLF,
|
|
48
|
-
buff << line
|
|
49
|
-
max_response_remaining! unless line_done?
|
|
58
|
+
line = (@sock.gets(CRLF, max_response_remaining) or throw :eof)
|
|
50
59
|
@literal_size = get_literal_size(line)
|
|
60
|
+
buff << line
|
|
51
61
|
end
|
|
52
62
|
|
|
53
63
|
def read_literal
|
|
54
|
-
# check before allocating memory for literal
|
|
55
|
-
max_response_remaining!
|
|
56
64
|
literal = String.new(capacity: literal_size)
|
|
57
|
-
buff << (@sock.read(
|
|
65
|
+
buff << (@sock.read(literal_size, literal) or throw :eof)
|
|
58
66
|
ensure
|
|
59
67
|
@literal_size = nil
|
|
60
68
|
end
|
|
61
69
|
|
|
62
|
-
def read_limit(limit = nil)
|
|
63
|
-
[limit, max_response_remaining!].compact.min
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def max_response_size = client.max_response_size
|
|
67
70
|
def max_response_remaining = max_response_size &.- bytes_read
|
|
68
71
|
def response_too_large? = max_response_size &.< min_response_size
|
|
69
72
|
def min_response_size = bytes_read + min_response_remaining
|
|
@@ -72,21 +75,13 @@ module Net
|
|
|
72
75
|
empty? ? 3 : done? ? 0 : (literal_size || 0) + 2
|
|
73
76
|
end
|
|
74
77
|
|
|
75
|
-
def
|
|
76
|
-
return
|
|
78
|
+
def guard_response_too_large!
|
|
79
|
+
return unless response_too_large?
|
|
77
80
|
raise ResponseTooLargeError.new(
|
|
78
81
|
max_response_size:, bytes_read:, literal_size:,
|
|
79
82
|
)
|
|
80
83
|
end
|
|
81
84
|
|
|
82
|
-
# copied/adapted from NumValidator in v0.6
|
|
83
|
-
def coerce_number64(num)
|
|
84
|
-
int = num.to_i
|
|
85
|
-
return int if 0 <= int && int <= 0x7fff_ffff_ffff_ffff
|
|
86
|
-
raise DataFormatError,
|
|
87
|
-
"number64 must be unsigned 63-bit integer: #{num}"
|
|
88
|
-
end
|
|
89
|
-
|
|
90
85
|
end
|
|
91
86
|
end
|
|
92
87
|
end
|
|
@@ -204,13 +204,13 @@ module Net
|
|
|
204
204
|
attr_reader :server_error
|
|
205
205
|
|
|
206
206
|
# Memoized ScramAlgorithm#salted_password (needs #salt and #iterations)
|
|
207
|
-
def salted_password
|
|
207
|
+
def salted_password = @salted_password ||= compute_salted { super }
|
|
208
208
|
|
|
209
209
|
# Memoized ScramAlgorithm#client_key (needs #salt and #iterations)
|
|
210
|
-
def client_key
|
|
210
|
+
def client_key = @client_key ||= compute_salted { super }
|
|
211
211
|
|
|
212
212
|
# Memoized ScramAlgorithm#server_key (needs #salt and #iterations)
|
|
213
|
-
def server_key
|
|
213
|
+
def server_key = @server_key ||= compute_salted { super }
|
|
214
214
|
|
|
215
215
|
# Returns a new OpenSSL::Digest object, set to the appropriate hash
|
|
216
216
|
# function for the chosen mechanism.
|
data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/search_result.rb
RENAMED
|
@@ -7,6 +7,12 @@ module Net
|
|
|
7
7
|
# identifiers returned by Net::IMAP#uid_search.
|
|
8
8
|
#
|
|
9
9
|
# For backward compatibility, SearchResult inherits from Array.
|
|
10
|
+
#
|
|
11
|
+
# ==== Compatibility with ESearchResult
|
|
12
|
+
#
|
|
13
|
+
# Note that both SearchResult and ESearchResult implement +each+, +to_a+,
|
|
14
|
+
# and +to_sequence_set+. These methods can be used regardless of whether
|
|
15
|
+
# the server returns +SEARCH+ or +ESEARCH+ data (or no data).
|
|
10
16
|
class SearchResult < Array
|
|
11
17
|
|
|
12
18
|
# Returns a SearchResult populated with the given +seq_nums+.
|
|
@@ -117,7 +123,11 @@ module Net
|
|
|
117
123
|
# Net::IMAP::SearchResult[9, 1, 2, 4, 10, 12, 3, modseq: 123_456]
|
|
118
124
|
# .to_sequence_set
|
|
119
125
|
# # => Net::IMAP::SequenceSet["1:4,9:10,12"]
|
|
120
|
-
|
|
126
|
+
#
|
|
127
|
+
# >>>
|
|
128
|
+
# *NOTE:* +SORT+ order is not preserved. The result will be sorted.
|
|
129
|
+
#
|
|
130
|
+
def to_sequence_set; empty? ? SequenceSet.empty : SequenceSet[to_a] end
|
|
121
131
|
|
|
122
132
|
def pretty_print(pp)
|
|
123
133
|
return super if modseq.nil?
|