Sha256: 5bf467987baf39c31f9cad0c0c4cb1be33d82ef6649ec411aeea772e3343125c
Contents?: true
Size: 1.57 KB
Versions: 1
Compression:
Stored size: 1.57 KB
Contents
module SnapshotInspector class Snapshots::MailController < ApplicationController helper_method :part_query rescue_from Snapshot::NotFound, with: :snapshot_not_found def show @snapshot = Snapshot.find(params[:slug]) @email = @snapshot.message if params[:format] == "eml" send_data @email.to_s, filename: "#{@snapshot.mailer_name}##{@snapshot.action_name}.eml" else @part = find_preferred_part(request.format, Mime[:html], Mime[:text]) render :show, formats: [:html] end end def raw @snapshot = Snapshot.find(params[:slug]) @email = @snapshot.message part_type = Mime::Type.lookup(params[:part] || "text/html") if (part = find_part(part_type)) response.content_type = part_type render plain: part.respond_to?(:decoded) ? part.decoded : part else raise AbstractController::ActionNotFound, "Email part `#{part_type}` not found in a snapshot #{@snapshot.context.test_case_name}##{@snapshot.context.method_name}" end end private def find_preferred_part(*formats) formats.each do |format| if (part = @email.find_first_mime_type(format)) return part end end if formats.any? { |f| @email.mime_type == f } @email end end def find_part(format) if (part = @email.find_first_mime_type(format)) part elsif @email.mime_type == format @email end end def part_query(mime_type) request.query_parameters.merge(part: mime_type).to_query end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
snapshot_inspector-0.1.1 | app/controllers/snapshot_inspector/snapshots/mail_controller.rb |