Sha256: cd7467cdcb853484610f120f14cf13575f0ca9840fe530054fae599978837e9f

Contents?: true

Size: 1.15 KB

Versions: 4

Compression:

Stored size: 1.15 KB

Contents

module Sources

  # Describes a Delicious (http://deli.cio.us) source.
  #
  # This source has a fixed set of categories:
  # * title
  # * tags
  # * url
  #
  # Examples:
  #  Sources::CSV.new('usrnam', 'paswrd')
  #
  class Delicious < Base

    def initialize username, password
      check_gem
      @username = username
      @password = password
    end
    def check_gem # :nodoc:
      require 'www/delicious'
    rescue LoadError
      warn_gem_missing 'www-delicious', 'the delicious source'
      exit 1
    end

    def to_s
      self.class.name
    end

    # Harvests the data to index.
    #
    def harvest _, category
      get_data do |indexed_id, data|
        text = data[category.from]
        next unless text
        yield indexed_id, text
      end
    end

    #
    #
    def get_data # :nodoc:
      @generated_id ||= 0
      @posts ||= WWW::Delicious.new(@username, @password).posts_recent(count: 100)
      @posts.each do |post|
        data = {
          title: post.title,
          tags:  post.tags.join(' '),
          url:   post.url.to_s
        }
        @generated_id += 1
        yield @generated_id, data
      end
    end

  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
picky-2.0.0.pre2 lib/picky/sources/delicious.rb
picky-2.0.0.pre1 lib/picky/sources/delicious.rb
picky-1.5.4 lib/picky/sources/delicious.rb
picky-1.5.3 lib/picky/sources/delicious.rb