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
21 22 23 24 25 26 27 28 |
# File 'lib/opendmm/site.rb', line 21 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
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/opendmm/site.rb', line 57 def product(name) url = product_url name page = get_with_retry url return nil unless page && page.code == 200 html = Utils.html_in_utf8 page 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 Utils.finalize_details_hash details end |
#product_code(name) ⇒ Object
44 45 46 47 48 49 50 51 |
# File 'lib/opendmm/site.rb', line 44 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
53 54 55 |
# File 'lib/opendmm/site.rb', line 53 def product_extra_info(name, url, page, html) Hash.new end |
#product_url(name) ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'lib/opendmm/site.rb', line 35 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
30 31 32 33 |
# File 'lib/opendmm/site.rb', line 30 def register_product(matcher, url_generator, code_generator = '#{$1.upcase}-#{$2}') url_generators[matcher] = '"' + url_generator + '"' code_generators[matcher] = '"' + code_generator + '"' end |