class Skimlinks::Product

Attributes

category[RW]
country[RW]
currency[RW]
description[RW]
id[RW]
image_urls[RW]
merchant_id[RW]
merchant_name[RW]
name[RW]
price[RW]
product_id[RW]
url[RW]

Public Class Methods

affiliate_url(url, publisher_id = nil) click to toggle source
# File lib/skimlinks/product.rb, line 30
def affiliate_url(url, publisher_id = nil)
  publisher_id ||= Settings.skimlinks.publisher_id
  Skimlinks::Client.new.affiliate url, publisher_id
end
build_from_api_response(product_data) click to toggle source
# File lib/skimlinks/product.rb, line 6
def build_from_api_response(product_data)
  product_data.map do |product|
    description = product['description']
      .strip             # Remove leading and trailing whitespace
      .gsub(/\n+/, "\n") # Replace multiple "\n"s by a single one

    category = ProductSearch.new.categories.invert[product['categorisation']['categoryId'].to_i] || 'empty'

    self.new \
      id:            product['id'],
      name:          product['title'],
      url:           product['url'],
      description:   description,
      merchant_name: product['merchant'],
      merchant_id:   product['merchantId'],
      product_id:    product['productId'],
      country:       product['country'],
      price:         product['price'],
      currency:      product['currency'].downcase,
      category:      category,
      image_urls:    product['imageUrl'].present? ? [URI(product['imageUrl'])] : []
  end
end
new(args = {}) click to toggle source
# File lib/skimlinks/product.rb, line 36
def initialize(args = {})
  args.each do |k, v|
    self.send "#{k}=", v
  end
end