class Lita::Handlers::WebTitle

Constants

URI_PROTOCOLS

Public Instance Methods

find_title(html) click to toggle source
# File lib/lita/handlers/web_title.rb, line 42
def find_title(html)
  title_tag = Nokogiri::HTML(html).css('title').first
  return if title_tag.nil?

  title_tag.text
    .gsub(/(\A\s+|\s+\Z)/, '')
    .gsub(/\s+/, ' ')
end
parse_uri(uriString) click to toggle source
# File lib/lita/handlers/web_title.rb, line 27
def parse_uri(uriString)
  httpRequest = http.get(uriString)
  if httpRequest.status == 200 then
    return unless httpRequest.headers['Content-Type'] =~ %r{text/x?html}
    find_title(httpRequest.body)
  elsif [300, 301, 302, 303].include? httpRequest.status then
    parse_uri httpRequest.headers["Location"]
  else
    nil
  end
rescue Exception => msg
  log.error("lita-web-title: Exception attempting to load URL: #{msg}")
  nil
end
parse_uri_request(request) click to toggle source
# File lib/lita/handlers/web_title.rb, line 13
def parse_uri_request(request)
  requestUri = URI::extract(request.message.body, URI_PROTOCOLS).first
  if config.ignore_patterns then
    if config.ignore_patterns.kind_of?(String) then
      Array(config.ignore_patterns)
    end
    config.ignore_patterns.each do |pattern|
      return if requestUri.match(%r{#{pattern}})
    end
  end
  result = parse_uri(requestUri)
  request.reply(result.delete("\n").strip) unless result.nil?
end