Sha256: 92245d96018272aa4fe4f751e9fe78d87d006eb82aa489eee4b0592d348f6664

Contents?: true

Size: 1.16 KB

Versions: 12

Compression:

Stored size: 1.16 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}(#{@username})"
    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

12 entries across 12 versions & 1 rubygems

Version Path
picky-2.7.0 lib/picky/sources/delicious.rb
picky-2.6.0 lib/picky/sources/delicious.rb
picky-2.5.2 lib/picky/sources/delicious.rb
picky-2.5.1 lib/picky/sources/delicious.rb
picky-2.5.0 lib/picky/sources/delicious.rb
picky-2.4.3 lib/picky/sources/delicious.rb
picky-2.4.2 lib/picky/sources/delicious.rb
picky-2.4.1 lib/picky/sources/delicious.rb
picky-2.4.0 lib/picky/sources/delicious.rb
picky-2.3.0 lib/picky/sources/delicious.rb
picky-2.2.1 lib/picky/sources/delicious.rb
picky-2.2.0 lib/picky/sources/delicious.rb