class Attache::Delete
Public Class Methods
new(app)
click to toggle source
# File lib/attache/delete.rb, line 2 def initialize(app) @app = app end
Public Instance Methods
_call(env, config)
click to toggle source
# File lib/attache/delete.rb, line 6 def _call(env, config) case env['PATH_INFO'] when '/delete' request = Rack::Request.new(env) params = request.params return config.unauthorized unless config.authorized?(params) threads = [] params['paths'].to_s.split("\n").each do |relpath| if Attache.cache threads << Thread.new do Attache.logger.info "DELETING local #{relpath}" cachekey = File.join(request_hostname(env), relpath) Attache.cache.delete(cachekey) end end if config.storage && config.bucket threads << Thread.new do Attache.logger.info "DELETING remote #{relpath}" config.async(:storage_destroy, relpath: relpath) end end if config.backup threads << Thread.new do Attache.logger.info "DELETING backup #{relpath}" config.backup.async(:storage_destroy, relpath: relpath) end end end threads.each(&:join) [200, config.headers_with_cors, []] else @app.call(env) end end