class AmazonSellerCentral::FeedbackPage

Attributes

body[RW]

Public Instance Methods

feedbacks()
Alias for: parse
has_next?() click to toggle source
# File lib/amazon_seller_central/feedback_page.rb, line 5
def has_next?
  @has_next ||= @page.search('a').map(&:text).grep(/Next/).count > 0
end
next_page() click to toggle source
# File lib/amazon_seller_central/feedback_page.rb, line 9
def next_page
  @next_page ||= begin
                   raise NoNextPageAvailableError unless has_next?
                   page = @agent.follow_link_with(:text => 'Next')
                   FeedbackPage.new(:page => page, :agent => @agent)
                 end
end
parse() click to toggle source
# File lib/amazon_seller_central/feedback_page.rb, line 17
def parse
  rows = @page.search('.//table[@width="100%"]').first.search('.//tr')
  rows[1..-1].map do |row|
    feedback_row_to_object(row)
  end
end
Also aliased as: feedbacks

Private Instance Methods

feedback_row_to_object(row) click to toggle source
# File lib/amazon_seller_central/feedback_page.rb, line 50
def feedback_row_to_object(row)
  data = row.search('.//td').map(&:text)
  {
    :date              => parse_amazon_date(data[0]),
    :rating            => data[1].gsub(/[^\d]/,'').to_i,
    :comments          => data[2].gsub(/\n\nRespond$/,''),
    :arrived_on_time   => yes_no_nil(data[3]),
    :item_as_described => yes_no_nil(data[4]),
    :customer_service  => yes_no_nil(data[5]),
    :order_id          => data[6],
    :rater_email       => data[7].gsub(/\s/, ''), # has a lot of \n\n\t\t crap
    :rater_role        => data[8]
  }.inject(Feedback.new){|fb, (k,v)| fb.send("#{k}=", v); fb }
end
yes_no_nil(v) click to toggle source
# File lib/amazon_seller_central/feedback_page.rb, line 65
def yes_no_nil(v)
  return nil if v == "-"
  v == "Yes"
end