libis-format 1.2.5 → 1.2.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 19055f943473fa0d2a9a1fdebf499c87652fcab845239a4b1f21341229ad08ad
4
- data.tar.gz: f6f64bcaf5472f0e11aceb2cbe97b3f367b0ed4ccc4dfc389e5857f191c59897
3
+ metadata.gz: a1b5fdec2f726d83572f66f78b361b8500247bcf5bdcce56e633998b88758bc4
4
+ data.tar.gz: 0b09d4cc45338b9c1060c89d80f94ad171e8d2bc43da17b20cd2357521ef78f4
5
5
  SHA512:
6
- metadata.gz: 7b0ee24177c3f541a8cd12733e04a04649d03b2785c68c8eaa44ca3fdebd7c657346afc9a824d59e872666bfa3a657483b00b6126970cc739ef8433889621847
7
- data.tar.gz: 0bdbc5a928d6e556a816f65d05f2151e6b6ac331de37ce2d12030ace291f2b4cae452420236d9d5371f3566a7346f60854976dc33181e17549663b8ada5302f6
6
+ metadata.gz: 5ad4a140bfa6bedf2d7b915ec1a51b23fd9b4efdacf468e1cae1505a54c72b0733c6ee3d20981347da3f9fae8a8656416a953754bdc893decb8021f40a58b499
7
+ data.tar.gz: '0854af4151b126b6d2cb3d8fdd04c2186dcd5dac294b9a800db0256ed0955c3f1d86d54853ea39fbb295fdf5f71d7a016e6e49e71988e3c7f7c595f5a1c9a33e'
@@ -5,7 +5,10 @@ require 'rfc_2047'
5
5
  require 'cgi'
6
6
  require 'pdfkit'
7
7
 
8
+ require 'time'
9
+
8
10
  require 'fileutils'
11
+ require 'pathname'
9
12
 
10
13
  require 'libis/format/config'
11
14
 
@@ -49,10 +52,10 @@ module Libis
49
52
  target_format = options.delete(:to_html) ? :HTML : :PDF
50
53
  result = msg_to_pdf(msg, target, target_format, options)
51
54
  msg.close
52
- return result
55
+ result
53
56
  end
54
57
 
55
- def msg_to_pdf(msg, target, target_format, pdf_options, reraise: false)
58
+ def msg_to_pdf(msg, target, target_format, pdf_options, root_msg: true)
56
59
 
57
60
  # Make sure the target directory exists
58
61
  outdir = File.dirname(target)
@@ -116,6 +119,11 @@ module Libis
116
119
  end
117
120
  end
118
121
 
122
+ [:date].each do |key|
123
+ next unless headers[key]
124
+ headers[key] = DateTime.parse(headers[key]).to_time.localtime.iso8601
125
+ end
126
+
119
127
  # Add header section to the HTML body
120
128
  unless hdr_html.empty?
121
129
  # Insert header block styles
@@ -139,26 +147,28 @@ module Libis
139
147
  body.gsub!(IMG_CID_PLAIN_REGEX) do |match|
140
148
  # puts "CID found: #{match}, looking for #{$1}"
141
149
  data = getAttachmentData(attachments, $1)
142
- unless data
143
- # puts "cid #{$1} not found"
144
- return '<img src=""/>'
145
- end
150
+ if data
146
151
  # puts "cid #{$1} data: #{data.inspect}"
147
- used_files << $1
148
- "<img src=\"data:#{data[:mime_type]};base64,#{data[:base64]}\"/>"
152
+ used_files << $1
153
+ "<img src=\"data:#{data[:mime_type]};base64,#{data[:base64]}\"/>"
154
+ else
155
+ # puts "cid #{$1} not found"
156
+ '<img src=""/>'
157
+ end
149
158
  end
150
159
 
151
160
  # Then process HTML img tags with CID entries
152
161
  body.gsub!(IMG_CID_HTML_REGEX) do |match|
153
162
  # puts "CID found: #{match}, looking for #{$1}"
154
163
  data = getAttachmentData(attachments, $1)
