class Kudzu::Agent::Util::MimeTypeDetector

Constants

DEFALUT_MIME_TYPE

Public Class Methods

detect(response) click to toggle source
# File lib/kudzu/agent/util/mime_type_detector.rb, line 8
def detect(response)
  from_header(response.response_header) ||
    from_body(response.body) ||
    from_url(response.url) ||
    DEFALUT_MIME_TYPE
rescue => e
  Kudzu.log :warn, "failed to detect mime: #{response.url}", error: e
  nil
end

Private Class Methods

from_body(body) click to toggle source
# File lib/kudzu/agent/util/mime_type_detector.rb, line 24
def from_body(body)
  mime = MimeMagic.by_magic(StringIO.new(body))
  mime.to_s if mime
end
from_header(header) click to toggle source
# File lib/kudzu/agent/util/mime_type_detector.rb, line 20
def from_header(header)
  ContentTypeParser.parse(header['content-type']).first
end
from_url(url) click to toggle source
# File lib/kudzu/agent/util/mime_type_detector.rb, line 29
def from_url(url)
  uri = Addressable::URI.parse(url)
  mime = MimeMagic.by_path(uri.basename)
  mime.to_s if mime
end