Переглянути джерело

Track successful PuSH deliveries

Eugen Rochko 7 роки тому
батько
коміт
4a2347da41

+ 6 - 0
app/views/admin/pubsubhubbub/index.html.haml

@@ -5,6 +5,7 @@
       %th Callback URL
       %th Confirmed
       %th Expires in
+      %th Last delivery
   %tbody
     - @subscriptions.each do |subscription|
       %tr
@@ -16,5 +17,10 @@
           - 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

+ 2 - 0
app/workers/pubsubhubbub/delivery_worker.rb

@@ -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

+ 5 - 0
db/migrate/20161130142058_add_last_successful_delivery_at_to_subscriptions.rb

@@ -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

+ 7 - 6
db/schema.rb

@@ -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