155
- unless data
156
- # puts "cid #{$1} not found"
157
- return ''
158
- end
164
+ if data
159
165
  # puts "cid #{$1} data: #{data.inspect}"
160
166
  used_files << $1
161
167
  "data:#{data[:mime_type]};base64,#{data[:base64]}"
168
+ else
169
+ # puts "cid #{$1} not found"
170
+ ''
171
+ end
162
172
  end
163
173
 
164
174
  # Create PDF
@@ -196,15 +206,15 @@ module Libis
196
206
  # ----------------
197
207
  outdir = File.join(outdir, "#{File.basename(target)}.attachments")
198
208
  digits = ((attachments.count + 1)/ 10) + 1
199
- i = 0
209
+ i = 1
200
210
  attachments.delete_if {|a| a.properties.attachment_hidden}.each do |a|
201
211
  prefix = "#{"%0*d" % [digits, i]}-"
202
212
  if sub_msg = a.instance_variable_get(:@embedded_msg)
203
213
  # puts "Embedded email message ..."
204
214
  subject = a.properties[:display_name] || sub_msg.subject || ""
205
- file = File.join(outdir, "#{prefix}#{subject}.#{target_format.to_s.downcase}")
215
+ file = File.join(outdir, "#{prefix}#{subject}.msg.#{target_format.to_s.downcase}")
206
216
 
207
- result = msg_to_pdf(sub_msg, file, target_format, pdf_options, reraise: true)
217
+ result = msg_to_pdf(sub_msg, file, target_format, pdf_options, root_msg: false)
208
218
  if e = result[:error]
209
219
  raise
210
220
  end
@@ -223,6 +233,13 @@ module Libis
223
233
  end
224
234
  i += 1
225
235
  end
236
+
237
+ if root_msg
238
+ p = Pathname(File.dirname(files.first))
239
+ files[1..].each do |f|
240
+ (headers[:attachments] ||= []) << Pathname.new(f).relative_path_from(p).to_s
241
+ end
242
+ end
226
243
 
227
244
  {
228
245
  command: {status: 0},
@@ -234,7 +251,7 @@ module Libis
234
251
  rescue Exception => e
235
252
  # puts "ERROR: Exception #{e.class} raised: #{e.message}"
236
253
  # e.backtrace.each {|t| puts " - #{t}"}
237
- raise if reraise
254
+ raise unless root_msg
238
255
  msg.close
239
256
  return {
240
257
  command: {status: -1},
@@ -285,7 +302,7 @@ module Libis
285
302
  }
286
303
  end
287
304
  end
288
- return nil
305
+ nil
289
306
  end
290
307
 
291
308
  def read_header(headers_file)
@@ -1,5 +1,5 @@
1
1
  module Libis
2
2
  module Format
3
- VERSION = '1.2.5'
3
+ VERSION = '1.2.7'
4
4
  end
5
5
  end
data/libis-format.gemspec CHANGED
@@ -40,7 +40,7 @@ Gem::Specification.new do |spec|
40
40
  spec.add_runtime_dependency 'chromaprint', '~> 0.0.2'
41
41
  spec.add_runtime_dependency 'naturally', '~> 2.1'
42
42
  spec.add_runtime_dependency 'pdfinfo', '~> 1.4'
43
- spec.add_runtime_dependency 'ruby-msg-nx'
43
+ spec.add_runtime_dependency 'libis-mapi', '~> 0.3'
44
44
  spec.add_runtime_dependency 'new_rfc_2047'
45
45
  spec.add_runtime_dependency 'pdfkit'
46
46
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libis-format
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.5
4
+ version: 1.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kris Dekeyser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-28 00:00:00.000000000 Z
11
+ date: 2023-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -179,19 +179,19 @@ dependencies:
179
179
  - !ruby/object:Gem::Version
180
180
  version: '1.4'
181
181
  - !ruby/object:Gem::Dependency
182
- name: ruby-msg-nx
182
+ name: libis-mapi
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - ">="
185
+ - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: '0'
187
+ version: '0.3'
188
188
  type: :runtime
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - ">="
192
+ - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: '0'
194
+ version: '0.3'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: new_rfc_2047
197
197
  requirement: !ruby/object:Gem::Requirement