Sha256: f1c41f7df947d7a884d139b15964971cbe9f0ad43bc5e744f882926158f2893f
Contents?: true
Size: 1.55 KB
Versions: 3
Compression:
Stored size: 1.55 KB
Contents
require 'typhoeus' require 'nokogiri' require 'json' require 'jsonpath' require File.expand_path('../site', __FILE__) module PageRankr module Tracker attr_accessor :tracked attr_accessor :raw attr_accessor :body def initialize(site, options = {}) @site = PageRankr::Site(site) @options = {:method => method} @options[:params] = params if respond_to? :params @options.merge!(options) request.on_complete do |response| self.body = response.body self.raw = content(body) self.tracked = clean(raw) end end def request @request ||= Typhoeus::Request.new(url, @options) end def url raise PageRankr::MethodRequired, "A url method defining the url to the service with the value you wish to extract must be defined." end def method :get end def run hydra = Typhoeus::Hydra.new hydra.queue request hydra.run tracked end def content(body) if respond_to? :xpath Nokogiri::HTML(body).at(xpath) elsif respond_to? :jsonpath JsonPath.new(jsonpath).first(JSON.parse(body)) elsif respond_to? :regex body =~ regex ? $1 : nil else raise PageRankr::MethodRequired, "A method for extracting the value must be defined. Either xpath, jsonpath, or regex." end.to_s end def clean(content) cleaned_content = content.to_s.gsub(/\D/, '') if cleaned_content.strip == '' nil else cleaned_content.to_i end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
PageRankr-3.0.2 | lib/page_rankr/tracker.rb |
PageRankr-3.0.1 | lib/page_rankr/tracker.rb |
PageRankr-3.0.0 | lib/page_rankr/tracker.rb |