about summary refs log tree commit diff
path: root/app/controllers/settings/exports_controller.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-03-19 20:29:41 +0100
committerEugen Rochko <eugen@zeonfederated.com>2017-03-19 20:29:41 +0100
commit56d998cbdbf9743ced5a77895b902ccf33b36332 (patch)
tree616546158b2c7098b28efc3ffc7c4e6435bf71a0 /app/controllers/settings/exports_controller.rb
parent08b96f1b9f419ab250f24f3828db28a247ef11ac (diff)
Export follow/block lists as CSV
Diffstat (limited to 'app/controllers/settings/exports_controller.rb')
-rw-r--r--app/controllers/settings/exports_controller.rb32
1 files changed, 31 insertions, 1 deletions
diff --git a/app/controllers/settings/exports_controller.rb b/app/controllers/settings/exports_controller.rb
index d4ecb6e8a..4fcec5322 100644
--- a/app/controllers/settings/exports_controller.rb
+++ b/app/controllers/settings/exports_controller.rb
@@ -1,16 +1,46 @@
 # frozen_string_literal: true
 
+require 'csv'
+
 class Settings::ExportsController < ApplicationController
   layout 'admin'
 
   before_action :authenticate_user!
   before_action :set_account
 
-  def show; end
+  def show
+    @total_storage = current_account.media_attachments.sum(:file_file_size)
+    @total_follows = current_account.following.count
+    @total_blocks  = current_account.blocking.count
+  end
+
+  def download_following_list
+    @accounts = current_account.following
+
+    respond_to do |format|
+      format.csv { render text: accounts_list_to_csv(@accounts) }
+    end
+  end
+
+  def download_blocking_list
+    @accounts = current_account.blocking
+
+    respond_to do |format|
+      format.csv { render text: accounts_list_to_csv(@accounts) }
+    end
+  end
 
   private
 
   def set_account
     @account = current_user.account
   end
+
+  def accounts_list_to_csv(list)
+    CSV.generate do |csv|
+      list.each do |account|
+        csv << [(account.local? ? "#{account.username}@#{Rails.configuration.x.local_domain}" : account.acct)]
+      end
+    end
+  end
 end