mail-jdec 1.1.2 → 1.2.1
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/.github/workflows/ci.yml +3 -3
- data/.gitignore +0 -0
- data/.rspec +0 -0
- data/CHANGELOG.md +9 -0
- data/Gemfile +2 -0
- data/LICENSE +0 -0
- data/README.md +2 -2
- data/Rakefile +0 -0
- data/gemfiles/mail28.gemfile +4 -0
- data/lib/mail/jdec/body_patch.rb +1 -3
- data/lib/mail/jdec/config.rb +28 -0
- data/lib/mail/jdec/decoder.rb +0 -0
- data/lib/mail/jdec/detector.rb +2 -2
- data/lib/mail/jdec/elements/content_disposition_element_patch.rb +1 -3
- data/lib/mail/jdec/elements/content_type_element_patch.rb +1 -3
- data/lib/mail/jdec/elements/message_ids_element_patch.rb +1 -3
- data/lib/mail/jdec/encodings_patch.rb +1 -3
- data/lib/mail/jdec/field_list_patch.rb +17 -0
- data/lib/mail/jdec/fields/common_address_field_patch.rb +1 -3
- data/lib/mail/jdec/fields/common_date_field_patch.rb +1 -3
- data/lib/mail/jdec/fields/parameter_hash_patch.rb +0 -0
- data/lib/mail/jdec/fields/structured_field_patch.rb +1 -3
- data/lib/mail/jdec/fields/unstructured_field_patch.rb +1 -3
- data/lib/mail/jdec/message_patch.rb +2 -4
- data/lib/mail/jdec/utilities_patch.rb +2 -4
- data/lib/mail/jdec/version.rb +1 -1
- data/lib/mail/jdec.rb +41 -26
- data/mail-jdec.gemspec +2 -1
- metadata +25 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8e3d9dcb4fbc8de6a4b6df323682e8efe787d48031fd6bab0d0652d3c8ab8ac9
|
|
4
|
+
data.tar.gz: 8c729d781690bfbb6b6bb9d23bb5e6a2cc63588f8b323f90dc6986a43be8cf45
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9836c4a60470bb5016a1405a3ad3934fdfd341226e662978fb0f6d841a55c8578fb11c40a33d05c42c544c598b6dbc1da7ef945e12aafe62e9b198fdf8bb2336
|
|
7
|
+
data.tar.gz: 234b68fc5de12e7c048585521f26591f881bb3159fcbd0c3b193a9b784963e81ff93352cc0c5f18aaad517bd212d330c0080e849c52ff14d78988239ec43f845
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -4,11 +4,11 @@ on: [push, pull_request]
|
|
|
4
4
|
|
|
5
5
|
jobs:
|
|
6
6
|
test:
|
|
7
|
-
runs-on: ubuntu-
|
|
7
|
+
runs-on: ubuntu-22.04
|
|
8
8
|
strategy:
|
|
9
9
|
fail-fast: false
|
|
10
10
|
matrix:
|
|
11
|
-
ruby: [2.5, 2.6, 2.7, '3.0', 3.1, 3.2]
|
|
11
|
+
ruby: [2.5, 2.6, 2.7, '3.0', 3.1, 3.2, 3.3, 3.4, '4.0']
|
|
12
12
|
gemfile: ['mail28']
|
|
13
13
|
|
|
14
14
|
name: ruby ${{ matrix.ruby }}, ${{ matrix.gemfile }}
|
|
@@ -17,7 +17,7 @@ jobs:
|
|
|
17
17
|
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
|
|
18
18
|
|
|
19
19
|
steps:
|
|
20
|
-
- uses: actions/checkout@
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
21
|
- uses: ruby/setup-ruby@v1
|
|
22
22
|
with:
|
|
23
23
|
ruby-version: ${{ matrix.ruby }}
|
data/.gitignore
CHANGED
|
File without changes
|
data/.rspec
CHANGED
|
File without changes
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/LICENSE
CHANGED
|
File without changes
|
data/README.md
CHANGED
data/Rakefile
CHANGED
|
File without changes
|
data/gemfiles/mail28.gemfile
CHANGED
data/lib/mail/jdec/body_patch.rb
CHANGED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Mail
|
|
4
|
+
module Jdec
|
|
5
|
+
class Config
|
|
6
|
+
NAMES = [
|
|
7
|
+
:enabled,
|
|
8
|
+
:autodetect_confidence, :autodetect_skip_charsets, :mime_types_for_autodetect,
|
|
9
|
+
:preferred_charsets, :keep_field_order
|
|
10
|
+
]
|
|
11
|
+
NAMES.each do |name|
|
|
12
|
+
attr_accessor name
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def initialize(attrs = {})
|
|
16
|
+
attrs.each do |key, val|
|
|
17
|
+
send("#{key}=", val)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def attributes
|
|
22
|
+
NAMES.each_with_object({}) do |name, hash|
|
|
23
|
+
hash[name] = send(name)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
data/lib/mail/jdec/decoder.rb
CHANGED
|
File without changes
|
data/lib/mail/jdec/detector.rb
CHANGED
|
@@ -22,8 +22,8 @@ module Mail
|
|
|
22
22
|
def trusty?(detected)
|
|
23
23
|
detected.key?(:type) &&
|
|
24
24
|
detected.key?(:encoding) &&
|
|
25
|
-
detected[:confidence].to_i >= Jdec.autodetect_confidence &&
|
|
26
|
-
!Jdec.autodetect_skip_charsets.include?(detected[:encoding].downcase)
|
|
25
|
+
detected[:confidence].to_i >= Jdec.config.autodetect_confidence &&
|
|
26
|
+
!Jdec.config.autodetect_skip_charsets.include?(detected[:encoding].downcase)
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
end
|
|
@@ -38,6 +38,4 @@ module Mail
|
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
Mail::ContentDispositionElement.prepend Mail::Jdec::ContentDispositionElementPatch
|
|
43
|
-
end
|
|
41
|
+
Mail::ContentDispositionElement.prepend Mail::Jdec::ContentDispositionElementPatch
|
|
@@ -33,6 +33,4 @@ module Mail
|
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
Mail::ContentTypeElement.prepend Mail::Jdec::ContentTypeElementPatch
|
|
38
|
-
end
|
|
36
|
+
Mail::ContentTypeElement.prepend Mail::Jdec::ContentTypeElementPatch
|
|
@@ -15,6 +15,4 @@ module Mail
|
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
Mail::MessageIdsElement.prepend Mail::Jdec::MessageIdsElementPatch
|
|
20
|
-
end
|
|
18
|
+
Mail::MessageIdsElement.prepend Mail::Jdec::MessageIdsElementPatch
|
|
@@ -14,6 +14,4 @@ module Mail
|
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
Mail::Encodings.singleton_class.prepend Mail::Jdec::EncodingsPatch
|
|
19
|
-
end
|
|
17
|
+
Mail::Encodings.singleton_class.prepend Mail::Jdec::EncodingsPatch
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Mail
|
|
4
|
+
module Jdec
|
|
5
|
+
module FieldListPatch
|
|
6
|
+
def insert_field(field)
|
|
7
|
+
if Mail::Jdec.enabled? && Mail::Jdec.config.keep_field_order
|
|
8
|
+
push field
|
|
9
|
+
else
|
|
10
|
+
super
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
Mail::FieldList.prepend Mail::Jdec::FieldListPatch
|
|
@@ -27,7 +27,5 @@ end
|
|
|
27
27
|
|
|
28
28
|
klasses = ObjectSpace.each_object(Class).select { |klass| klass < Mail::CommonAddressField }
|
|
29
29
|
klasses.each do |klass|
|
|
30
|
-
|
|
31
|
-
klass.prepend Mail::Jdec::CommonAddressFieldPatch
|
|
32
|
-
end
|
|
30
|
+
klass.prepend Mail::Jdec::CommonAddressFieldPatch
|
|
33
31
|
end
|
|
@@ -40,7 +40,5 @@ end
|
|
|
40
40
|
|
|
41
41
|
klasses = ObjectSpace.each_object(Class).select { |klass| klass < Mail::CommonDateField }
|
|
42
42
|
klasses.each do |klass|
|
|
43
|
-
|
|
44
|
-
klass.prepend Mail::Jdec::CommonDateFieldPatch
|
|
45
|
-
end
|
|
43
|
+
klass.prepend Mail::Jdec::CommonDateFieldPatch
|
|
46
44
|
end
|
|
File without changes
|
|
@@ -11,6 +11,4 @@ module Mail
|
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
Mail::UnstructuredField.prepend Mail::Jdec::UnstructuredFieldPatch
|
|
16
|
-
end
|
|
14
|
+
Mail::UnstructuredField.prepend Mail::Jdec::UnstructuredFieldPatch
|
|
@@ -28,7 +28,7 @@ module Mail
|
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def mime_types_for_autodetect?(mime_type)
|
|
31
|
-
Jdec.mime_types_for_autodetect.any? do |type|
|
|
31
|
+
Jdec.config.mime_types_for_autodetect.any? do |type|
|
|
32
32
|
if type.is_a?(Regexp)
|
|
33
33
|
type.match?(mime_type)
|
|
34
34
|
else
|
|
@@ -41,6 +41,4 @@ module Mail
|
|
|
41
41
|
end
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
Mail::Message.prepend Mail::Jdec::MessagePatch
|
|
46
|
-
end
|
|
44
|
+
Mail::Message.prepend Mail::Jdec::MessagePatch
|
|
@@ -5,7 +5,7 @@ module Mail
|
|
|
5
5
|
module UtilitiesPatch
|
|
6
6
|
def pick_encoding(charset)
|
|
7
7
|
if Jdec.enabled?
|
|
8
|
-
Jdec.preferred_charsets.each do |from, to|
|
|
8
|
+
Jdec.config.preferred_charsets.each do |from, to|
|
|
9
9
|
if charset.to_s.downcase == from
|
|
10
10
|
return Encoding.find(to)
|
|
11
11
|
end
|
|
@@ -35,6 +35,4 @@ module Mail
|
|
|
35
35
|
end
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
Mail::Utilities.singleton_class.prepend Mail::Jdec::UtilitiesPatch
|
|
40
|
-
end
|
|
38
|
+
Mail::Utilities.singleton_class.prepend Mail::Jdec::UtilitiesPatch
|
data/lib/mail/jdec/version.rb
CHANGED
data/lib/mail/jdec.rb
CHANGED
|
@@ -10,39 +10,54 @@ end
|
|
|
10
10
|
module Mail
|
|
11
11
|
module Jdec
|
|
12
12
|
class << self
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
@@config = Config.new(
|
|
14
|
+
enabled: true,
|
|
15
|
+
autodetect_confidence: 50,
|
|
16
|
+
autodetect_skip_charsets: %w(),
|
|
17
|
+
mime_types_for_autodetect: [%r{^text/}, 'message/delivery-status', 'message/disposition-notification'],
|
|
18
|
+
preferred_charsets: {
|
|
19
|
+
'iso-2022-jp' => 'cp50221',
|
|
20
|
+
'iso-2022-jp-1' => 'cp50221',
|
|
21
|
+
'iso-2022-jp-2' => 'cp50221',
|
|
22
|
+
'iso-2022-jp-3' => 'cp50221',
|
|
23
|
+
'iso-2022-jp-2004' => 'cp50221',
|
|
24
|
+
'shift_jis' => 'cp932',
|
|
25
|
+
'shift-jis' => 'cp932',
|
|
26
|
+
'x_sjis' => 'cp932',
|
|
27
|
+
'x-sjis' => 'cp932'
|
|
28
|
+
},
|
|
29
|
+
keep_field_order: false
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
def configure
|
|
33
|
+
yield @@config
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
THREAD_KEY = :_mail_jdec
|
|
37
|
+
|
|
38
|
+
def config
|
|
39
|
+
Thread.current[THREAD_KEY] || @@config
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def with_config(hash = {})
|
|
43
|
+
old = Thread.current[THREAD_KEY]
|
|
44
|
+
Thread.current[THREAD_KEY] = Config.new(config.attributes.merge(hash))
|
|
45
|
+
yield
|
|
46
|
+
ensure
|
|
47
|
+
Thread.current[THREAD_KEY] = old
|
|
48
|
+
end
|
|
18
49
|
|
|
19
50
|
def enabled?
|
|
20
|
-
|
|
51
|
+
config.enabled
|
|
21
52
|
end
|
|
22
53
|
|
|
23
|
-
def enable
|
|
24
|
-
|
|
54
|
+
def enable!
|
|
55
|
+
config.enabled = true
|
|
25
56
|
end
|
|
26
57
|
|
|
27
|
-
def disable
|
|
28
|
-
|
|
58
|
+
def disable!
|
|
59
|
+
config.enabled = false
|
|
29
60
|
end
|
|
30
61
|
end
|
|
31
|
-
|
|
32
|
-
self.enable
|
|
33
|
-
self.autodetect_confidence = 50
|
|
34
|
-
self.autodetect_skip_charsets = %w()
|
|
35
|
-
self.mime_types_for_autodetect = [%r{^text/}, 'message/delivery-status', 'message/disposition-notification']
|
|
36
|
-
self.preferred_charsets = {
|
|
37
|
-
'iso-2022-jp' => 'cp50221',
|
|
38
|
-
'iso-2022-jp-1' => 'cp50221',
|
|
39
|
-
'iso-2022-jp-2' => 'cp50221',
|
|
40
|
-
'iso-2022-jp-3' => 'cp50221',
|
|
41
|
-
'iso-2022-jp-2004' => 'cp50221',
|
|
42
|
-
'shift_jis' => 'cp932',
|
|
43
|
-
'shift-jis' => 'cp932',
|
|
44
|
-
'x_sjis' => 'cp932',
|
|
45
|
-
'x-sjis' => 'cp932'
|
|
46
|
-
}
|
|
47
62
|
end
|
|
48
63
|
end
|
data/mail-jdec.gemspec
CHANGED
|
@@ -17,9 +17,10 @@ Gem::Specification.new do |spec|
|
|
|
17
17
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
18
18
|
spec.require_paths = ["lib"]
|
|
19
19
|
|
|
20
|
-
spec.add_dependency "mail", ">= 2.8.1"
|
|
20
|
+
spec.add_dependency "mail", ">= 2.8.1", "< 2.9.0"
|
|
21
21
|
spec.add_dependency "charlock_holmes", ">= 0.7.0"
|
|
22
22
|
|
|
23
|
+
spec.add_development_dependency "irb"
|
|
23
24
|
spec.add_development_dependency "rake"
|
|
24
25
|
spec.add_development_dependency "rspec"
|
|
25
26
|
spec.add_development_dependency "simplecov"
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mail-jdec
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.1
|
|
4
|
+
version: 1.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yoshikazu Kaneta
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: mail
|
|
@@ -17,6 +16,9 @@ dependencies:
|
|
|
17
16
|
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
18
|
version: 2.8.1
|
|
19
|
+
- - "<"
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: 2.9.0
|
|
20
22
|
type: :runtime
|
|
21
23
|
prerelease: false
|
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -24,6 +26,9 @@ dependencies:
|
|
|
24
26
|
- - ">="
|
|
25
27
|
- !ruby/object:Gem::Version
|
|
26
28
|
version: 2.8.1
|
|
29
|
+
- - "<"
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: 2.9.0
|
|
27
32
|
- !ruby/object:Gem::Dependency
|
|
28
33
|
name: charlock_holmes
|
|
29
34
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -38,6 +43,20 @@ dependencies:
|
|
|
38
43
|
- - ">="
|
|
39
44
|
- !ruby/object:Gem::Version
|
|
40
45
|
version: 0.7.0
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: irb
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
requirements:
|
|
50
|
+
- - ">="
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: '0'
|
|
53
|
+
type: :development
|
|
54
|
+
prerelease: false
|
|
55
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
56
|
+
requirements:
|
|
57
|
+
- - ">="
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: '0'
|
|
41
60
|
- !ruby/object:Gem::Dependency
|
|
42
61
|
name: rake
|
|
43
62
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -100,12 +119,14 @@ files:
|
|
|
100
119
|
- gemfiles/mail28.gemfile
|
|
101
120
|
- lib/mail/jdec.rb
|
|
102
121
|
- lib/mail/jdec/body_patch.rb
|
|
122
|
+
- lib/mail/jdec/config.rb
|
|
103
123
|
- lib/mail/jdec/decoder.rb
|
|
104
124
|
- lib/mail/jdec/detector.rb
|
|
105
125
|
- lib/mail/jdec/elements/content_disposition_element_patch.rb
|
|
106
126
|
- lib/mail/jdec/elements/content_type_element_patch.rb
|
|
107
127
|
- lib/mail/jdec/elements/message_ids_element_patch.rb
|
|
108
128
|
- lib/mail/jdec/encodings_patch.rb
|
|
129
|
+
- lib/mail/jdec/field_list_patch.rb
|
|
109
130
|
- lib/mail/jdec/fields/common_address_field_patch.rb
|
|
110
131
|
- lib/mail/jdec/fields/common_date_field_patch.rb
|
|
111
132
|
- lib/mail/jdec/fields/parameter_hash_patch.rb
|
|
@@ -118,7 +139,6 @@ files:
|
|
|
118
139
|
homepage: https://github.com/kanety/mail-jdec
|
|
119
140
|
licenses: []
|
|
120
141
|
metadata: {}
|
|
121
|
-
post_install_message:
|
|
122
142
|
rdoc_options: []
|
|
123
143
|
require_paths:
|
|
124
144
|
- lib
|
|
@@ -133,8 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
133
153
|
- !ruby/object:Gem::Version
|
|
134
154
|
version: '0'
|
|
135
155
|
requirements: []
|
|
136
|
-
rubygems_version: 3.
|
|
137
|
-
signing_key:
|
|
156
|
+
rubygems_version: 3.6.9
|
|
138
157
|
specification_version: 4
|
|
139
158
|
summary: A mail patch for decoding some improper mails
|
|
140
159
|
test_files: []
|