mail_daemon 0.0.5
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 +7 -0
- data/.gitignore +23 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +6 -0
- data/LICENSE +22 -0
- data/LICENSE.txt +22 -0
- data/README.md +51 -0
- data/Rakefile +2 -0
- data/bin/mail_daemon +22 -0
- data/config.yml +27 -0
- data/lib/mail_daemon.rb +71 -0
- data/lib/mail_daemon/email_body_parser.rb +28 -0
- data/lib/mail_daemon/email_handler.rb +109 -0
- data/lib/mail_daemon/email_watcher.rb +155 -0
- data/lib/mail_daemon/encryption.rb +42 -0
- data/lib/mail_daemon/helpers.rb +16 -0
- data/lib/mail_daemon/imap/connection.rb +155 -0
- data/lib/mail_daemon/imap/statuses.rb +17 -0
- data/lib/mail_daemon/imap/watcher.rb +42 -0
- data/lib/mail_daemon/imap_watcher.rb +80 -0
- data/lib/mail_daemon/version.rb +3 -0
- data/lib/public/custom.css +19 -0
- data/lib/public/dashboard.css +105 -0
- data/lib/server.rb +6 -0
- data/lib/views/settings.erb +113 -0
- data/lib/views/stats.erb +100 -0
- data/mail_daemon.gemspec +35 -0
- data/test/lib/order2cb/order_test.rb +20 -0
- data/test/lib/order2cb/version_test.rb +7 -0
- data/test/lib/order2cb_test.rb +25 -0
- data/test/test_helper.rb +3 -0
- metadata +221 -0
data/lib/server.rb
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
7
|
+
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
8
|
+
<title>CaseBlocks Email Watcher</title>
|
9
|
+
|
10
|
+
<!-- Bootstrap -->
|
11
|
+
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
|
12
|
+
<link href="dashboard.css" rel="stylesheet">
|
13
|
+
|
14
|
+
|
15
|
+
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
16
|
+
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
17
|
+
<!--[if lt IE 9]>
|
18
|
+
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
19
|
+
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
20
|
+
<![endif]-->
|
21
|
+
</head>
|
22
|
+
<body>
|
23
|
+
|
24
|
+
<nav class="navbar navbar-inverse navbar-fixed-top">
|
25
|
+
<div class="container-fluid">
|
26
|
+
<div class="navbar-header">
|
27
|
+
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
28
|
+
<span class="sr-only">Toggle navigation</span>
|
29
|
+
<span class="icon-bar"></span>
|
30
|
+
<span class="icon-bar"></span>
|
31
|
+
<span class="icon-bar"></span>
|
32
|
+
</button>
|
33
|
+
<a class="navbar-brand" href="#">CaseBlocks Email Watcher</a>
|
34
|
+
</div>
|
35
|
+
<div id="navbar" class="navbar-collapse collapse">
|
36
|
+
<ul class="nav navbar-nav navbar-right">
|
37
|
+
<li><a href="/">Dashboard</a></li>
|
38
|
+
<li><a href="/settings">Settings</a></li>
|
39
|
+
</ul>
|
40
|
+
<form class="navbar-form navbar-right">
|
41
|
+
<input type="text" class="form-control" placeholder="Search...">
|
42
|
+
</form>
|
43
|
+
</div>
|
44
|
+
</div>
|
45
|
+
</nav>
|
46
|
+
|
47
|
+
<div class="container-fluid">
|
48
|
+
<div class="row">
|
49
|
+
|
50
|
+
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
|
51
|
+
<h1 class="page-header">Dashboard</h1>
|
52
|
+
|
53
|
+
<div class="row placeholders">
|
54
|
+
<div class="col-xs-6 col-sm-3 placeholder">
|
55
|
+
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" width="200" height="200" class="img-responsive" alt="Generic placeholder thumbnail">
|
56
|
+
<h4>Label</h4>
|
57
|
+
<span class="text-muted">Something else</span>
|
58
|
+
</div>
|
59
|
+
<div class="col-xs-6 col-sm-3 placeholder">
|
60
|
+
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" width="200" height="200" class="img-responsive" alt="Generic placeholder thumbnail">
|
61
|
+
<h4>Label</h4>
|
62
|
+
<span class="text-muted">Something else</span>
|
63
|
+
</div>
|
64
|
+
<div class="col-xs-6 col-sm-3 placeholder">
|
65
|
+
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" width="200" height="200" class="img-responsive" alt="Generic placeholder thumbnail">
|
66
|
+
<h4>Label</h4>
|
67
|
+
<span class="text-muted">Something else</span>
|
68
|
+
</div>
|
69
|
+
<div class="col-xs-6 col-sm-3 placeholder">
|
70
|
+
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" width="200" height="200" class="img-responsive" alt="Generic placeholder thumbnail">
|
71
|
+
<h4>Label</h4>
|
72
|
+
<span class="text-muted">Something else</span>
|
73
|
+
</div>
|
74
|
+
</div>
|
75
|
+
|
76
|
+
<h2 class="sub-header">Mailboxes</h2>
|
77
|
+
<div class="table-responsive">
|
78
|
+
<table class="table table-striped">
|
79
|
+
<thead>
|
80
|
+
<tr>
|
81
|
+
<th>Email Address</th>
|
82
|
+
<th>Host</th>
|
83
|
+
<th>Delivery Method</th>
|
84
|
+
</tr>
|
85
|
+
</thead>
|
86
|
+
<tbody>
|
87
|
+
<% @mailboxes.each do |mailbox| %>
|
88
|
+
<tr>
|
89
|
+
<td><%= mailbox[:email] %></td>
|
90
|
+
<td><%= mailbox[:host] %></td>
|
91
|
+
<td><%= mailbox[:delivery_method] %></td>
|
92
|
+
</tr>
|
93
|
+
<% end %>
|
94
|
+
</tbody>
|
95
|
+
</table>
|
96
|
+
</div>
|
97
|
+
</div>
|
98
|
+
</div>
|
99
|
+
</div>
|
100
|
+
|
101
|
+
<!-- Bootstrap core JavaScript
|
102
|
+
================================================== -->
|
103
|
+
<!-- Placed at the end of the document so the pages load faster -->
|
104
|
+
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
|
105
|
+
<script>window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\/script>')</script>
|
106
|
+
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
|
107
|
+
|
108
|
+
|
109
|
+
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
|
110
|
+
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
|
111
|
+
|
112
|
+
</body>
|
113
|
+
</html>
|
data/lib/views/stats.erb
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
7
|
+
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
8
|
+
<title>CaseBlocks Email Watcher</title>
|
9
|
+
|
10
|
+
<!-- Bootstrap -->
|
11
|
+
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
|
12
|
+
<link href="dashboard.css" rel="stylesheet">
|
13
|
+
<link href="custom.css" rel="stylesheet">
|
14
|
+
|
15
|
+
|
16
|
+
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
17
|
+
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
18
|
+
<!--[if lt IE 9]>
|
19
|
+
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
20
|
+
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
21
|
+
<![endif]-->
|
22
|
+
</head>
|
23
|
+
<body>
|
24
|
+
|
25
|
+
<nav class="navbar navbar-inverse navbar-fixed-top">
|
26
|
+
<div class="container-fluid">
|
27
|
+
<div class="navbar-header">
|
28
|
+
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
29
|
+
<span class="sr-only">Toggle navigation</span>
|
30
|
+
<span class="icon-bar"></span>
|
31
|
+
<span class="icon-bar"></span>
|
32
|
+
<span class="icon-bar"></span>
|
33
|
+
</button>
|
34
|
+
<a class="navbar-brand" href="#">CaseBlocks Email Watcher</a>
|
35
|
+
</div>
|
36
|
+
<div id="navbar" class="navbar-collapse collapse">
|
37
|
+
<ul class="nav navbar-nav navbar-right">
|
38
|
+
<li><a href="/">Dashboard</a></li>
|
39
|
+
<li><a href="/reload">Reload Configuration</a></li>
|
40
|
+
</ul>
|
41
|
+
<form class="navbar-form navbar-right">
|
42
|
+
<input type="text" class="form-control" placeholder="Search...">
|
43
|
+
</form>
|
44
|
+
</div>
|
45
|
+
</div>
|
46
|
+
</nav>
|
47
|
+
|
48
|
+
<div class="container-fluid">
|
49
|
+
<div class="row">
|
50
|
+
<div class="col-sm-9 col-md-10 main" style="width: 100%;">
|
51
|
+
<!-- <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main"> -->
|
52
|
+
|
53
|
+
<h2 class="sub-header">Mailboxes</h2>
|
54
|
+
<div class="table-responsive">
|
55
|
+
<table class="table table-striped">
|
56
|
+
<thead>
|
57
|
+
<tr>
|
58
|
+
<th></th>
|
59
|
+
<th>Email Address</th>
|
60
|
+
<th>Host</th>
|
61
|
+
<th>Port</th>
|
62
|
+
<th>SSL</th>
|
63
|
+
<th>Start TLS</th>
|
64
|
+
<th>Messages Processed</th>
|
65
|
+
<th>Last Processed At</th>
|
66
|
+
</tr>
|
67
|
+
</thead>
|
68
|
+
<tbody>
|
69
|
+
<% @mailboxes.each do |mailbox| %>
|
70
|
+
<tr>
|
71
|
+
<td><div class="status-circle <%=mailbox[:status_colour]%>"></td>
|
72
|
+
<td><%= mailbox[:email] %></td>
|
73
|
+
<td><%= mailbox[:host] %></td>
|
74
|
+
<td><%= mailbox[:port] %></td>
|
75
|
+
<td><%= !!mailbox[:ssl] ? "Yes" : "No" %></td>
|
76
|
+
<td><%= mailbox[:start_tls] ? "Yes" : "No" %></td>
|
77
|
+
<td><%= mailbox[:message_count] %></td>
|
78
|
+
<td><%= mailbox[:last_delivered_at] %></td>
|
79
|
+
</tr>
|
80
|
+
<% end %>
|
81
|
+
</tbody>
|
82
|
+
</table>
|
83
|
+
</div>
|
84
|
+
</div>
|
85
|
+
</div>
|
86
|
+
</div>
|
87
|
+
|
88
|
+
<!-- Bootstrap core JavaScript
|
89
|
+
================================================== -->
|
90
|
+
<!-- Placed at the end of the document so the pages load faster -->
|
91
|
+
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
|
92
|
+
<script>window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\/script>')</script>
|
93
|
+
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
|
94
|
+
|
95
|
+
|
96
|
+
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
|
97
|
+
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
|
98
|
+
|
99
|
+
</body>
|
100
|
+
</html>
|
data/mail_daemon.gemspec
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'mail_daemon/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "mail_daemon"
|
8
|
+
spec.version = MailDaemon::VERSION
|
9
|
+
spec.authors = ["EmergeAdapt"]
|
10
|
+
spec.email = ["development@emergeadapt.com"]
|
11
|
+
spec.summary = %q{IMAP account daemon to watch for new mail and to execute a ruby block with data from message.}
|
12
|
+
spec.description = %q{.}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "awesome_print"
|
24
|
+
|
25
|
+
spec.add_dependency 'mysql2'
|
26
|
+
spec.add_dependency 'sidekiq'
|
27
|
+
spec.add_dependency 'mail'
|
28
|
+
# spec.add_dependency 'mail_room'
|
29
|
+
spec.add_dependency 'charlock_holmes' # required for sidekiq delivery
|
30
|
+
spec.add_dependency 'nokogiri'
|
31
|
+
spec.add_dependency 'sinatra'
|
32
|
+
spec.add_dependency 'sanitize'
|
33
|
+
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "minitest/autorun"
|
2
|
+
|
3
|
+
class TestOrder < Minitest::Test
|
4
|
+
def setup
|
5
|
+
@sample = {}
|
6
|
+
@order = Order.new(@sample)
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_that_kitty_can_eat
|
10
|
+
assert_equal "OHAI!", @meme.i_can_has_cheezburger?
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_that_it_will_not_blend
|
14
|
+
refute_match /^no/i, @meme.will_it_blend?
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_that_will_be_skipped
|
18
|
+
skip "test this later"
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
class MessageHandlerTest < MiniTest::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
ENV['CB_API_ENDPOINT'] = 'https://cb.local/'
|
6
|
+
ENV['CB_API_TOKEN'] = '1234'
|
7
|
+
end
|
8
|
+
def test_invalid_construction
|
9
|
+
ENV['AWS_ACCESS_KEY'] = nil
|
10
|
+
ENV['AWS_SECRET_ACCESS_KEY'] = nil
|
11
|
+
ENV['CB_API_ENDPOINT'] = nil
|
12
|
+
ENV['CB_API_TOKEN'] = nil
|
13
|
+
assert_raises(RuntimeError) { mail_daemon::OrderHandler.new }
|
14
|
+
end
|
15
|
+
def test_valid_construction
|
16
|
+
ENV['AWS_ACCESS_KEY'] = 'access'
|
17
|
+
ENV['AWS_SECRET_ACCESS_KEY'] = 'secret'
|
18
|
+
refute_nil mail_daemon::OrderHandler.new
|
19
|
+
end
|
20
|
+
def test_basic_sqs_connectivity
|
21
|
+
oh = mail_daemon::OrderHandler.new
|
22
|
+
result = oh.send_orders
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,221 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mail_daemon
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.5
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- EmergeAdapt
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-04-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: awesome_print
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: mysql2
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sidekiq
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: mail
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: charlock_holmes
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: nokogiri
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: sinatra
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: sanitize
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
description: "."
|
154
|
+
email:
|
155
|
+
- development@emergeadapt.com
|
156
|
+
executables:
|
157
|
+
- mail_daemon
|
158
|
+
extensions: []
|
159
|
+
extra_rdoc_files: []
|
160
|
+
files:
|
161
|
+
- ".gitignore"
|
162
|
+
- ".ruby-gemset"
|
163
|
+
- ".ruby-version"
|
164
|
+
- Gemfile
|
165
|
+
- LICENSE
|
166
|
+
- LICENSE.txt
|
167
|
+
- README.md
|
168
|
+
- Rakefile
|
169
|
+
- bin/mail_daemon
|
170
|
+
- config.yml
|
171
|
+
- lib/mail_daemon.rb
|
172
|
+
- lib/mail_daemon/email_body_parser.rb
|
173
|
+
- lib/mail_daemon/email_handler.rb
|
174
|
+
- lib/mail_daemon/email_watcher.rb
|
175
|
+
- lib/mail_daemon/encryption.rb
|
176
|
+
- lib/mail_daemon/helpers.rb
|
177
|
+
- lib/mail_daemon/imap/connection.rb
|
178
|
+
- lib/mail_daemon/imap/statuses.rb
|
179
|
+
- lib/mail_daemon/imap/watcher.rb
|
180
|
+
- lib/mail_daemon/imap_watcher.rb
|
181
|
+
- lib/mail_daemon/version.rb
|
182
|
+
- lib/public/custom.css
|
183
|
+
- lib/public/dashboard.css
|
184
|
+
- lib/server.rb
|
185
|
+
- lib/views/settings.erb
|
186
|
+
- lib/views/stats.erb
|
187
|
+
- mail_daemon.gemspec
|
188
|
+
- test/lib/order2cb/order_test.rb
|
189
|
+
- test/lib/order2cb/version_test.rb
|
190
|
+
- test/lib/order2cb_test.rb
|
191
|
+
- test/test_helper.rb
|
192
|
+
homepage: ''
|
193
|
+
licenses:
|
194
|
+
- MIT
|
195
|
+
metadata: {}
|
196
|
+
post_install_message:
|
197
|
+
rdoc_options: []
|
198
|
+
require_paths:
|
199
|
+
- lib
|
200
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
201
|
+
requirements:
|
202
|
+
- - ">="
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '0'
|
205
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
206
|
+
requirements:
|
207
|
+
- - ">="
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: '0'
|
210
|
+
requirements: []
|
211
|
+
rubyforge_project:
|
212
|
+
rubygems_version: 2.4.5.1
|
213
|
+
signing_key:
|
214
|
+
specification_version: 4
|
215
|
+
summary: IMAP account daemon to watch for new mail and to execute a ruby block with
|
216
|
+
data from message.
|
217
|
+
test_files:
|
218
|
+
- test/lib/order2cb/order_test.rb
|
219
|
+
- test/lib/order2cb/version_test.rb
|
220
|
+
- test/lib/order2cb_test.rb
|
221
|
+
- test/test_helper.rb
|