diff options
author | ThibG <thib@sitedethib.com> | 2018-08-22 21:35:07 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-22 21:35:07 +0200 |
commit | 8aa58e34bb2b62192a997ac7ea8919b22fc45f80 (patch) | |
tree | abc0ea9862c55c2e114c855b20eb4a35f1141709 /app/services/backup_service.rb | |
parent | 628fca50e20bcf41f206877083fc5ee8789c1088 (diff) | |
parent | e70fc059a9511d43b42c2502514f6220b416cdd5 (diff) |
Merge pull request #665 from ThibG/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'app/services/backup_service.rb')
-rw-r--r-- | app/services/backup_service.rb | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/app/services/backup_service.rb b/app/services/backup_service.rb index da7db6462..4cfa22ab8 100644 --- a/app/services/backup_service.rb +++ b/app/services/backup_service.rb @@ -44,6 +44,7 @@ class BackupService < BaseService Gem::Package::TarWriter.new(gz) do |tar| dump_media_attachments!(tar) dump_outbox!(tar) + dump_likes!(tar) dump_actor!(tar) end end @@ -82,6 +83,8 @@ class BackupService < BaseService actor[:icon][:url] = 'avatar' + File.extname(actor[:icon][:url]) if actor[:icon] actor[:image][:url] = 'header' + File.extname(actor[:image][:url]) if actor[:image] + actor[:outbox] = 'outbox.json' + actor[:likes] = 'likes.json' download_to_tar(tar, account.avatar, 'avatar' + File.extname(account.avatar.path)) if account.avatar.exists? download_to_tar(tar, account.header, 'header' + File.extname(account.header.path)) if account.header.exists? @@ -91,15 +94,30 @@ class BackupService < BaseService tar.add_file_simple('actor.json', 0o444, json.bytesize) do |io| io.write(json) end + end + + def dump_likes!(tar) + collection = serialize(ActivityPub::CollectionPresenter.new(id: 'likes.json', type: :ordered, size: 0, items: []), ActivityPub::CollectionSerializer) + + Status.reorder(nil).joins(:favourites).includes(:account).merge(account.favourites).find_in_batches do |statuses| + statuses.each do |status| + collection[:totalItems] += 1 + collection[:orderedItems] << ActivityPub::TagManager.instance.uri_for(status) + end - tar.add_file_simple('key.pem', 0o444, account.private_key.bytesize) do |io| - io.write(account.private_key) + GC.start + end + + json = Oj.dump(collection) + + tar.add_file_simple('likes.json', 0o444, json.bytesize) do |io| + io.write(json) end end def collection_presenter ActivityPub::CollectionPresenter.new( - id: account_outbox_url(account), + id: 'outbox.json', type: :ordered, size: account.statuses_count, items: [] |