Sha256: 656f0e5b0306c1accc335906d373177451f134144d6f55806a1a68ce3a6658ec

Contents?: true

Size: 1.44 KB

Versions: 36

Compression:

Stored size: 1.44 KB

Contents

module Onebox
  module Engine
    class AmazonOnebox
      include Engine
      include LayoutSupport
      include HTML


      matches_regexp(/^http:\/\/(?:www)\.amazon\.(?<tld>com|ca|de|it|es|fr|co\.jp|co\.uk|cn|in|com\.br)\//)

      def url
        return "http://www.amazon.#{tld}/gp/aw/d/" + URI::encode(match[:id]) if match && match[:id]
        @url
      end

      def tld
        @tld || @@matcher.match(@url)["tld"]
      end

      def http_params
        {'User-Agent' => 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3'}
      end

      private

      def match
        @match ||= @url.match(/(?:d|g)p\/(?:product\/)?(?<id>[^\/]+)(?:\/|$)/mi)
      end

      def image
        case
        when raw.css("#main-image").any?
          raw.css("#main-image").first["src"]
        when raw.css("#landingImage").any?
          raw.css("#landingImage").first["src"]
        end
      end

      def data
        result = { link: link,
                   title: raw.css("h1").inner_text,
                   image: image,
                   price: raw.css(".priceLarge").inner_text }

        result[:by_info] = raw.at("#by-line")
        result[:by_info] = Onebox::Helpers.clean(result[:by_info].inner_html) if result[:by_info]

        summary = raw.at("#about-item span")
        result[:description] = summary.inner_html if summary
        result
      end
    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
onebox-1.4.9 lib/onebox/engine/amazon_onebox.rb
onebox-1.4.8 lib/onebox/engine/amazon_onebox.rb
onebox-1.4.7 lib/onebox/engine/amazon_onebox.rb
onebox-1.4.5 lib/onebox/engine/amazon_onebox.rb
onebox-1.4.4 lib/onebox/engine/amazon_onebox.rb
onebox-1.4.3 lib/onebox/engine/amazon_onebox.rb
onebox-1.4.2 lib/onebox/engine/amazon_onebox.rb
onebox-1.4.1 lib/onebox/engine/amazon_onebox.rb
onebox-1.4.0 lib/onebox/engine/amazon_onebox.rb
onebox-1.3.9 lib/onebox/engine/amazon_onebox.rb
onebox-1.3.8 lib/onebox/engine/amazon_onebox.rb
onebox-1.3.7 lib/onebox/engine/amazon_onebox.rb
onebox-1.3.6 lib/onebox/engine/amazon_onebox.rb
onebox-1.3.5 lib/onebox/engine/amazon_onebox.rb
onebox-1.3.4 lib/onebox/engine/amazon_onebox.rb
onebox-1.3.3 lib/onebox/engine/amazon_onebox.rb