class TransmissionClient

Public Class Methods

new(args={}) click to toggle source
# File lib/transmission_client.rb, line 6
  def initialize(args={})
    @host = args[:host] || "localhost"
    @port = args[:port] || 9091
    @user = args[:user] || "transmission"
    @pass = args[:pass] || "transmission"
    @database = args[:database] || ":memory:"
    @logger = args[:logger] || Logger.new(IO::NULL)

    @sqlite = SQLite3::Database.new @database
    @sqlite.execute <<~SQL
      CREATE TABLE IF NOT EXISTS links (
        id INTEGER PRIMARY KEY,
        link TEXT UNIQUE,
        created_at TEXT DEFAULT CURRENT_TIMESTAMP
      )
    SQL
  end

Public Instance Methods

add_magnets(magnets) click to toggle source
# File lib/transmission_client.rb, line 24
def add_magnets(magnets)
  magnets.each do |m|
    record_link m
    @logger.info Magnet.name(m)
    transmission.add_magnet m
  rescue SQLite3::ConstraintException
    next
  end
end
add_torrents(torrents) click to toggle source
# File lib/transmission_client.rb, line 34
def add_torrents(torrents)
  torrents.each do |t|
    record_link t
    @logger.info t
    transmission.add_torrentfile t
  rescue SQLite3::ConstraintException
    next
  end
end
count() click to toggle source
# File lib/transmission_client.rb, line 44
def count
  list_all.length
end
history() click to toggle source
# File lib/transmission_client.rb, line 54
def history
  sqlite.get_first_value "SELECT COUNT(id) FROM links"
end
purge_all() click to toggle source
# File lib/transmission_client.rb, line 48
def purge_all
  transmission.list.each do |t|
    transmission.delete(t["id"], true)
  end
end

Private Instance Methods

list_all() click to toggle source
# File lib/transmission_client.rb, line 77
def list_all
  transmission.list
end
sqlite() click to toggle source
# File lib/transmission_client.rb, line 69
def sqlite
  @sqlite
end
transmission() click to toggle source
# File lib/transmission_client.rb, line 60
def transmission
  @transmission ||= Transmission.new(
    :host => @host,
    :port => @port,
    :user => @user,
    :pass => @pass
  )
end