mailhandler 1.0.19 → 1.0.20

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
  SHA1:
3
- metadata.gz: ecef71152a0c0d0fe88836302a0a1d21943aa982
4
- data.tar.gz: cad86ec06626c41396a2c5cc62c458cc1206b28a
3
+ metadata.gz: 6ad403b028e0aaa2b38fe06175974beff76015b8
4
+ data.tar.gz: d3c7387992cb45fdad2d4e2d8de4bbffb9f77edd
5
5
  SHA512:
6
- metadata.gz: 969fd41cda3bd806293f955545b8b424cbb3da04bbab0353267de32ecc3db2f06f7e09bf4c557e96c8ad03bc1244558582fb2a624002ad57d7b4c6668199d43d
7
- data.tar.gz: 129595a692c4e5bed2cc34f6bba7099f419cec6ae76ffde2049a0e658867b432391b9059ef9eb97efad0f7f714fd3433faa16b00a608004e3124c430d905e9b9
6
+ metadata.gz: 76bf22bb22a36ee53fd8a67356b9192f0e6ecb491816b55fbfaab48bbd4bbdbc1d85f4e0374852e6a65960badc025101cb17121995acdbf049c5cc5329bf2c31
7
+ data.tar.gz: 097b7e17cef92ecefdfd69b431efcb71ce3d76fc269bbac299c8d4ef370910119e0c3688b190ee891888ffde76ceebd22d91b46a20b73fbba4b8f6a1d7405efa
@@ -5,15 +5,45 @@ module MailHandler
5
5
 
6
6
  module Receiving
7
7
 
8
+ module FileHandling
9
+
10
+ # if file exists, execute file operation, otherwise return default return value when it doesn't
11
+ def access_file(file, default_return = false, &block)
12
+
13
+ if File.exists? file
14
+
15
+ begin
16
+
17
+ block.call
18
+
19
+ rescue => e
20
+
21
+ raise e if File.exists? file
22
+ default_return
23
+
24
+ end
25
+
26
+ else
27
+
28
+ default_return
29
+
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+
8
36
  class FileList
9
37
 
10
- def self.get(pattern)
38
+ include FileHandling
11
39
 
12
- Dir.glob(pattern).map { |file| File.absolute_path(file) }
40
+ def get(pattern)
41
+
42
+ Dir.glob(pattern)
13
43
 
14
44
  end
15
45
 
16
- def self.sort(files)
46
+ def sort(files)
17
47
 
18
48
  swapped = true
19
49
  j = 0
@@ -25,7 +55,10 @@ module MailHandler
25
55
 
26
56
  (files.size - j).times do |i|
27
57
 
28
- if File.new(files[i]).ctime < File.new(files[i + 1]).ctime
58
+ file1 = access_file(files[i], false) { File.new(files[i]).ctime }
59
+ file2 = access_file(files[i+1], false) { File.new(files[i+1]).ctime }
60
+
61
+ if file1 && file2 && file1 < file2
29
62
  tmp = files[i]
30
63
  files[i] = files[i + 1]
31
64
  files[i + 1] = tmp
@@ -1,7 +1,7 @@
1
1
  require 'mail'
2
2
  require_relative 'base.rb'
3
3
  require_relative '../errors'
4
- require_relative 'file_filter/filter.rb'
4
+ require_relative 'filelist/filter.rb'
5
5
 
6
6
  module MailHandler
7
7
 
@@ -9,6 +9,8 @@ module MailHandler
9
9
 
10
10
  class FolderChecker < Checker
11
11
 
12
+ include FileHandling
13
+
12
14
  # folders in which emails will be searched for and managed
13
15
  attr_accessor :inbox_folder,
14
16
  :archive_folder
@@ -31,7 +33,7 @@ module MailHandler
31
33
 
32
34
  unless email_files.empty?
33
35
 
34
- @found_emails = read_found_emails(email_files, search_options[:count])
36
+ @found_emails = parse_email_from_files(email_files, search_options[:count])
35
37
  move_files(email_files) if search_options[:archive]
36
38
 
37
39
  end
@@ -57,17 +59,12 @@ module MailHandler
57
59
 
58
60
  end
59
61
 
60
- def read_found_emails(files, count)
61
-
62
- files.first(count).map { |file| Mail.read(file ) }
63
-
64
- end
65
-
66
62
  # find files by FILE_SEARCH_CLASSES options
67
63
  # this will ignore filter criteria options which can't be done on files directly
68
64
  def find_files(options)
69
65
 
70
- files = FileList.get(search_pattern)
66
+ file_list = FileList.new
67
+ files = file_list.get(search_pattern)
71
68
 
72
69
  options.each do |key, value|
73
70
 
@@ -75,30 +72,45 @@ module MailHandler
75
72
 
76
73
  end
77
74
 
78
- FileList.sort(files)
75
+ file_list.sort(files)
79
76
 
80
77
  end
81
78
 
82
79
  def move_files(files)
83
80
 
84
- files.each do |file|
81
+ files.each { |file| (inbox_folder == archive_folder)? delete_file(file) : archive_file(file) }
82
+
83
+ end
84
+
85
+ def parse_email_from_files(files, count)
86
+
87
+ read_files(files, count).map { |email_string| Mail.read_from_string(email_string) }
88
+
89
+ end
85
90
 
86
- file = File.basename(file)
87
- (inbox_folder == archive_folder)? delete_file(file) : archive_file(file)
91
+ def read_files(files, count)
92
+
93
+ file_contents = []
94
+ files.first(count).each do |file|
95
+
96
+ file_content = access_file(file, nil) { File.read(file ) }
97
+ file_contents << file_content unless file_content.nil?
88
98
 
89
99
  end
90
100
 
101
+ file_contents
102
+
91
103
  end
92
104
 
93
105
  def archive_file(file)
94
106
 
95
- FileUtils.mv("#{inbox_folder}/#{file}", "#{archive_folder}/#{file}")
107
+ access_file(file) { FileUtils.mv("#{inbox_folder}/#{File.basename(file)}", "#{archive_folder}/#{File.basename(file)}") }
96
108
 
97
109
  end
98
110
 
99
111
  def delete_file(file)
100
112
 
101
- FileUtils.rm_r "#{inbox_folder}/#{file}", :force => false
113
+ access_file(file) { FileUtils.rm_r "#{inbox_folder}/#{File.basename(file)}", :force => false }
102
114
 
103
115
  end
104
116
 
@@ -1,5 +1,5 @@
1
1
  module MailHandler
2
2
 
3
- VERSION = '1.0.19'
3
+ VERSION = '1.0.20'
4
4
 
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailhandler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.19
4
+ version: 1.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Balos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-28 00:00:00.000000000 Z
11
+ date: 2016-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mail
@@ -62,8 +62,8 @@ files:
62
62
  - lib/mailhandler/errors.rb
63
63
  - lib/mailhandler/receiver.rb
64
64
  - lib/mailhandler/receiving/base.rb
65
- - lib/mailhandler/receiving/file_filter/base.rb
66
- - lib/mailhandler/receiving/file_filter/filter.rb
65
+ - lib/mailhandler/receiving/filelist/base.rb
66
+ - lib/mailhandler/receiving/filelist/filter.rb
67
67
  - lib/mailhandler/receiving/folder.rb
68
68
  - lib/mailhandler/receiving/imap.rb
69
69
  - lib/mailhandler/receiving/notification/console.rb