Set a specific S3 expiration time so that files can be cached

master
Eugen Rochko 8 years ago
parent 80c44ed9c1
commit 24e692b0cf
  1. 4
      app/helpers/application_helper.rb
  2. 2
      app/helpers/stream_entries_helper.rb
  3. 2
      app/views/accounts/_grid_card.html.haml
  4. 4
      app/views/accounts/_header.html.haml
  5. 2
      app/views/accounts/show.atom.ruby
  6. 4
      app/views/api/v1/accounts/show.rabl
  7. 4
      app/views/api/v1/media/create.rabl
  8. 4
      app/views/api/v1/statuses/_media.rabl
  9. 2
      app/views/stream_entries/_status.html.haml
  10. 2
      app/views/stream_entries/show.html.haml

@ -5,7 +5,7 @@ module ApplicationHelper
current_page?(path) ? 'active' : '' current_page?(path) ? 'active' : ''
end end
def id_paginate(path, per_page, collection) def s3_expiry
# todo Time.zone.now.beginning_of_day.since 25.hours
end end
end end

@ -6,7 +6,7 @@ module StreamEntriesHelper
end end
def avatar_for_status_url(status) def avatar_for_status_url(status)
status.reblog? ? status.reblog.account.avatar.expiring_url(3600, :original) : status.account.avatar.expiring_url(3600, :original) status.reblog? ? status.reblog.account.avatar.expiring_url(s3_expiry, :original) : status.account.avatar.expiring_url(s3_expiry, :original)
end end
def entry_classes(status, is_predecessor, is_successor, include_threads) def entry_classes(status, is_predecessor, is_successor, include_threads)

@ -1,6 +1,6 @@
.account-grid-card .account-grid-card
.account-grid-card__header .account-grid-card__header
.avatar= image_tag account.avatar.expiring_url(3600, :original) .avatar= image_tag account.avatar.expiring_url(s3_expiry, :original)
.name .name
= link_to TagManager.instance.url_for(account) do = link_to TagManager.instance.url_for(account) do
%span.display_name= display_name(account) %span.display_name= display_name(account)

@ -1,4 +1,4 @@
.card{ style: "background-image: url(#{@account.header.expiring_url(3600, :original)})" } .card{ style: "background-image: url(#{@account.header.expiring_url(s3_expiry, :original)})" }
- if user_signed_in? && current_account.id != @account.id - if user_signed_in? && current_account.id != @account.id
.controls .controls
- if current_account.following?(@account) - if current_account.following?(@account)
@ -6,7 +6,7 @@
- else - else
= link_to t('accounts.follow'), follow_account_path(@account), data: { method: :post }, class: 'button' = link_to t('accounts.follow'), follow_account_path(@account), data: { method: :post }, class: 'button'
.avatar= image_tag @account.avatar.expiring_url(3600, :original) .avatar= image_tag @account.avatar.expiring_url(s3_expiry, :original)
%h1.name %h1.name
= display_name(@account) = display_name(@account)
%small= "@#{@account.username}" %small= "@#{@account.username}"

@ -6,7 +6,7 @@ Nokogiri::XML::Builder.new do |xml|
title xml, @account.display_name title xml, @account.display_name
subtitle xml, @account.note subtitle xml, @account.note
updated_at xml, stream_updated_at updated_at xml, stream_updated_at
logo xml, full_asset_url(@account.avatar.expiring_url(3600, :original)) logo xml, full_asset_url(@account.avatar.expiring_url(s3_expiry, :original))
author(xml) do author(xml) do
include_author xml, @account include_author xml, @account

