Class: Lita::Handlers::WebTitle
- Inherits:
-
Handler
- Object
- Handler
- Lita::Handlers::WebTitle
- Defined in:
- lib/lita/handlers/web_title.rb
Constant Summary collapse
- URI_PROTOCOLS =
%w( http https )
Instance Method Summary collapse
Instance Method Details
#find_title(html) ⇒ Object
42 43 44 45 46 47 48 49 |
# 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) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# 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) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/lita/handlers/web_title.rb', line 13 def parse_uri_request(request) requestUri = URI::extract(request..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 |