lib/link_thumbnailer.rb in link_thumbnailer-1.1.2 vs lib/link_thumbnailer.rb in link_thumbnailer-2.0.0

- old
+ new

@@ -1,119 +1,36 @@ -require 'link_thumbnailer/configuration' -require 'link_thumbnailer/object' -require 'link_thumbnailer/fetcher' -require 'link_thumbnailer/doc_parser' -require 'link_thumbnailer/doc' -require 'link_thumbnailer/img_url_filter' -require 'link_thumbnailer/img_parser' -require 'link_thumbnailer/img_comparator' -require 'link_thumbnailer/web_image' -require 'link_thumbnailer/opengraph' -require 'link_thumbnailer/version' - -module LinkThumbnailer - - module Rails - autoload :Routes, 'link_thumbnailer/rails/routes' - end - - class << self - - attr_accessor :configuration, :object, :fetcher, :doc_parser, - :img_url_filters, :img_parser, :logger - - def logger - @logger ||= ::Rails.logger - end - - def config - self.configuration ||= Configuration.new( - mandatory_attributes: %w(url title images), - strict: true, - redirect_limit: 3, - blacklist_urls: [ - %r{^http://ad\.doubleclick\.net/}, - %r{^http://b\.scorecardresearch\.com/}, - %r{^http://pixel\.quantserve\.com/}, - %r{^http://s7\.addthis\.com/} - ], - image_attributes: %w(source_url size type), - limit: 10, - top: 5, - user_agent: 'linkthumbnailer', - verify_ssl: true, - http_timeout: 5 - ) - end - - def configure - yield config - end - - def generate(url, options = {}) - set_options(options) - instantiate_classes - - doc = doc_parser.parse(fetcher.fetch(url), url) - - self.object[:url] = fetcher.url.to_s - opengraph(doc) || custom(doc) - end - - private - - def set_options(options) - config - options.each {|k, v| config[k] = v } - end - - def instantiate_classes - self.object = LinkThumbnailer::Object.new - self.fetcher = LinkThumbnailer::Fetcher.new - self.doc_parser = LinkThumbnailer::DocParser.new - self.img_url_filters = [LinkThumbnailer::ImgUrlFilter.new] - self.img_parser = LinkThumbnailer::ImgParser.new(fetcher, img_url_filters) - end - - def opengraph(doc) - return unless opengraph?(doc) - self.object = LinkThumbnailer::Opengraph.parse(object, doc) - return object if object.valid? - nil - end - - def custom(doc) - self.object[:title] = doc.title - self.object[:description] = doc.description - self.object[:images] = img_parser.parse(doc.img_abs_urls.dup) - self.object[:url] = doc.canonical_url || object[:url] - return object if object.valid? - nil - end - - def opengraph?(doc) - !doc.xpath('//meta[starts-with(@property, "og:") and @content]').empty? - end - - end - -end - -begin - require 'rails' -rescue LoadError -end - -$stderr.puts <<-EOC if !defined?(Rails) -warning: no framework detected. - -Your Gemfile might not be configured properly. ----- e.g. ---- -Rails: - gem 'link_thumbnailer' - -EOC - -if defined?(Rails) - require 'link_thumbnailer/engine' - require 'link_thumbnailer/railtie' -end +require 'json' +require 'link_thumbnailer/version' +require 'link_thumbnailer/configuration' +require 'link_thumbnailer/exceptions' +require 'link_thumbnailer/page' + +module LinkThumbnailer + + class << self + + attr_reader :page + + def generate(url, options = {}) + @page = ::LinkThumbnailer::Page.new(url, options) + + page.generate + end + + end + +end + +begin + require 'rails' +rescue LoadError +end + +$stderr.puts <<-EOC if !defined?(Rails) +warning: no framework detected. + +Your Gemfile might not be configured properly. +---- e.g. ---- +Rails: + gem 'link_thumbnailer' + +EOC