You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by Sam Ruby <ru...@apache.org> on 2015/12/13 16:14:51 UTC

[whimsy.git] [4/37] Commit 8a50482: rough in a server

Commit 8a50482042c219ddc805db104c55e9ea671df09a:
    rough in a server


Branch: refs/heads/secmail
Author: Sam Ruby <ru...@intertwingly.net>
Committer: Sam Ruby <ru...@intertwingly.net>
Pusher: rubys <ru...@apache.org>

------------------------------------------------------------
Gemfile                                                      | +++++++++++ 
Rakefile                                                     | ++++++++++++++ 
config.ru                                                    | +++++ 
server.rb                                                    | +++++++++++ 
views/index.html.rb                                          | +++++++++++++++ 
------------------------------------------------------------
67 changes: 67 additions, 0 deletions.
------------------------------------------------------------


diff --git a/Gemfile b/Gemfile
index 8a27d17..3206146 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,2 +1,13 @@
+source 'https://rubygems.org'
+
 gem 'mail'
+gem 'rake'
 gem 'zip'
+gem 'whimsy-asf'
+gem 'sinatra'
+gem 'wunderbar'
+
+group :demo do
+  gem 'listen'
+  gem 'puma'
+end
diff --git a/Rakefile b/Rakefile
index 6e2498c..1cfaa07 100644
--- a/Rakefile
+++ b/Rakefile
@@ -1,3 +1,5 @@
+require_relative 'config'
+
 verbose false
 
 task :default do
@@ -21,3 +23,15 @@ desc 'Fetch and parse emails'
 task :fetch => :bundle do
   ruby 'parsemail.rb', '--fetch'
 end
+
+desc 'WebServer that provides an interface to explore emails'
+task :server => :bundle do
+  require 'whimsy/asf/config'
+  ENV['RACK_ENV']='development'
+  require 'wunderbar/listen'
+end
+
+desc 'remove all parsed yaml files'
+task :clean do
+  rm_rf Dir["#{ARCHIVE}/*.yml"]
+end
diff --git a/config.ru b/config.ru
new file mode 100644
index 0000000..cd11ae0
--- /dev/null
+++ b/config.ru
@@ -0,0 +1,5 @@
+require File.expand_path('../server.rb', __FILE__)
+
+require 'whimsy/asf/rack'
+
+run Sinatra::Application
diff --git a/server.rb b/server.rb
new file mode 100644
index 0000000..b04a976
--- /dev/null
+++ b/server.rb
@@ -0,0 +1,22 @@
+require 'whimsy/asf'
+require 'wunderbar/sinatra'
+
+require_relative 'config'
+
+def load_mbox(file)
+  messages = YAML.load_file(file)
+  messages.delete :mtime
+  source = File.basename(file, '.yml')
+  messages.each do |key, value|
+    value[:source]=source
+  end
+end
+
+get '/' do
+  @messages = load_mbox(Dir["#{ARCHIVE}/*.yml"].sort.last)
+  @messages.merge! load_mbox(Dir["#{ARCHIVE}/*.yml"].sort[-2])
+
+  @messages = @messages.sort_by {|id, message| message[:time]}.reverse
+
+  _html :index
+end
diff --git a/views/index.html.rb b/views/index.html.rb
new file mode 100644
index 0000000..e2ca141
--- /dev/null
+++ b/views/index.html.rb
@@ -0,0 +1,15 @@
+_html do
+  _table do
+    @messages.each do |id, description|
+      next unless description[:attachments]
+
+      _tr_ do
+        _td! do
+          _a description[:time], href: "msg/#{description[:source]}/#{id}"
+        end 
+        _td description[:name]
+        _td description['Subject']
+      end
+    end
+  end
+end