net-imap 0.2.3 → 0.3.4

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.

Potentially problematic release.


This version of net-imap might be problematic. Click here for more details.

data/net-imap.gemspec CHANGED
@@ -10,8 +10,8 @@ end
10
10
  Gem::Specification.new do |spec|
11
11
  spec.name = name
12
12
  spec.version = version
13
- spec.authors = ["Shugo Maeda"]
14
- spec.email = ["shugo@ruby-lang.org"]
13
+ spec.authors = ["Shugo Maeda", "nicholas a. evans"]
14
+ spec.email = ["shugo@ruby-lang.org", "nick@ekenosen.net"]
15
15
 
16
16
  spec.summary = %q{Ruby client api for Internet Message Access Protocol}
17
17
  spec.description = %q{Ruby client api for Internet Message Access Protocol}
@@ -32,6 +32,8 @@ Gem::Specification.new do |spec|
32
32
  spec.require_paths = ["lib"]
33
33
 
34
34
  spec.add_dependency "net-protocol"
35
- spec.add_dependency "digest"
36
- spec.add_dependency "strscan"
35
+ spec.add_dependency "date"
36
+
37
+ spec.add_development_dependency "digest"
38
+ spec.add_development_dependency "strscan"
37
39
  end
data/rakelib/rdoc.rake ADDED
@@ -0,0 +1,70 @@
1
+ # require "sdoc"
2
+ require "rdoc/task"
3
+ require_relative "../lib/net/imap"
4
+ require 'rdoc/rdoc' unless defined?(RDoc::Markup::ToHtml)
5
+
6
+ module RDoc::Generator
7
+ module NetIMAP
8
+
9
+ module RemoveRedundantParens
10
+ def param_seq
11
+ super.sub(/^\(\)\s*/, "")
12
+ end
13
+ end
14
+
15
+ # See https://github.com/ruby/rdoc/pull/936
16
+ module FixSectionComments
17
+ def markup(text)
18
+ @store ||= @parent&.store
19
+ super
20
+ end
21
+ def description; markup comment end
22
+ def comment; super || @comments&.first end
23
+ def parse(_comment_location = nil) super() end
24
+ end
25
+
26
+ # render "[label] data" lists as tables. adapted from "hanna-nouveau" gem.
27
+ module LabelListTable
28
+ def list_item_start(list_item, list_type)
29
+ case list_type
30
+ when :NOTE
31
+ %(<tr><td class='label'>#{Array(list_item.label).map{|label| to_html(label)}.join("<br />")}</td><td>)
32
+ else
33
+ super
34
+ end
35
+ end
36
+
37
+ def list_end_for(list_type)
38
+ case list_type
39
+ when :NOTE then
40
+ "</td></tr>"
41
+ else
42
+ super
43
+ end
44
+ end
45
+ end
46
+
47
+ end
48
+ end
49
+
50
+ class RDoc::AnyMethod
51
+ prepend RDoc::Generator::NetIMAP::RemoveRedundantParens
52
+ end
53
+
54
+ class RDoc::Context::Section
55
+ prepend RDoc::Generator::NetIMAP::FixSectionComments
56
+ end
57
+
58
+ class RDoc::Markup::ToHtml
59
+ LIST_TYPE_TO_HTML[:NOTE] = ['<table class="rdoc-list note-list"><tbody>', '</tbody></table>']
60
+ prepend RDoc::Generator::NetIMAP::LabelListTable
61
+ end
62
+
63
+ RDoc::Task.new do |doc|
64
+ doc.main = "README.md"
65
+ doc.title = "net-imap #{Net::IMAP::VERSION}"
66
+ doc.rdoc_dir = "doc"
67
+ doc.rdoc_files = FileList.new %w[lib/**/*.rb *.rdoc *.md]
68
+ doc.options << "--template-stylesheets" << "docs/styles.css"
69
+ # doc.generator = "hanna"
70
+ end
data/rakelib/rfcs.rake ADDED
@@ -0,0 +1,168 @@
1
+ # frozen_string_literal: true
2
+
3
+ RFCS = {
4
+
5
+ # Historic IMAP RFCs
6
+ 822 => "Internet Message Format (OBSOLETE)",
7
+ 1730 => "IMAP4 (OBSOLETE)",
8
+ 1731 => "IMAP4 Authentication Mechanisms (OBSOLETE)",
9
+ 2060 => "IMAP4rev1 (OBSOLETE)",
10
+ 2061 => "IMAP4 Compatibility with IMAP2bis",
11
+ 2062 => "Internet Message Access Protocol - Obsolete Syntax",
12
+ 2086 => "IMAP ACL (OBSOLETE)",
13
+ 2087 => "IMAP QUOTA (OBSOLETE)",
14
+ 2088 => "IMAP LITERAL+ (OBSOLETE)",
15
+ 2095 => "IMAP/POP AUTHorize Extension for CRAM-MD5 (OBSOLETE)",
16
+ 2192 => "IMAP URL Scheme (OBSOLETE)",
17
+ 2222 => "SASL (OBSOLETE)",
18
+ 2359 => "IMAP UIDPLUS (OBSOLETE)",
19
+ 2822 => "Internet Message Format (OBSOLETE)",
20
+ 3348 => "IMAP CHILDREN (OBSOLETED)",
21
+ 4551 => "IMAP CONDSTORE (OBSOLETE)",
22
+ 5162 => "IMAP QRESYNC (OBSOLETE)",
23
+ 6237 => "IMAP MULTISEARCH (OBSOLETE)",
24
+
25
+ # Core IMAP RFCs
26
+ 3501 => "IMAP4rev1", # supported by nearly all email servers
27
+ 4466 => "Collected Extensions to IMAP4 ABNF",
28
+ 9051 => "IMAP4rev2", # not widely supported yet
29
+
30
+ # RFC-9051 Normative References (not a complete list)
31
+ 2152 => "UTF-7",
32
+ 2180 => "IMAP4 Multi-Accessed Mailbox Practice",
33
+ 2683 => "IMAP4 Implementation Recommendations",
34
+ 3503 => "Message Disposition Notification (MDN) profile IMAP",
35
+ 5234 => "ABNF",
36
+ 5788 => "IMAP4 keyword registry",
37
+
38
+ # Internet Message format and envelope and body structure
39
+ 5322 => "Internet Message Format (current)",
40
+
41
+ 1864 => "[MD5]: The Content-MD5 Header Field",
42
+ 2045 => "[MIME-IMB]: MIME Part One: Format of Internet Message Bodies",
43
+ 2046 => "[MIME-IMT]: MIME Part Two: Media Types",
44
+ 2047 => "[MIME-HDRS]: MIME Part Three: Header Extensions for Non-ASCII Text",
45
+ 2183 => "[DISPOSITION]: The Content-Disposition Header",
46
+ 2231 => "MIME Parameter Value and Encoded Word Extensions: " \
47
+ "Character Sets, Languages, and Continuations",
48
+ 2557 => "[LOCATION]: MIME Encapsulation of Aggregate Documents",
49
+ 2978 => "[CHARSET]: IANA Charset Registration Procedures, BCP 19",
50
+ 3282 => "[LANGUAGE-TAGS]: Content Language Headers",
51
+ 6532 => "[I18N-HDRS]: Internationalized Email Headers",
52
+
53
+ # SASL
54
+ 4422 => "SASL, EXTERNAL",
55
+
56
+ # stringprep
57
+ 3454 => "stringprep",
58
+ 4013 => "SASLprep",
59
+ 8265 => "PRECIS", # obsoletes SASLprep?
60
+
61
+ # SASL mechanisms (not a complete list)
62
+ 2195 => "SASL CRAM-MD5",
63
+ 4505 => "SASL ANONYMOUS",
64
+ 4616 => "SASL PLAIN",
65
+ 4752 => "SASL GSSAPI (Kerberos V5)",
66
+ 5801 => "SASL GS2-*, GS2-KRB5",
67
+ 5802 => "SASL SCRAM-*, SCRAM-SHA-1, SCRAM-SHA1-PLUS",
68
+ 5803 => "LDAP Schema for Storing SCRAM Secrets",
69
+ 6331 => "SASL DIGEST-MD5",
70
+ 6595 => "SASL SAML20",
71
+ 6616 => "SASL OPENID20",
72
+ 7628 => "SASL OAUTH10A, OAUTHBEARER",
73
+ 7677 => "SASL SCRAM-SHA-256, SCRAM-SHA256-PLUS",
74
+
75
+ # "Informational" RFCs
76
+ 1733 => "Distributed E-Mail Models in IMAP4",
77
+ 4549 => "Synchronization Operations for Disconnected IMAP4 Clients",
78
+
79
+ # TLS and other security concerns
80
+ 2595 => "Using TLS with IMAP, POP3 and ACAP",
81
+ 6151 => "Updated Security Considerations for MD5 Message-Digest and HMAC-MD5",
82
+ 7525 => "Recommendations for Secure Use of TLS and DTLS",
83
+ 7818 => "Updated TLS Server Identity Check Procedure for Email Protocols",
84
+ 8314 => "Cleartext Considered Obsolete: Use of TLS for Email",
85
+ 8996 => "Deprecating TLS 1.0 and TLS 1.1,",
86
+
87
+ # related email specifications
88
+ 6376 => "DomainKeys Identified Mail (DKIM) Signatures",
89
+ 6409 => "Message Submission for Mail",
90
+
91
+ # Other IMAP4 "Standards Track" RFCs
92
+ 5092 => "IMAP URL Scheme",
93
+ 5593 => "IMAP URL Access Identifier Extension",
94
+ 5530 => "IMAP Response Codes",
95
+ 6186 => "Use of SRV Records for Locating Email Submission/Access Services",
96
+ 8305 => "Happy Eyeballs Version 2: Better Connectivity Using Concurrency",
97
+
98
+ # IMAP4 Extensions
99
+ 2177 => "IMAP IDLE",
100
+ 2193 => "IMAP MAILBOX-REFERRALS",
101
+ 2221 => "IMAP LOGIN-REFERRALS",
102
+ 2342 => "IMAP NAMESPACE",
103
+ 2971 => "IMAP ID",
104
+ 3502 => "IMAP MULTIAPPEND",
105
+ 3516 => "IMAP BINARY",
106
+ 3691 => "IMAP UNSELECT",
107
+ 4314 => "IMAP ACL, RIGHTS=",
108
+ 4315 => "IMAP UIDPLUS",
109
+ 4467 => "IMAP URLAUTH",
110
+ 4469 => "IMAP CATENATE",
111
+ 4731 => "IMAP ESEARCH",
112
+ 4959 => "IMAP SASL-IR",
113
+ 4978 => "IMAP COMPRESS=DEFLATE",
114
+ 5032 => "IMAP WITHIN",
115
+ 5161 => "IMAP ENABLE",
116
+ 5182 => "IMAP SEARCHRES",
117
+ 5255 => "IMAP I18NLEVEL=1, I18NLEVEL=2, LANGUAGE",
118
+ 5256 => "IMAP SORT, THREAD",
119
+ 5257 => "IMAP ANNOTATE-EXPERIMENT-1",
120
+ 5258 => "IMAP LIST-EXTENDED",
121
+ 5259 => "IMAP CONVERT",
122
+ 5267 => "IMAP CONTEXT=SEARCH, CONTEXT=SORT, ESORT",
123
+ 5464 => "IMAP METADATA, METADATA-SERVER",
124
+ 5465 => "IMAP NOTIFY",
125
+ 5466 => "IMAP FILTERS",
126
+ 5524 => "IMAP URLAUTH=BINARY", # see also: [RFC Errata 6214]
127
+ 5550 => "IMAP URL-PARTIAL",
128
+ 5738 => "IMAP UTF8=ALL, UTF8=APPEND, UTF8=USER", # OBSOLETED by RFC6855
129
+ 5819 => "IMAP LIST-STATUS",
130
+ 5957 => "IMAP SORT=DISPLAY",
131
+ 6154 => "IMAP SPECIAL-USE, CREATE-SPECIAL-USE",
132
+ 6203 => "IMAP SEARCH=FUZZY",
133
+ 6785 => "IMAP IMAPSIEVE=",
134
+ 6851 => "IMAP MOVE",
135
+ 6855 => "IMAP UTF8=ACCEPT, UTF8=ONLY",
136
+ 7162 => "IMAP CONDSTORE, QRESYNC",
137
+ 7377 => "IMAP MULTISEARCH",
138
+ 7888 => "IMAP LITERAL+, LITERAL-",
139
+ 7889 => "IMAP APPENDLIMIT",
140
+ 8437 => "IMAP UNAUTHENTICATE",
141
+ 8438 => "IMAP STATUS=SIZE",
142
+ 8440 => "IMAP LIST-MYRIGHTS",
143
+ 8474 => "IMAP OBJECTID",
144
+ 8508 => "IMAP REPLACE",
145
+ 8514 => "IMAP SAVEDATE",
146
+ 8970 => "IMAP PREVIEW",
147
+ 9208 => "IMAP QUOTA, QUOTA=, QUOTASET",
148
+
149
+ # etc...
150
+ 3629 => "UTF8",
151
+ 6857 => "Post-Delivery Message Downgrading for I18n Email Messages",
152
+
153
+ }.freeze
154
+
155
+ task :rfcs => RFCS.keys.map {|n| "rfcs/rfc%04d.txt" % [n] }
156
+
157
+ RFC_RE = %r{rfcs/rfc(\d+).*\.txt}.freeze
158
+ rule RFC_RE do |t|
159
+ require "fileutils"
160
+ FileUtils.mkpath "rfcs"
161
+ require "net/http"
162
+ t.name =~ RFC_RE
163
+ rfc_url = URI("https://www.rfc-editor.org/rfc/rfc#$1.txt")
164
+ rfc_txt = Net::HTTP.get(rfc_url)
165
+ File.write(t.name, rfc_txt)
166
+ end
167
+
168
+ CLEAN.include "rfcs/rfc*.txt"
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "string_prep_tables_generator"
4
+
5
+ generator = StringPrepTablesGenerator.new
6
+
7
+ file generator.json_filename => generator.json_deps do |t|
8
+ generator.generate_json_data_file
9
+ end
10
+
11
+ directory "lib/net/imap/sasl"
12
+
13
+ file "lib/net/imap/sasl/stringprep_tables.rb" => generator.rb_deps do |t|
14
+ File.write t.name, generator.stringprep_rb
15
+ end
16
+
17
+ file "lib/net/imap/sasl/saslprep_tables.rb" => generator.rb_deps do |t|
18
+ File.write t.name, generator.saslprep_rb
19
+ end
20
+
21
+ GENERATED_RUBY = FileList.new(
22
+ "lib/net/imap/sasl/stringprep_tables.rb",
23
+ "lib/net/imap/sasl/saslprep_tables.rb",
24
+ )
25
+
26
+ CLEAN.include generator.clean_deps
27
+ CLOBBER.include GENERATED_RUBY
28
+
29
+ task saslprep_rb: GENERATED_RUBY
30
+ task test: :saslprep_rb