Browse Source

Add simple admin overview of PuSH subscriptions

closed-social-v3
Eugen Rochko 7 years ago
parent
commit
27fc49d745
9 changed files with 97 additions and 0 deletions
  1. +1
    -0
      app/assets/stylesheets/application.scss
  2. +25
    -0
      app/assets/stylesheets/tables.scss
  3. +11
    -0
      app/controllers/admin/pubsubhubbub_controller.rb
  4. +4
    -0
      app/controllers/application_controller.rb
  5. +2
    -0
      app/helpers/admin/pubsubhubbub_helper.rb
  6. +20
    -0
      app/views/admin/pubsubhubbub/index.html.haml
  7. +4
    -0
      config/routes.rb
  8. +15
    -0
      spec/controllers/admin/pubsubhubbub_controller_spec.rb
  9. +15
    -0
      spec/helpers/admin/pubsubhubbub_helper_spec.rb

+ 1
- 0
app/assets/stylesheets/application.scss View File

@ -234,3 +234,4 @@ body {
@import 'stream_entries';
@import 'components';
@import 'about';
@import 'tables';

+ 25
- 0
app/assets/stylesheets/tables.scss View File

@ -0,0 +1,25 @@
.table {
width: 100%;
max-width: 100%;
border-spacing: 0;
border-collapse: collapse;
th, td {
padding: 8px;
line-height: 1.42857143;
vertical-align: top;
border-top: 1px solid #ddd;
text-align: left;
}
& > thead > tr > th {
vertical-align: bottom;
border-bottom: 2px solid #ddd;
border-top: 0;
font-weight: 500;
}
}
samp {
font-family: 'Roboto Mono', monospace;
}

+ 11
- 0
app/controllers/admin/pubsubhubbub_controller.rb View File

@ -0,0 +1,11 @@
# frozen_string_literal: true
class Admin::PubsubhubbubController < ApplicationController
before_action :require_admin!
layout 'public'
def index
@subscriptions = Subscription.includes(:account).paginate(page: params[:page], per_page: 40)
end
end

+ 4
- 0
app/controllers/application_controller.rb View File

@ -31,6 +31,10 @@ class ApplicationController < ActionController::Base
I18n.locale = I18n.default_locale
end
def require_admin!
redirect_to root_path unless current_user&.admin?
end
protected
def not_found

+ 2
- 0
app/helpers/admin/pubsubhubbub_helper.rb View File

@ -0,0 +1,2 @@
module Admin::PubsubhubbubHelper
end

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

@ -0,0 +1,20 @@
%table.table
%thead
%tr
%th Topic
%th Callback URL
%th Confirmed
%th Expires in
%tbody
- @subscriptions.each do |subscription|
%tr
%td
%samp= subscription.account.acct
%td
%samp= subscription.callback_url
%td
- if subscription.confirmed?
%i.fa.fa-check
%td= distance_of_time_in_words(Time.now, subscription.expires_at)
= will_paginate @subscriptions, pagination_options

+ 4
- 0
config/routes.rb View File

@ -44,6 +44,10 @@ Rails.application.routes.draw do
resources :media, only: [:show]
resources :tags, only: [:show]
namespace :admin do
resources :pubsubhubbub, only: [:index]
end
namespace :api do
# PubSubHubbub outgoing subscriptions
resources :subscriptions, only: [:show]

+ 15
- 0
spec/controllers/admin/pubsubhubbub_controller_spec.rb View File

@ -0,0 +1,15 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe Admin::PubsubhubbubController, type: :controller do
describe 'GET #index' do
before do
sign_in :user, Fabricate(:user, admin: true)
end
it 'returns http success' do
get :index
expect(response).to have_http_status(:success)
end
end
end

+ 15
- 0
spec/helpers/admin/pubsubhubbub_helper_spec.rb View File

@ -0,0 +1,15 @@
require 'rails_helper'
# Specs in this file have access to a helper object that includes
# the Admin::PubsubhubbubHelper. For example:
#
# describe Admin::PubsubhubbubHelper do
# describe "string concat" do
# it "concats two strings with spaces" do
# expect(helper.concat_strings("this","that")).to eq("this that")
# end
# end
# end
RSpec.describe Admin::PubsubhubbubHelper, type: :helper do
pending "add some examples to (or delete) #{__FILE__}"
end

Loading…
Cancel
Save