omah 0.2.1 → 0.3.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.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/omah.rb +79 -6
  5. metadata +46 -6
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b5018c944879de57659789bea4c19c513fcc80e5
4
- data.tar.gz: ebba1b447f4b8abc7f60a14b97f9e88c8b6f735e
3
+ metadata.gz: 5e448d8dcd3df2527bacbd8332ec92270e1522e6
4
+ data.tar.gz: 0640adfff4ad6c98581224875062fea2a326c853
5
5
  SHA512:
6
- metadata.gz: a3853a0cdd608325d8fef604da4eb6d12911a642ec01d434dacec83a83579f0ec80ff362adfe40a5e2fed9a622570573065d7bbd6c7eec4b291cbd6018a96a5b
7
- data.tar.gz: f68a29f1cdf3c09edbbb408b895123974e54a3fe7c4e5c58d2eacd233271aa685837d7893eec6a46fffc3ad509c2902f65c2ca4143bd6133445546e5a99eb53f
6
+ metadata.gz: 34fde5200edf29f2b18e739aa567904f9bea453df5c5b6ce482e4cf11c17c1615b1fee9e7c45e3a6b89efa23371d2809ddeba29aa2129bf5c2aa3f6b562399fe
7
+ data.tar.gz: d8de9312a5ebb997a8115b75671dd85a4ee952efcd018133297c6335fe4297eca72ef1bca0d0d306d77b4cbe6b6ecf9a747c15d12e7e4250ab06586bfa027832
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -3,6 +3,8 @@
3
3
  # file: omah.rb
4
4
  # title: Offline Mail Helper
5
5
 
6
+ require 'zip'
7
+ require 'nokorexi'
6
8
  require 'dynarex-daily'
7
9
 
8
10
  class Omah
@@ -18,7 +20,8 @@ class Omah
18
20
 
19
21
  x = if File.exists? dailyfile then dailyfile
20
22
  else
21
- 'messages[date]/message(id, tags, from, to, subject, date, txt_filepath, html_filepath)'
23
+ 'messages[date]/message(id, tags, from, to, subject, date, ' \
24
+ + 'txt_filepath, html_filepath, attachment1, attachment2, attachment3)'
22
25
  end
23
26
 
24
27
  @dd = DynarexDaily.new x, {dir_archive: :yearly}
@@ -31,7 +34,8 @@ class Omah
31
34
 
32
35
  subject = msg[:subject]
33
36
  title = subject.gsub(/\W+/,'-')[0,30].sub(/-$/,'')
34
- a = @dd.find_all_by_subject subject
37
+
38
+ a = @dd.all.select {|x| x.subject == subject}
35
39
 
36
40
  ordinal = a.any? ? '.' + a.length.to_s : ''
37
41
  txt_file = title + ordinal + '.txt'
@@ -44,12 +48,55 @@ class Omah
44
48
  txt_filepath = File.join(path, txt_file)
45
49
  html_filepath = File.join(path, html_file)
46
50
 
47
- @dd.create msg.merge(txt_filepath: txt_filepath, \
48
- html_filepath: html_filepath)
49
51
 
50
52
  FileUtils.mkdir_p path
51
- File.write txt_filepath, msg[:body_text]
52
- File.write html_filepath, msg[:body_html]
53
+
54
+ File.write txt_filepath, text_sanitiser(msg[:body_text].to_s)
55
+ File.write html_filepath, html_sanitiser(msg[:body_html].to_s)
56
+
57
+ parts_path = []
58
+
59
+ # save the attachments
60
+ if msg[:attachments].length > 0 then
61
+
62
+ attachment_path = File.join(path, title + ordinal)
63
+ FileUtils.mkdir_p attachment_path
64
+
65
+ if msg[:attachments].length < 4 then
66
+
67
+ msg[:attachments].each.with_index do |x, i|
68
+
69
+ name, buffer = x
70
+ parts_path[i] = File.join(attachment_path, name)
71
+ File.write parts_path[i], buffer
72
+
73
+ end
74
+
75
+ else
76
+
77
+ # make a zip file and add the attachments to it
78
+
79
+ zipfile = File.join(attachment_path, title[0,12].downcase + '.zip')
80
+ parts_path[0] = zipfile
81
+
82
+ Zip::File.open(zipfile, Zip::File::CREATE) do |x|
83
+
84
+ msg[:attachments].each do |filename, buffer|
85
+ x.get_output_stream(filename) {|os| os.write buffer }
86
+ end
87
+
88
+ end
89
+
90
+ end
91
+
92
+ end
93
+
94
+ msg.delete :attachments
95
+
96
+ @dd.create msg.merge(txt_filepath: txt_filepath, \
97
+ html_filepath: html_filepath, attachment1: parts_path[0], \
98
+ attachment2: parts_path[1], attachment3: parts_path[2])
99
+
53
100
 
54
101
  end
55
102
 
@@ -65,5 +112,31 @@ class Omah
65
112
  Date::MONTHNAMES[t.month].downcase[0..2], t.day.to_s]
66
113
 
67
114
  end
115
+
116
+
117
+ def html_sanitiser(s)
118
+
119
+ begin
120
+ Rexle.new s
121
+ s2 = s
122
+ rescue
123
+ doc = Nokorexi.new(s).to_doc
124
+ s2 = doc.xml
125
+ end
126
+
127
+ end
128
+
129
+ def text_sanitiser(s)
130
+
131
+ begin
132
+ Rexle.new "<root>#{s}</root>"
133
+ s2 = s
134
+ rescue
135
+ doc = Nokorexi.new(s).to_doc
136
+ s2 = doc.xml
137
+ end
138
+
139
+ end
140
+
68
141
 
69
142
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omah
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -31,7 +31,7 @@ cert_chain:
31
31
  3LosTxP//qasvjSWNDjmKeTI4/c/fvSDtS5mLXCsxnJ/1Jp4zlO0rZWz0/BgcPFj
32
32
  GUN8SqUlRq5unw==
33
33
  -----END CERTIFICATE-----
34
- date: 2015-05-20 00:00:00.000000000 Z
34
+ date: 2015-05-22 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: dynarex-daily
@@ -39,20 +39,60 @@ dependencies:
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: '0.1'
42
+ version: '0.2'
43
43
  - - ">="
44
44
  - !ruby/object:Gem::Version
45
- version: 0.1.12
45
+ version: 0.2.2
46
46
  type: :runtime
47
47
  prerelease: false
48
48
  version_requirements: !ruby/object:Gem::Requirement
49
49
  requirements:
50
50
  - - "~>"
51
51
  - !ruby/object:Gem::Version
52
- version: '0.1'
52
+ version: '0.2'
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: 0.1.12
55
+ version: 0.2.2
56
+ - !ruby/object:Gem::Dependency
57
+ name: rubyzip
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.1'
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: 1.1.7
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '1.1'
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 1.1.7
76
+ - !ruby/object:Gem::Dependency
77
+ name: nokorexi
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.3'
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: 0.3.1
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - "~>"
91
+ - !ruby/object:Gem::Version
92
+ version: '0.3'
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 0.3.1
56
96
  description:
57
97
  email: james@r0bertson.co.uk
58
98
  executables: []
metadata.gz.sig CHANGED
Binary file