Sha256: f9a5559e1489ae5807a5f7dda061ddee5b94bf11b75881f8a32772508c93c407

Contents?: true

Size: 1.44 KB

Versions: 3

Compression:

Stored size: 1.44 KB

Contents

module Sniffles
  module Sniffers
    class Wordpress
      include HTML
      attr_accessor :doc
      attr_reader :name, :group, :output, :response
      
      def initialize(response_body)
        @output = {}        
        parse(response_body) && process_document
      end
      
      def process_document
        @output[:found] = wordpress?
        parse_version
        parse_feed
        parse_theme
        parse_pingback
      end
      
      private
      def wordpress?
        @doc.xpath('//link[contains(@href,"wp-content")]').any?
      end    
      
      def parse_feed
        @output[:feed] = text_at("//link[@rel='alternate' and @type='application/rss+xml']/@href")
      end
      
      def parse_theme
        theme_uri = text_at("//link[@rel='stylesheet' and contains(@href,'wp-content/themes/')][1]/@href")
        @output[:theme] = (theme_uri ? clean_theme_uri(theme_uri)[1] : false)
      end
      
      def parse_version
        version_meta_tag = text_at("//meta[@name='generator']/@content")
        @output[:version] = (version_meta_tag ? extract_version(version_meta_tag)[1] : version_meta_tag)
      end
      
      def parse_pingback
        @output[:pingback] = text_at("//link[@rel='pingback']/@href")
      end
      
      def clean_theme_uri(uri)
        /wp-content\/themes\/([^\/]*)\//i.match uri
      end
      
      def extract_version(string)
        /([\d]+\.[\d]+[\.]?[\d]?)/.match string
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sniffles-0.1.1 lib/sniffles/sniffers/cms/wordpress.rb
sniffles-0.1.0.1 lib/sniffles/sniffers/cms/wordpress.rb
sniffles-0.1.0 lib/sniffles/sniffers/cms/wordpress.rb