Module: OpenDMM::Site::ClassMethods
- Defined in:
- lib/opendmm/site.rb
Instance Method Summary collapse
- #get_with_retry(url, limit = 5) ⇒ Object
- #product(name) ⇒ Object
- #product_code(name) ⇒ Object
- #product_extra_info(name, url, page, html) ⇒ Object
- #product_url(name) ⇒ Object
- #register_product(matcher, url_generator, code_generator = '#{$1.upcase}-#{$2}') ⇒ Object
Instance Method Details
#get_with_retry(url, limit = 5) ⇒ Object
22 23 24 25 26 27 28 29 |
# File 'lib/opendmm/site.rb', line 22 def get_with_retry(url, limit = 5) return nil unless url get url rescue Errno::ETIMEDOUT, Errno::ECONNREFUSED => e tries ||= 0 tries++ tries <= limit ? retry : raise end |
#product(name) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/opendmm/site.rb', line 58 def product(name) return nil unless name =~ /^[[:ascii:]]+$/ url = product_url name page = get_with_retry url return nil unless page && page.code == 200 html = Utils.html_in_utf8 page html.css('script').remove details = parse_product_html html details[:code] ||= product_code name details[:page] ||= page.request.last_uri.to_s extra_info = product_extra_info(name, url, page, html) extra_info.each do |k, v| details[k] ||= v end details = Utils.finalize_details_hash details i(code cover_image maker page thumbnail_image title).each do |key| return unless details[key] end details end |
#product_code(name) ⇒ Object
45 46 47 48 49 50 51 52 |
# File 'lib/opendmm/site.rb', line 45 def product_code(name) code_generators.each do |matcher, code_generator| if name =~ matcher return eval code_generator end end nil end |
#product_extra_info(name, url, page, html) ⇒ Object
54 55 56 |
# File 'lib/opendmm/site.rb', line 54 def product_extra_info(name, url, page, html) Hash.new end |
#product_url(name) ⇒ Object
36 37 38 39 40 41 42 43 |
# File 'lib/opendmm/site.rb', line 36 def product_url(name) url_generators.each do |matcher, url_generator| if name =~ matcher return eval url_generator end end nil end |
#register_product(matcher, url_generator, code_generator = '#{$1.upcase}-#{$2}') ⇒ Object
31 32 33 34 |
# File 'lib/opendmm/site.rb', line 31 def register_product(matcher, url_generator, code_generator = '#{$1.upcase}-#{$2}') url_generators[matcher] = '"' + url_generator + '"' code_generators[matcher] = '"' + code_generator + '"' end |