Class: Transmission::Torrent

Inherits:
Object
  • Object
show all
Defined in:
lib/transmission-client/torrent.rb

Constant Summary collapse

ATTRIBUTES =
['activityDate', 'addedDate', 'bandwidthPriority', 'comment', 'corruptEver', 'creator', 'dateCreated', 'desiredAvailable', 'doneDate', 'downloadDir', 'downloadedEver', 'downloadLimit', 'downloadLimited', 'error', 'errorString', 'eta', 'hashString', 'haveUnchecked', 'haveValid', 'honorsSessionLimits', 'id', 'isPrivate', 'leftUntilDone', 'manualAnnounceTime', 'maxConnectedPeers', 'name', 'peer-limit', 'peersConnected', 'peersGettingFromUs', 'peersKnown', 'peersSendingToUs', 'percentDone', 'pieces', 'pieceCount', 'pieceSize', 'rateDownload', 'rateUpload', 'recheckProgress', 'seedRatioLimit', 'seedRatioMode', 'sizeWhenDone', 'startDate', 'status', 'swarmSpeed', 'totalSize', 'torrentFile', 'uploadedEver', 'uploadLimit', 'uploadLimited', 'uploadRatio', 'webseedsSendingToUs']
ADV_ATTRIBUTES =
['files', 'fileStats', 'peers', 'peersFrom', 'priorities', 'trackers', 'trackerStats', 'wanted', 'webseeds']
SETABLE_ATTRIBUTES =
['bandwidthPriority', 'downloadLimit', 'downloadLimited', 'files-wanted', 'files-unwanted', 'honorsSessionLimits', 'ids', 'location', 'peer-limit', 'priority-high', 'priority-low', 'priority-normal', 'seedRatioLimit', 'seedRatioMode', 'uploadLimit', 'uploadLimited']

Instance Method Summary collapse

Constructor Details

#initialize(attributes) ⇒ Torrent

Returns a new instance of Torrent.



7
8
9
# File 'lib/transmission-client/torrent.rb', line 7

def initialize(attributes)
  @attributes = attributes
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m, *args, &block) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/transmission-client/torrent.rb', line 35

def method_missing(m, *args, &block)
  if ATTRIBUTES.include? m.to_s
    return @attributes[m.to_s]
  elsif ADV_ATTRIBUTES.include? m.to_s
    raise "Attribute not yet supported."
  elsif m[-1..-1] == '='
    if SETABLE_ATTRIBUTES.include? m[0..-2]
      Connection.instance.send('torrent-set', {'ids' => [@attributes['id']], m[0..-2] => args.first})  
    else
      raise "Invalid Attribute."
    end
  else
    raise "Invalid Attribute."
  end
end

Instance Method Details

#move(location, move = true) ⇒ Object



31
32
33
# File 'lib/transmission-client/torrent.rb', line 31

def move(location, move = true)
  Connection.instance.send('torrent-set-location', {'ids' => @attributes['id'], 'location' => location, 'move' => move})
end

#reannounceObject



23
24
25
# File 'lib/transmission-client/torrent.rb', line 23

def reannounce
  Connection.instance.send('torrent-reannounce', {'ids' => @attributes['id']})
end

#remove(delete_data = false) ⇒ Object



27
28
29
# File 'lib/transmission-client/torrent.rb', line 27

def remove(delete_data = false)
  Connection.instance.send('torrent-remove', {'ids' => @attributes['id'], 'delete-local-data' => delete_data })
end

#startObject



11
12
13
# File 'lib/transmission-client/torrent.rb', line 11

def start
  Connection.instance.send('torrent-start', {'ids' => @attributes['id']})
end

#stopObject



15
16
17
# File 'lib/transmission-client/torrent.rb', line 15

def stop
  Connection.instance.send('torrent-stop', {'ids' => @attributes['id']})
end

#verifyObject



19
20
21
# File 'lib/transmission-client/torrent.rb', line 19

def verify
  Connection.instance.send('torrent-verify', {'ids' => @attributes['id']})
end