@ -4,8 +4,8 @@ attributes :id, :username, :acct, :display_name
node(:note) { |account| Formatter.instance.simplified_format(account) } node(:note) { |account| Formatter.instance.simplified_format(account) }
node(:url) { |account| TagManager.instance.url_for(account) } node(:url) { |account| TagManager.instance.url_for(account) }
node(:avatar) { |account| full_asset_url(account.avatar.expiring_url(3600, :original)) } node(:avatar) { |account| full_asset_url(account.avatar.expiring_url(s3_expiry, :original)) }
node(:header) { |account| full_asset_url(account.header.expiring_url(3600, :original)) } node(:header) { |account| full_asset_url(account.header.expiring_url(s3_expiry, :original)) }
node(:followers_count) { |account| defined?(@followers_counts_map) ? (@followers_counts_map[account.id] || 0) : (account.try(:followers_count) || account.followers.count) } node(:followers_count) { |account| defined?(@followers_counts_map) ? (@followers_counts_map[account.id] || 0) : (account.try(:followers_count) || account.followers.count) }
node(:following_count) { |account| defined?(@following_counts_map) ? (@following_counts_map[account.id] || 0) : (account.try(:following_count) || account.following.count) } node(:following_count) { |account| defined?(@following_counts_map) ? (@following_counts_map[account.id] || 0) : (account.try(:following_count) || account.following.count) }
node(:statuses_count) { |account| defined?(@statuses_counts_map) ? (@statuses_counts_map[account.id] || 0) : (account.try(:statuses_count) || account.statuses.count) } node(:statuses_count) { |account| defined?(@statuses_counts_map) ? (@statuses_counts_map[account.id] || 0) : (account.try(:statuses_count) || account.statuses.count) }

@ -1,5 +1,5 @@
object @media object @media
attribute :id, :type attribute :id, :type
node(:url) { |media| full_asset_url(media.file.expiring_url(3600, :original)) } node(:url) { |media| full_asset_url(media.file.expiring_url(s3_expiry, :original)) }
node(:preview_url) { |media| full_asset_url(media.file.expiring_url(3600, :small)) } node(:preview_url) { |media| full_asset_url(media.file.expiring_url(s3_expiry, :small)) }
node(:text_url) { |media| medium_url(media) } node(:text_url) { |media| medium_url(media) }

@ -1,4 +1,4 @@
attributes :id, :remote_url, :type attributes :id, :remote_url, :type
node(:url) { |media| full_asset_url(media.file.expiring_url(3600, :original)) } node(:url) { |media| full_asset_url(media.file.expiring_url(s3_expiry, :original)) }
node(:preview_url) { |media| full_asset_url(media.file.expiring_url(3600, :small)) } node(:preview_url) { |media| full_asset_url(media.file.expiring_url(s3_expiry, :small)) }

@ -34,7 +34,7 @@
- if (status.reblog? ? status.reblog : status).media_attachments.size > 0 - if (status.reblog? ? status.reblog : status).media_attachments.size > 0
%ul.media-attachments %ul.media-attachments
- (status.reblog? ? status.reblog : status).media_attachments.each do |media| - (status.reblog? ? status.reblog : status).media_attachments.each do |media|
%li.transparent-background= link_to '', media.file.expiring_url(3600, :original), style: "background-image: url(#{media.file.expiring_url(3600, :small)})", target: '_blank' %li.transparent-background= link_to '', media.file.expiring_url(s3_expiry, :original), style: "background-image: url(#{media.file.expiring_url(s3_expiry, :small)})", target: '_blank'
- if include_threads - if include_threads
= render partial: 'status', collection: @descendants, as: :status, locals: { is_successor: true } = render partial: 'status', collection: @descendants, as: :status, locals: { is_successor: true }

@ -7,7 +7,7 @@
%meta{ name: 'og:title', content: "#{@account.username} on #{Rails.configuration.x.local_domain}" }/ %meta{ name: 'og:title', content: "#{@account.username} on #{Rails.configuration.x.local_domain}" }/
%meta{ name: 'og:article:author', content: @account.username }/ %meta{ name: 'og:article:author', content: @account.username }/
%meta{ name: 'og:description', content: @stream_entry.activity.content }/ %meta{ name: 'og:description', content: @stream_entry.activity.content }/
%meta{ name: 'og:image', content: @stream_entry.activity.is_a?(Status) && @stream_entry.activity.media_attachments.size > 0 ? full_asset_url(@stream_entry.activity.media_attachments.first.file.expiring_url(3600, :small)) : full_asset_url(@account.avatar.expiring_url(3600, :original)) }/ %meta{ name: 'og:image', content: @stream_entry.activity.is_a?(Status) && @stream_entry.activity.media_attachments.size > 0 ? full_asset_url(@stream_entry.activity.media_attachments.first.file.expiring_url(s3_expiry, :small)) : full_asset_url(@account.avatar.expiring_url(s3_expiry, :original)) }/
.activity-stream.activity-stream-headless .activity-stream.activity-stream-headless
= render partial: @type, locals: { @type.to_sym => @stream_entry.activity, include_threads: true } = render partial: @type, locals: { @type.to_sym => @stream_entry.activity, include_threads: true }

Loading…
Cancel
Save