]> cat aescling's git repositories - mastodon.git/commitdiff
Track successful PuSH deliveries
authorEugen Rochko <eugen@zeonfederated.com>
Wed, 30 Nov 2016 14:24:57 +0000 (15:24 +0100)
committerEugen Rochko <eugen@zeonfederated.com>
Wed, 30 Nov 2016 14:24:57 +0000 (15:24 +0100)
app/views/admin/pubsubhubbub/index.html.haml
app/workers/pubsubhubbub/delivery_worker.rb
db/migrate/20161130142058_add_last_successful_delivery_at_to_subscriptions.rb [new file with mode: 0644]
db/schema.rb

index bb897eb895c528b890a05b40100f8a7924a8abeb..ad8cf519831db30fffd9a5a157e9de44cb389500 100644 (file)
@@ -5,6 +5,7 @@
       %th Callback URL
       %th Confirmed
       %th Expires in
+      %th Last delivery
   %tbody
     - @subscriptions.each do |subscription|
       %tr
           - if subscription.confirmed?
             %i.fa.fa-check
         %td= distance_of_time_in_words(Time.now, subscription.expires_at)
+        %td
+          - if subscription.last_successful_delivery_at.nil?
+            %i.fa.fa-times
+          - else
+            = l subscription.last_successful_delivery_at
 
 = will_paginate @subscriptions, pagination_options
index 6d526c2b12a8ba7c33cb71cfe3a03d6649baa880..20c72ce2434beccbb8a0bde55a4d9be562aea056 100644 (file)
@@ -19,6 +19,8 @@ class Pubsubhubbub::DeliveryWorker
                    .post(subscription.callback_url, body: payload)
 
     raise "Delivery failed for #{subscription.callback_url}: HTTP #{response.code}" unless response.code > 199 && response.code < 300
+
+    subscription.touch(:last_successful_delivery_at)
   end
 
   private
diff --git a/db/migrate/20161130142058_add_last_successful_delivery_at_to_subscriptions.rb b/db/migrate/20161130142058_add_last_successful_delivery_at_to_subscriptions.rb
new file mode 100644 (file)
index 0000000..614155b
--- /dev/null
@@ -0,0 +1,5 @@
+class AddLastSuccessfulDeliveryAtToSubscriptions < ActiveRecord::Migration[5.0]
+  def change
+    add_column :subscriptions, :last_successful_delivery_at, :datetime, null: true, default: nil
+  end
+end
index 2c0e6de5bc0fc3c88960db71b24d8d3559904d85..9ba638bfc2c76835cafb4915773cc27583e7623f 100644 (file)
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 20161128103007) do
+ActiveRecord::Schema.define(version: 20161130142058) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"
@@ -199,13 +199,14 @@ ActiveRecord::Schema.define(version: 20161128103007) do
   end
 
   create_table "subscriptions", force: :cascade do |t|
-    t.string   "callback_url", default: "",    null: false
+    t.string   "callback_url",                default: "",    null: false
     t.string   "secret"
     t.datetime "expires_at"
-    t.boolean  "confirmed",    default: false, null: false
-    t.integer  "account_id",                   null: false
-    t.datetime "created_at",                   null: false
-    t.datetime "updated_at",                   null: false
+    t.boolean  "confirmed",                   default: false, null: false
+    t.integer  "account_id",                                  null: false
+    t.datetime "created_at",                                  null: false
+    t.datetime "updated_at",                                  null: false
+    t.datetime "last_successful_delivery_at"
     t.index ["callback_url", "account_id"], name: "index_subscriptions_on_callback_url_and_account_id", unique: true, using: :btree
   end