Sha256: 6cdeb9596451a0ede355fb32755a1633f8c30230fd7ad7ca2e99c8174ceaf249

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

require 'curb'

module ShareChecker
  class Provider
    attr_reader :name
    
    def initialize(link, name = "noname", options = {})
      @link = link
      @name = name
      @options = options.symbolize_keys
    end
    
    def check
      response = self.class.get([url, @link].join)
      return nil unless response
      
      parse(response)
    end
    
    def parse(response)
      raise NotImplementedError, "Must be overwritten in subclasses"
    end
    
    def url
      raise NotImplementedError, "Must be overwritten in subclasses"
    end
    
    def method_missing(method_name, *args, &block)
      if @options.key?(method_name.to_sym)
        @options[method_name.to_sym]
      else
        super
      end
    end
    
    class << self
      def get(url)
        c = Curl::Easy.new(url) do |curl| 
          curl.headers["User-Agent"] = "Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/6.0.0"
          curl.verbose = false
        end

        c.perform
        c.body_str
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
share_checker-0.1.1 lib/share_checker/provider.rb
share_checker-0.1.0 lib/share_checker/provider.rb