Browse Source

Track successful PuSH deliveries

pull/4/head
Eugen Rochko 5 years ago
parent
commit
4a2347da41
4 changed files with 20 additions and 6 deletions
  1. +6
    -0
      app/views/admin/pubsubhubbub/index.html.haml
  2. +2
    -0
      app/workers/pubsubhubbub/delivery_worker.rb
  3. +5
    -0
      db/migrate/20161130142058_add_last_successful_delivery_at_to_subscriptions.rb
  4. +7
    -6
      db/schema.rb

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

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

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

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

Loading…
Cancel
Save