Sha256: a41430b8a8b9aac15ee3c95da794b97f72e0089ba61d79472b885f0e2e8a9961

Contents?: true

Size: 1.02 KB

Versions: 1

Compression:

Stored size: 1.02 KB

Contents

# -*- encoding : utf-8 -*-
# Class to manage Hangout information
class RabbitLink < Cinch::Plugins::Rabbit
  attr_accessor :nick, :id, :time, :file
  FILENAME = ENV['RABBIT_LINKS_FILE'] || 'yaml/rabbit_links.yml'

  def initialize(nick, id, time)
    @nick = nick
    @id = id
    @time = time
  end

  def save
    storage = Cinch::Storage.new(FILENAME)
    storage.data ||= {}
    storage.data[id] = self
    storage.save
  end

  def self.find_by_id(id)
    listing[id]
  end

  def self.delete_expired(expire_time)
    return if listing.nil?
    storage = read_file
    storage.data.delete_if do |id, rabbit|
      (Time.now - rabbit.time) > (expire_time * 60)
    end
    storage.save
  end

  def self.sorted
    rabbits = listing.values
    rabbits.sort! { |x, y| y.time <=> x.time }
    rabbits
  end

  def self.listing
    read_file.data
  end

  def self.url(id)
    "https://rabb.it/r/#{id}"
  end

  private

  def self.read_file
    storage = Cinch::Storage.new(FILENAME)
    storage.data ||= {}
    storage.save
    storage
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cinch-rabbit-0.0.2 lib/cinch/plugins/rabbit/rabbit_link.rb