libis-format 1.2.5 → 1.2.7

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 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