From 0a636b2397c884709a3e8c5c39fa5908f7a16f77 Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Mon, 21 Apr 2014 18:30:25 -0700 Subject: [PATCH] code to delete thumbnails and screenshots --- models/site.rb | 46 ++++++++++++++++++++++++++++++++---- workers/screenshot_worker.rb | 3 +-- workers/thumbnail_worker.rb | 3 +-- 3 files changed, 44 insertions(+), 8 deletions(-) diff --git a/models/site.rb b/models/site.rb index 2b19c68a..9badbb11 100644 --- a/models/site.rb +++ b/models/site.rb @@ -52,6 +52,9 @@ class Site < Sequel::Model LOSSLESS_IMAGE_REGEX = /png|bmp|gif/ LOSSY_IMAGE_REGEX = /jpg|jpeg/ HTML_REGEX = /htm|html/ + + SCREENSHOT_RESOLUTIONS = ['235x141', '105x63', '270x162'] + THUMBNAIL_RESOLUTIONS = ['105x63'] many_to_one :server @@ -180,7 +183,7 @@ class Site < Sequel::Model FileUtils.mv uploaded.path, file_path(filename) File.chmod(0640, file_path(filename)) - ext = File.extname(filename).gsub('.', '') + ext = File.extname(filename).gsub(/^./, '') if ext.match HTML_REGEX ScreenshotWorker.perform_async values[:username], filename @@ -218,8 +221,13 @@ class Site < Sequel::Model begin FileUtils.rm file_path(filename) rescue Errno::ENOENT - return false end + + ext = File.extname(filename).gsub(/^./, '') + + screenshots_delete(filename) if ext.match HTML_REGEX + thumbnails_delete(filename) if ext.match IMAGE_REGEX + true end @@ -369,6 +377,28 @@ class Site < Sequel::Model values[:title] || values[:username] end + def screenshots_delete(filename) + SCREENSHOT_RESOLUTIONS.each do |res| + begin + FileUtils.rm screenshot_path(filename, res) + rescue Errno::ENOENT + end + end + end + + def thumbnails_delete(filename) + THUMBNAIL_RESOLUTIONS.each do |res| + begin + FileUtils.rm thumbnail_path(filename, res) + rescue Errno::ENOENT + end + end + end + + def screenshot_path(filename, resolution) + File.join(SCREENSHOTS_ROOT, values[:username], "#{filename}.#{resolution}.jpg") + end + def screenshot_exists?(filename, resolution) File.exist? File.join(SCREENSHOTS_ROOT, values[:username], "#{filename}.#{resolution}.jpg") end @@ -377,9 +407,17 @@ class Site < Sequel::Model "#{SCREENSHOTS_URL_ROOT}/#{values[:username]}/#{filename}.#{resolution}.jpg" end - def thumbnail_exists?(filename, resolution) + def thumbnail_path(filename, resolution) ext = File.extname(filename).gsub('.', '').match(LOSSY_IMAGE_REGEX) ? 'jpg' : 'png' - File.exist?(File.join(THUMBNAILS_ROOT, values[:username], "#{filename}.#{resolution}.#{ext}")) + File.join THUMBNAILS_ROOT, values[:username], "#{filename}.#{resolution}.#{ext}" + end + + def thumbnail_exists?(filename, resolution) + File.exist? thumbnail_path(filename, resolution) + end + + def thumbnail_delete(filename, resolution) + File.rm thumbnail_path(filename, resolution) end def thumbnail_url(filename, resolution) diff --git a/workers/screenshot_worker.rb b/workers/screenshot_worker.rb index a954c5b4..5610eb5e 100644 --- a/workers/screenshot_worker.rb +++ b/workers/screenshot_worker.rb @@ -27,7 +27,6 @@ module Phantomjs end class ScreenshotWorker - REQUIRED_RESOLUTIONS = ['235x141', '105x63', '270x162'] SCREENSHOTS_PATH = File.join DIR_ROOT, 'public', 'site_screenshots' include Sidekiq::Worker sidekiq_options queue: :screenshots, retry: 3, backtrace: true @@ -82,7 +81,7 @@ class ScreenshotWorker user_screenshots_path = File.join SCREENSHOTS_PATH, username FileUtils.mkdir_p user_screenshots_path - REQUIRED_RESOLUTIONS.each do |res| + Site::SCREENSHOT_RESOLUTIONS.each do |res| img.scale(*res.split('x').collect {|r| r.to_i}).write(File.join(user_screenshots_path, "#{filename}.#{res}.jpg")) { self.quality = 90 } diff --git a/workers/thumbnail_worker.rb b/workers/thumbnail_worker.rb index 804b15b2..d09881c4 100644 --- a/workers/thumbnail_worker.rb +++ b/workers/thumbnail_worker.rb @@ -1,7 +1,6 @@ require 'RMagick' class ThumbnailWorker - REQUIRED_RESOLUTIONS = ['105x63'] THUMBNAILS_PATH = File.join DIR_ROOT, 'public', 'site_thumbnails' include Sidekiq::Worker sidekiq_options queue: :thumbnails, retry: 3, backtrace: true @@ -14,7 +13,7 @@ class ThumbnailWorker user_thumbnails_path = File.join THUMBNAILS_PATH, username FileUtils.mkdir_p user_thumbnails_path - REQUIRED_RESOLUTIONS.each do |res| + Site::THUMBNAIL_RESOLUTIONS.each do |res| resimg = img.resize_to_fit(*res.split('x').collect {|r| r.to_i}) format = File.extname(filename).gsub('.', '')