class Ckeditor::AssetResponse

def asset_url(relative_url_root)

def asset_url(relative_url_root)
  url = Ckeditor::Utils.escape_single_quotes(asset.url_content)
  if URI(url).relative?
    "#{relative_url_root}#{url}"
  else
    url
  end
end

def ckeditor?

def ckeditor?
  !params[:CKEditor].blank?
end

def current_mode

def current_mode
  @current_mode ||= extract_mode
end

def data

def data
  @data ||= read_data
end

def error_message

def error_message
  Ckeditor::Utils.escape_single_quotes(asset.errors.full_messages.first)
end

def errors

def errors
  send("errors_#{current_mode}")
end

def errors_ckeditor

def errors_ckeditor
  {
    html: javascript_tag("#{FUNCTION}(#{params[:CKEditorFuncNum]}, null, '#{error_message}');")
  }
end

def errors_default

def errors_default
  {
    json: { message: error_message }.to_json
  }
end

def errors_json

def errors_json
  {
    json: { uploaded: 0, error: { message: error_message } }.to_json
  }
end

def extract_mode

def extract_mode
  if json?
    :json
  elsif ckeditor?
    :ckeditor
  else
    :default
  end
end

def file

def file
  !(ckeditor? || json?) ? params[:qqfile] : params[:upload]
end

def initialize(asset, request)

def initialize(asset, request)
  @asset = asset
  @request = request
  @params = request.params
end

def json?

def json?
  params[:responseType] == JSON_TYPE
end

def read_data

def read_data
  data = Ckeditor::Http.normalize_param(file, request)
  return if data.size.zero? || data.original_filename.blank?
  data
end

def success(relative_url_root = nil)

def success(relative_url_root = nil)
  send("success_#{current_mode}", relative_url_root)
end

def success_ckeditor(relative_url_root = nil)

def success_ckeditor(relative_url_root = nil)
  {
    html: javascript_tag("#{FUNCTION}(#{params[:CKEditorFuncNum]}, '#{asset_url(relative_url_root)}');")
  }
end

def success_default(_relative_url_root = nil)

def success_default(_relative_url_root = nil)
  {
    json: asset.to_json(only: [:id, :type])
  }
end

def success_json(_relative_url_root = nil)

def success_json(_relative_url_root = nil)
  {
    json: { uploaded: 1, fileName: asset.filename, url: asset.url }.to_json
  }
end