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/15 01:19:04 UTC
[whimsy.git] [1/1] Commit 4b86206: switch to HTTP get for monthly index slices
Commit 4b86206d55fcbd028c3641573c7fff0fea4f68a9:
switch to HTTP get for monthly index slices
Branch: refs/heads/secmail
Author: Sam Ruby <ru...@intertwingly.net>
Committer: Sam Ruby <ru...@intertwingly.net>
Pusher: rubys <ru...@apache.org>
------------------------------------------------------------
www/secmail/server.rb | ++++++++ -------
www/secmail/views/http.js.rb | + -
www/secmail/views/index.js.rb | ++ -
www/secmail/views/index.json.rb | ++++++ -------
------------------------------------------------------------
70 changes: 35 additions, 35 deletions.
------------------------------------------------------------
diff --git a/www/secmail/server.rb b/www/secmail/server.rb
index 403db29..26b7a6c 100644
--- a/www/secmail/server.rb
+++ b/www/secmail/server.rb
@@ -19,12 +19,13 @@
end
# support for fetching previous month's worth of messages
-post '/' do
+get %r{^/(\d{6})$} do |mbox|
+ @mbox = mbox
_json :index
end
# retrieve a single message
-get %r{^/(\d+)/(\w+)/$} do |month, hash|
+get %r{^/(\d{6})/(\w+)/$} do |month, hash|
@message = Mailbox.new(month).headers[hash]
pass unless @message
_html :message
@@ -46,7 +47,7 @@
end
# update a single message
-patch %r{^/(\d+)/(\w+)/$} do |month, hash|
+patch %r{^/(\d{6})/(\w+)/$} do |month, hash|
success = false
Mailbox.update(month) do |headers|
@@ -70,7 +71,7 @@
end
# list of parts for a single message
-get %r{^/(\d+)/(\w+)/_index_$} do |month, hash|
+get %r{^/(\d{6})/(\w+)/_index_$} do |month, hash|
@message = Mailbox.new(month).headers[hash]
pass unless @message
@attachments = @message[:attachments]
@@ -78,21 +79,21 @@
end
# message body for a single message
-get %r{^/(\d+)/(\w+)/_body_$} do |month, hash|
+get %r{^/(\d{6})/(\w+)/_body_$} do |month, hash|
@message = Mailbox.new(month).find(hash)
pass unless @message
_html :body
end
# header data for a single message
-get %r{^/(\d+)/(\w+)/_headers_$} do |month, hash|
+get %r{^/(\d{6})/(\w+)/_headers_$} do |month, hash|
@headers = Mailbox.new(month).headers[hash]
pass unless @headers
_html :headers
end
# a specific attachment for a message
-get %r{^/(\d+)/(\w+)/(.*?)$} do |month, hash, name|
+get %r{^/(\d{6})/(\w+)/(.*?)$} do |month, hash, name|
message = Mailbox.new(month).find(hash)
pass unless message
diff --git a/www/secmail/views/http.js.rb b/www/secmail/views/http.js.rb
index d552344..d7442ff 100644
--- a/www/secmail/views/http.js.rb
+++ b/www/secmail/views/http.js.rb
@@ -119,7 +119,7 @@ def xhr.onreadystatechange()
xhr.open('GET', target, true)
xhr.setRequestHeader("Accept", "application/json") if type == :json
else
- xhr.open('GET', "../#{type}/#{target}", true)
+ xhr.open('GET', target, true)
end
xhr.responseType = type
xhr.send()
diff --git a/www/secmail/views/index.js.rb b/www/secmail/views/index.js.rb
index 2d03bb0..31abb09 100644
--- a/www/secmail/views/index.js.rb
+++ b/www/secmail/views/index.js.rb
@@ -79,7 +79,8 @@ def componentDidUpdate()
# fetch a month's worth of messages
def fetch_month()
- HTTP.post('', mbox: @nextmbox) do |response|
+ console.log @nextmbox
+ HTTP.get("/#{@nextmbox}", :json) do |response|
# update latest mbox
@nextmbox = response.mbox
diff --git a/www/secmail/views/index.json.rb b/www/secmail/views/index.json.rb
index 24d5d40..ed155c9 100644
--- a/www/secmail/views/index.json.rb
+++ b/www/secmail/views/index.json.rb
@@ -1,32 +1,30 @@
-if @mbox =~ /^\d+$/
- # find indicated mailbox in the list of available mailboxes
- available = Dir["#{ARCHIVE}/*.yml"].sort
- index = available.find_index "#{ARCHIVE}/#{@mbox}.yml"
+# find indicated mailbox in the list of available mailboxes
+available = Dir["#{ARCHIVE}/*.yml"].sort
+index = available.find_index "#{ARCHIVE}/#{@mbox}.yml"
- # if found, process it
- if index
- # fetch a list of headers for all messages in the maibox with attachments
- headers = Mailbox.new(@mbox).headers.to_a.select do |id, message|
- message[:attachments] and not message[:status] == :deleted
- end
-
- # extract relevant fields from the headers
- headers.map! do |id, message|
- {
- time: message[:time],
- href: "#{message[:source]}/#{id}/",
- from: message[:from],
- subject: message['Subject']
- }
- end
-
- # select previous mailbox
- mbox = available[index-1].untaint
+# if found, process it
+if index
+ # fetch a list of headers for all messages in the maibox with attachments
+ headers = Mailbox.new(@mbox).headers.to_a.select do |id, message|
+ message[:attachments] and not message[:status] == :deleted
+ end
- # return mailbox name and messages
+ # extract relevant fields from the headers
+ headers.map! do |id, message|
{
- mbox: (File.basename(mbox, '.yml') if index > 0),
- messages: headers.sort_by {|message| message[:time]}.reverse
+ time: message[:time],
+ href: "#{message[:source]}/#{id}/",
+ from: message[:from],
+ subject: message['Subject']
}
end
+
+ # select previous mailbox
+ mbox = available[index-1].untaint
+
+ # return mailbox name and messages
+ {
+ mbox: (File.basename(mbox, '.yml') if index > 0),
+ messages: headers.sort_by {|message| message[:time]}.reverse
+ }
end