rtransmission 0.2 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. data/lib/rtransmission.rb +3 -3
  2. data/lib/rtransmission/client.rb +11 -0
  3. data/lib/rtransmission/session.rb +50 -68
  4. data/lib/rtransmission/torrent.rb +121 -91
  5. data/lib/rtransmission/type.rb +55 -0
  6. data/lib/rtransmission/types.rb +22 -0
  7. data/lib/rtransmission/{fields → types}/day.rb +2 -2
  8. data/lib/rtransmission/{fields → types}/encryption.rb +2 -2
  9. data/lib/rtransmission/{fields → types}/error.rb +2 -2
  10. data/lib/rtransmission/{fields → types}/eta.rb +2 -2
  11. data/lib/rtransmission/{fields/percent.rb → types/file.rb} +7 -7
  12. data/lib/rtransmission/types/file_stat.rb +17 -0
  13. data/lib/rtransmission/types/peer.rb +30 -0
  14. data/lib/rtransmission/types/peers_from.rb +20 -0
  15. data/lib/rtransmission/{fields → types}/priority.rb +2 -2
  16. data/lib/rtransmission/{fields → types}/seed_idle_mode.rb +2 -2
  17. data/lib/rtransmission/{fields → types}/seed_ratio_mode.rb +2 -2
  18. data/lib/rtransmission/types/stats.rb +21 -0
  19. data/lib/rtransmission/{fields → types}/status.rb +2 -2
  20. data/lib/rtransmission/{fields → types}/time.rb +2 -2
  21. data/lib/rtransmission/types/tracker.rb +18 -0
  22. data/lib/rtransmission/types/tracker_stat.rb +41 -0
  23. data/lib/rtransmission/types/tracker_state.rb +15 -0
  24. data/lib/rtransmission/types/traffic_stats.rb +19 -0
  25. data/lib/rtransmission/version.rb +1 -1
  26. metadata +22 -23
  27. data/lib/rtransmission/field.rb +0 -24
  28. data/lib/rtransmission/fields.rb +0 -23
  29. data/lib/rtransmission/fields/file.rb +0 -17
  30. data/lib/rtransmission/fields/file_stat.rb +0 -17
  31. data/lib/rtransmission/fields/peer.rb +0 -30
  32. data/lib/rtransmission/fields/peers_from.rb +0 -20
  33. data/lib/rtransmission/fields/pieces.rb +0 -13
  34. data/lib/rtransmission/fields/stats.rb +0 -21
  35. data/lib/rtransmission/fields/tracker.rb +0 -18
  36. data/lib/rtransmission/fields/tracker_stat.rb +0 -41
  37. data/lib/rtransmission/fields/traffic_stats.rb +0 -19
@@ -6,8 +6,8 @@ require 'rtransmission/version'
6
6
  require 'rtransmission/exception'
7
7
  require 'rtransmission/request'
8
8
  require 'rtransmission/response'
9
- require 'rtransmission/field'
10
- require 'rtransmission/fields'
9
+ require 'rtransmission/client'
10
+ require 'rtransmission/type'
11
+ require 'rtransmission/types'
11
12
  require 'rtransmission/session'
12
13
  require 'rtransmission/torrent'
13
- require 'rtransmission/client'
@@ -23,6 +23,17 @@ module RTransmission
23
23
  session
24
24
  end
25
25
 
26
+ def self.rpc_name_to_ruby_name(rpc_name)
27
+ name = nil
28
+ if rpc_name.index('-')
29
+ name = rpc_name.gsub('-', '_')
30
+ else
31
+ name = rpc_name.gsub(/[A-Z]/) { |x| '_' + x.downcase }
32
+ end
33
+
34
+ name
35
+ end
36
+
26
37
  def initialize(args = {})
27
38
  @host = args[:host] || 'localhost'
28
39
  @port = args[:port] || 9091
@@ -6,21 +6,13 @@ module RTransmission
6
6
  class Session
7
7
  attr_reader :client
8
8
 
9
- def self.define_field(name, rpc_name, args = {})
9
+ def self.attribute(rpc_name, args = {})
10
+ name = args[:name] || RTransmission::Client.rpc_name_to_ruby_name(rpc_name)
11
+
10
12
  self.send :define_method, name.to_s do
11
13
  request = RTransmission::Request.new('session-get', {}, 'Session.' + name.to_s) do |arguments|
12
- result = arguments[rpc_name]
13
- if args[:type]
14
- type = args[:type]
15
- if type.class == Array
16
- type = type[0]
17
- result.map! { |r| type.unmap(r) }
18
- else
19
- result = type.unmap(result)
20
- end
21
- end
22
-
23
- result
14
+ value = arguments[rpc_name]
15
+ RTransmission::Type.unmap(value, args[:type])
24
16
  end
25
17
 
26
18
  @client.call(request)
@@ -28,17 +20,7 @@ module RTransmission
28
20
 
29
21
  if args[:writeable] == true
30
22
  self.send :define_method, name.to_s.gsub('?', '') + '=' do |value|
31
- rpc_value = value
32
- if args[:type]
33
- type = args[:type]
34
- if type.class == Array
35
- type = type[0]
36
- rpc_value.map! { |r| type.map(r) }
37
- else
38
- rpc_value = type.map(rpc_value)
39
- end
40
- end
41
-
23
+ rpc_value = RTransmission::Type.unmap(value, args[:type])
42
24
  request = RTransmission::Request.new('session-set', {rpc_name => rpc_value}, 'Session.' + name.to_s + '=') do
43
25
  value
44
26
  end
@@ -48,49 +30,49 @@ module RTransmission
48
30
  end
49
31
  end
50
32
 
51
- define_field :alt_speed_down, 'alt-speed-down', :writeable => true
52
- define_field :alt_speed_enabled?, 'alt-speed-enabled', :writeable => true
53
- define_field :alt_speed_time_begin, 'alt-speed-time-begin', :writeable => true
54
- define_field :alt_speed_time_enabled?, 'alt-speed-time-enabled', :writeable => true
55
- define_field :alt_speed_time_end, 'alt-speed-time-end', :writeable => true
56
- define_field :alt_speed_time_day, 'alt-speed-time-day', :type => RTransmission::Fields::Day, :writeable => true
57
- define_field :alt_speed_up, 'alt-speed-up', :writeable => true
58
- define_field :blocklist_url, 'blocklist-url', :writeable => true
59
- define_field :blocklist_enabled?, 'blocklist-enabled', :writeable => true
60
- define_field :blocklist_size, 'blocklist-size'
61
- define_field :cache_size_mb, 'cache-size-mb', :writeable => true
62
- define_field :config_dir, 'config-dir'
63
- define_field :download_dir, 'download-dir', :writeable => true
64
- define_field :download_dir_free_space, 'download-dir-free-space'
65
- define_field :dht_enabled?, 'dht-enabled', :writeable => true
66
- define_field :encryption, 'encryption', :type => RTransmission::Fields::Encryption, :writeable => true
67
- define_field :idle_seeding_limit, 'idle-seeding-limit', :writeable => true
68
- define_field :idle_seeding_limit_enabled?, 'idle-seeding-limit-enabled', :writeable => true
69
- define_field :incomplete_dir, 'incomplete-dir', :writeable => true
70
- define_field :incomplete_dir_enabled?, 'incomplete-dir-enabled', :writeable => true
71
- define_field :lpd_enabled?, 'lpd-enabled', :writeable => true
72
- define_field :peer_limit_global, 'peer-limit-global', :writeable => true
73
- define_field :peer_limit_per_torrent, 'peer-limit-per-torrent', :writeable => true
74
- define_field :pex_enabled?, 'pex-enabled', :writeable => true
75
- define_field :peer_port, 'peer-port', :writeable => true
76
- define_field :peer_port_random_on_start?, 'peer-port-random-on-start', :writeable => true
77
- define_field :port_forwarding_enabled?, 'port-forwarding-enabled', :writeable => true
78
- define_field :rename_partial_files?, 'rename-partial-files', :writeable => true
79
- define_field :rpc_version, 'rpc-version'
80
- define_field :rpc_version_minimum, 'rpc-version-minimum'
81
- define_field :script_torrent_done_filename, 'script-torrent-done-filename', :writeable => true
82
- define_field :script_torrent_done_enabled?, 'script-torrent-done-enabled', :writeable => true
83
- define_field :seed_ratio_limit, 'seedRatioLimit', :type => RTransmission::Fields::Percent, :writeable => true
84
- define_field :seed_ratio_limited?, 'seedRatioLimited', :writeable => true
85
- define_field :speed_limit_down, 'speed-limit-down', :writeable => true
86
- define_field :speed_limit_down_enabled?, 'speed-limit-down-enabled', :writeable => true
87
- define_field :speed_limit_up, 'speed-limit-up', :writeable => true
88
- define_field :speed_limit_up_enabled?, 'speed-limit-up-enabled', :writeable => true
89
- define_field :start_added_torrents?, 'start-added-torrents', :writeable => true
90
- define_field :trash_original_torrent_files?, 'trash-original-torrent-files', :writeable => true
91
- define_field :units, 'units' # FIXME: add type and writeable
92
- define_field :utp_enabled?, 'utp-enabled', :writeable => true
93
- define_field :version, 'version'
33
+ attribute 'alt-speed-down', :writeable => true
34
+ attribute 'alt-speed-enabled', :name => :alt_speed_enabled?, :writeable => true
35
+ attribute 'alt-speed-time-begin', :writeable => true
36
+ attribute 'alt-speed-time-enabled', :name => :alt_speed_time_enabled?, :writeable => true
37
+ attribute 'alt-speed-time-end', :writeable => true
38
+ attribute 'alt-speed-time-day', :type => :day, :writeable => true
39
+ attribute 'alt-speed-up', :writeable => true
40
+ attribute 'blocklist-url', :writeable => true
41
+ attribute 'blocklist-enabled', :name => :blocklist_enabled?, :writeable => true
42
+ attribute 'blocklist-size'
43
+ attribute 'cache-size-mb', :writeable => true
44
+ attribute 'config-dir'
45
+ attribute 'download-dir', :writeable => true
46
+ attribute 'download-dir-free-space'
47
+ attribute 'dht-enabled', :name => :dht_enabled?, :writeable => true
48
+ attribute 'encryption', :type => :encryption, :writeable => true
49
+ attribute 'idle-seeding-limit', :writeable => true
50
+ attribute 'idle-seeding-limit-enabled', :name => :idle_seeding_limit_enabled?, :writeable => true
51
+ attribute 'incomplete-dir', :writeable => true
52
+ attribute 'incomplete-dir-enabled', :name => :incomplete_dir_enabled?, :writeable => true
53
+ attribute 'lpd-enabled', :name => :lpd_enabled?, :writeable => true
54
+ attribute 'peer-limit-global', :writeable => true
55
+ attribute 'peer-limit-per-torrent', :writeable => true
56
+ attribute 'pex-enabled', :name => :pex_enabled?, :writeable => true
57
+ attribute 'peer-port', :writeable => true
58
+ attribute 'peer-port-random-on-start', :name => :peer_port_random_on_start?, :writeable => true
59
+ attribute 'port-forwarding-enabled', :name => :port_forwarding_enabled?, :writeable => true
60
+ attribute 'rename-partial-files', :name => :rename_partial_files?, :writeable => true
61
+ attribute 'rpc-version'
62
+ attribute 'rpc-version-minimum'
63
+ attribute 'script-torrent-done-filename', :writeable => true
64
+ attribute 'script-torrent-done-enabled', :name => :script_torrent_done_enabled?, :writeable => true
65
+ attribute 'seedRatioLimit', :writeable => true
66
+ attribute 'seedRatioLimited', :name => :seed_ratio_limited?, :writeable => true
67
+ attribute 'speed-limit-down', :writeable => true
68
+ attribute 'speed-limit-down-enabled', :name => :speed_limit_down_enabled?, :writeable => true
69
+ attribute 'speed-limit-up', :writeable => true
70
+ attribute 'speed-limit-up-enabled', :name => :speed_limit_up_enabled?, :writeable => true
71
+ attribute 'start-added-torrents', :name => :start_added_torrents?, :writeable => true
72
+ attribute 'trash-original-torrent-files', :name => :trash_original_torrent_files?, :writeable => true
73
+ attribute 'units' # FIXME: add type and writeable
74
+ attribute 'utp-enabled', :name => :utp_enabled?, :writeable => true
75
+ attribute 'version'
94
76
 
95
77
  def initialize(client)
96
78
  @client = client
@@ -98,7 +80,7 @@ module RTransmission
98
80
 
99
81
  def stats
100
82
  request = RTransmission::Request.new('session-stats', {}, 'Session.stats') do |arguments|
101
- RTransmission::Fields::Stats.unmap(arguments)
83
+ RTransmission::Types::Stats.unmap(arguments)
102
84
  end
103
85
 
104
86
  @client.call(request)
@@ -4,9 +4,8 @@
4
4
 
5
5
  require 'base64'
6
6
 
7
- # FIXME: files-wanted/unwanted & prioriry-high/low/normal for both add and new torrents
7
+ # FIXME: files-wanted/unwanted & prioriry-high/low/normal for new torrents
8
8
  # FIXME: add/remove/replace trackers
9
- # FIXME: location set support
10
9
  module RTransmission
11
10
  class Torrent
12
11
  attr_reader :id
@@ -17,7 +16,7 @@ module RTransmission
17
16
  raise RTransmission::Exception.new('Torrent#add: only one of remote_file, url, or torrent must be specified') if (args.keys & [:remote_file, :url, :torrent]).count != 1
18
17
  pargs['filename'] = args[:remote_file] if args[:remote_file]
19
18
  pargs['filename'] = args[:url] if args[:url]
20
- pargs['metainfo'] = Base64::encode(args[:torrent]) if args[:torrent]
19
+ pargs['metainfo'] = Base64::encode64(args[:torrent]) if args[:torrent]
21
20
 
22
21
  pargs['cookies'] = args[:cookies] if args[:cookies]
23
22
  pargs['download-dir'] = args[:download_dir] if args[:download_dir]
@@ -45,21 +44,13 @@ module RTransmission
45
44
  session.client.call(request)
46
45
  end
47
46
 
48
- def self.define_field(name, rpc_name, args = {})
47
+ def self.attribute(rpc_name, args = {})
48
+ name = args[:name] || RTransmission::Client.rpc_name_to_ruby_name(rpc_name)
49
+
49
50
  self.send :define_method, name.to_s do
50
51
  request = RTransmission::Request.new('torrent-get', {'ids' => @id, 'fields' => [rpc_name]}, 'Torrent.' + name.to_s) do |arguments|
51
- result = arguments['torrents'][0][rpc_name]
52
- if args[:type]
53
- type = args[:type]
54
- if type.class == Array
55
- type = type[0]
56
- result.map! { |r| type.unmap(r) }
57
- else
58
- result = type.unmap(result)
59
- end
60
- end
61
-
62
- result
52
+ value = arguments['torrents'][0][rpc_name]
53
+ RTransmission::Type.unmap(value, args[:type])
63
54
  end
64
55
 
65
56
  @session.client.call(request)
@@ -67,17 +58,7 @@ module RTransmission
67
58
 
68
59
  if args[:writeable] == true
69
60
  self.send :define_method, name.to_s.gsub('?', '') + '=' do |value|
70
- rpc_value = value
71
- if args[:type]
72
- type = args[:type]
73
- if type.class == Array
74
- type = type[0]
75
- rpc_value.map! { |r| type.map(r) }
76
- else
77
- rpc_value = type.map(rpc_value)
78
- end
79
- end
80
-
61
+ rpc_value = RTransmission::Type.map(value, args[:type])
81
62
  request = RTransmission::Request.new('torrent-set', {'ids' => @id, rpc_name => rpc_value}, 'Torrent.' + name.to_s + '=') do
82
63
  value
83
64
  end
@@ -87,70 +68,69 @@ module RTransmission
87
68
  end
88
69
  end
89
70
 
90
- define_field :activity_date, 'activityDate', :type => RTransmission::Fields::Time
91
- define_field :added_date, 'addedDate', :type => RTransmission::Fields::Time
92
- define_field :bandwidth_priority, 'bandwidthPriority', :type => RTransmission::Fields::Priority, :writeable => true
93
- define_field :comment, 'comment'
94
- define_field :corrupt_ever, 'corruptEver'
95
- define_field :creator, 'creator'
96
- define_field :date_created, 'dateCreated', :type => RTransmission::Fields::Time
97
- define_field :desired_available, 'desiredAvailable'
98
- define_field :done_date, 'doneDate', :type => RTransmission::Fields::Time
99
- define_field :download_dir, 'downloadDir'
100
- define_field :downloaded_ever, 'downloadedEver'
101
- define_field :download_limit, 'downloadLimit', :writeable => true
102
- define_field :download_limited?, 'downloadLimited', :writeable => true
103
- define_field :error, 'error', :type => RTransmission::Fields::Error
104
- define_field :error_string, 'errorString'
105
- define_field :eta, 'eta', :type => RTransmission::Fields::ETA
106
- define_field :files, 'files', :type => [RTransmission::Fields::File]
107
- define_field :file_stats, 'fileStats', :type => [RTransmission::Fields::FileStat]
108
- define_field :hash_string, 'hashString'
109
- define_field :have_unchecked, 'haveUnchecked'
110
- define_field :have_valid, 'haveValid'
111
- define_field :honors_session_limits?, 'honorsSessionLimits', :writeable => true
112
- define_field :finished?, 'isFinished'
113
- define_field :private?, 'isPrivate'
114
- define_field :left_until_done, 'leftUntilDone'
115
- define_field :magnet_link, 'magnetLink'
116
- define_field :manual_announce_time, 'manualAnnounceTime' # FIXME: add type
117
- define_field :max_connected_peers, 'maxConnectedPeers'
118
- define_field :metadata_percent_complete, 'metadataPercentComplete'
119
- define_field :name, 'name'
120
- define_field :peer_limit, 'peer-limit', :writeable => true
121
- define_field :peers, 'peers', :type => [RTransmission::Fields::Peer]
122
- define_field :peers_connected, 'peersConnected'
123
- define_field :peers_from, 'peersFrom', :type => RTransmission::Fields::PeersFrom
124
- define_field :peers_getting_from_us, 'peersGettingFromUs'
125
- define_field :peers_sending_to_us, 'peersSendingToUs'
126
- define_field :percent_done, 'percentDone', :type => RTransmission::Fields::Percent
127
- define_field :pieces, 'pieces', :type => RTransmission::Fields::Pieces
128
- define_field :piece_count, 'pieceCount'
129
- define_field :piece_size, 'pieceSize'
130
- define_field :priorities, 'priorities', :type => [RTransmission::Fields::Priority]
131
- define_field :rate_download, 'rateDownload'
132
- define_field :rate_upload, 'rateUpload'
133
- define_field :recheck_progress, 'recheckProgress', :type => RTransmission::Fields::Percent
134
- define_field :seconds_downloading, 'secondsDownloading'
135
- define_field :seconds_seeding, 'secondsSeeding'
136
- define_field :seed_idle_limit, 'seedIdleLimit', :writeable => true
137
- define_field :seed_idle_mode, 'seedIdleMode', :type => RTransmission::Fields::SeedIdleMode, :writeable => true
138
- define_field :seed_ratio_limit, 'seedRatioLimit', :type => RTransmission::Fields::Percent, :writeable => true
139
- define_field :seed_ratio_mode, 'seedRatioMode', :type => RTransmission::Fields::SeedRatioMode, :writeable => true
140
- define_field :size_when_done, 'sizeWhenDone'
141
- define_field :start_date, 'startDate', :type => RTransmission::Fields::Time
142
- define_field :status, 'status', :type => RTransmission::Fields::Status
143
- define_field :trackers, 'trackers', :type => [RTransmission::Fields::Tracker]
144
- define_field :tracker_stats, 'trackerStats', :type => [RTransmission::Fields::TrackerStat]
145
- define_field :total_size, 'totalSize'
146
- define_field :torrent_file, 'torrentFile'
147
- define_field :uploaded_ever, 'uploadedEver'
148
- define_field :upload_limit, 'uploadLimit', :writeable => true
149
- define_field :upload_limited?, 'uploadLimited', :writeable => true
150
- define_field :upload_ratio, 'uploadRatio', :type => RTransmission::Fields::Percent
151
- define_field :wanted, 'wanted'
152
- define_field :webseeds, 'webseeds' # FIXME: add type
153
- define_field :webseeds_sending_to_us, 'webseedsSendingToUs'
71
+ attribute 'activityDate', :type => :time
72
+ attribute 'addedDate', :type => :time
73
+ attribute 'bandwidthPriority', :type => :priority, :writeable => true
74
+ attribute 'comment'
75
+ attribute 'corruptEver'
76
+ attribute 'creator'
77
+ attribute 'dateCreated', :type => :time
78
+ attribute 'desiredAvailable'
79
+ attribute 'doneDate', :type => :time
80
+ attribute 'downloadDir'
81
+ attribute 'downloadedEver'
82
+ attribute 'downloadLimit', :writeable => true
83
+ attribute 'downloadLimited', :name => :download_limited?, :writeable => true
84
+ attribute 'error', :type => :error
85
+ attribute 'errorString'
86
+ attribute 'eta', :type => :eta
87
+ attribute 'files', :type => [:file]
88
+ attribute 'fileStats', :name => :files_stats, :type => [:file_stat]
89
+ attribute 'hashString'
90
+ attribute 'haveUnchecked'
91
+ attribute 'haveValid'
92
+ attribute 'honorsSessionLimits', :name => :honors_session_limits?, :writeable => true
93
+ attribute 'isFinished', :name => :finished?
94
+ attribute 'isPrivate', :name => :private?
95
+ attribute 'leftUntilDone'
96
+ attribute 'magnetLink'
97
+ attribute 'manualAnnounceTime' # FIXME: add type
98
+ attribute 'maxConnectedPeers'
99
+ attribute 'metadataPercentComplete'
100
+ attribute 'name'
101
+ attribute 'peer-limit', :writeable => true
102
+ attribute 'peers', :type => [:peer]
103
+ attribute 'peersConnected'
104
+ attribute 'peersFrom', :type => :peers_from
105
+ attribute 'peersGettingFromUs'
106
+ attribute 'peersSendingToUs'
107
+ attribute 'percentDone'
108
+ attribute 'pieceCount'
109
+ attribute 'pieceSize'
110
+ attribute 'priorities', :type => [:priority]
111
+ attribute 'rateDownload'
112
+ attribute 'rateUpload'
113
+ attribute 'recheckProgress'
114
+ attribute 'secondsDownloading'
115
+ attribute 'secondsSeeding'
116
+ attribute 'seedIdleLimit', :writeable => true
117
+ attribute 'seedIdleMode', :type => :seed_idle_mode, :writeable => true
118
+ attribute 'seedRatioLimit', :writeable => true
119
+ attribute 'seedRatioMode', :type => :seed_ratio_mode, :writeable => true
120
+ attribute 'sizeWhenDone'
121
+ attribute 'startDate', :type => :time
122
+ attribute 'status', :type => :status
123
+ attribute 'trackers', :type => [:tracker]
124
+ attribute 'trackerStats', :name => :trackers_stats, :type => [:tracker_stat]
125
+ attribute 'totalSize'
126
+ attribute 'torrentFile'
127
+ attribute 'uploadedEver'
128
+ attribute 'uploadLimit', :writeable => true
129
+ attribute 'uploadLimited', :name => :upload_limited?, :writeable => true
130
+ attribute 'uploadRatio'
131
+ attribute 'wanted'
132
+ attribute 'webseeds' # FIXME: add type
133
+ attribute 'webseedsSendingToUs'
154
134
 
155
135
  def initialize(session, id)
156
136
  @session = session
@@ -189,5 +169,55 @@ module RTransmission
189
169
 
190
170
  @session.client.call(RTransmission::Request.new('torrent-set-location', {'ids' => @id}.merge(pargs), 'Torrent.move'))
191
171
  end
172
+
173
+ def pieces
174
+ request = RTransmission::Request.new('torrent-get', {'ids' => @id, 'fields' => ['pieces']}, 'Torrent.pieces') do |arguments|
175
+ pieces = arguments['torrents'][0]['pieces']
176
+ Base64::decode64(pieces).unpack('B*')[0][0 .. piece_count - 1]
177
+ end
178
+
179
+ @session.client.call(request)
180
+ end
181
+
182
+ def priorities=(priorities)
183
+ phigh = []
184
+ pnormal = []
185
+ plow = []
186
+ 0.upto(priorities.size - 1) do |i|
187
+ phigh << i if priorities[i] == :high
188
+ pnormal << i if priorities[i] == :normal
189
+ plow << i if priorities[i] == :low
190
+ end
191
+
192
+ pargs = {}
193
+ pargs.merge!({'priority-high' => phigh}) if phigh.size != 0
194
+ pargs.merge!({'priority-normal' => pnormal}) if pnormal.size != 0
195
+ pargs.merge!({'priority-low' => plow}) if plow.size != 0
196
+
197
+ request = RTransmission::Request.new('torrent-set', {'ids' => @id}.merge(pargs), 'Torrent.files_priorities=') do
198
+ priorities
199
+ end
200
+
201
+ @session.client.call(request)
202
+ end
203
+
204
+ def wanted=(wanted)
205
+ pwanted = []
206
+ punwanted = []
207
+ 0.upto(wanted.size - 1) do |i|
208
+ pwanted << i if wanted[i]
209
+ punwanted << i unless wanted[i]
210
+ end
211
+
212
+ pargs = {}
213
+ pargs.merge!({'files-wanted' => pwanted}) if pwanted.size != 0
214
+ pargs.merge!({'files-unwanted' => punwanted}) if punwanted.size != 0
215
+
216
+ request = RTransmission::Request.new('torrent-set', {'ids' => @id}.merge(pargs), 'Torrent.wanted=') do
217
+ wanted
218
+ end
219
+
220
+ @session.client.call(request)
221
+ end
192
222
  end
193
223
  end
@@ -0,0 +1,55 @@
1
+ # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
+ # All rights reserved.
3
+ # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
+
5
+ module RTransmission
6
+ class Type
7
+ def self.type_to_class(type)
8
+ type = type.to_s
9
+ type = '_' + type
10
+ type.gsub!(/_./) { |x| x[1].upcase }
11
+
12
+ RTransmission::Types.const_get(type)
13
+ end
14
+
15
+ def self.unmap(value, type)
16
+ if type
17
+ if type.class == Array
18
+ type = RTransmission::Type.type_to_class(type[0])
19
+ value.map! { |v| type.unmap(v) }
20
+ else
21
+ type = RTransmission::Type.type_to_class(type)
22
+ value = type.unmap(value)
23
+ end
24
+ end
25
+
26
+ value
27
+ end
28
+
29
+ def self.map(value, type)
30
+ if type
31
+ if type.class == Array
32
+ type = RTransmission::Type.type_to_class(type[0])
33
+ value.map! { |v| type.map(v) }
34
+ else
35
+ type = RTransmission::Type.type_to_class(type)
36
+ value = type.map(value)
37
+ end
38
+ end
39
+
40
+ value
41
+ end
42
+
43
+ def self.attribute(rpc_name, args = {})
44
+ name = args[:name] || RTransmission::Client.rpc_name_to_ruby_name(rpc_name)
45
+
46
+ self.send :define_method, name.to_s do
47
+ RTransmission::Type.unmap(@hash[rpc_name], args[:type])
48
+ end
49
+ end
50
+
51
+ def initialize(hash)
52
+ @hash = hash
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,22 @@
1
+ # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
+ # All rights reserved.
3
+ # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
+
5
+ require 'rtransmission/types/error'
6
+ require 'rtransmission/types/eta'
7
+ require 'rtransmission/types/priority'
8
+ require 'rtransmission/types/time'
9
+ require 'rtransmission/types/file'
10
+ require 'rtransmission/types/file_stat'
11
+ require 'rtransmission/types/peer'
12
+ require 'rtransmission/types/peers_from'
13
+ require 'rtransmission/types/seed_idle_mode'
14
+ require 'rtransmission/types/seed_ratio_mode'
15
+ require 'rtransmission/types/status'
16
+ require 'rtransmission/types/tracker'
17
+ require 'rtransmission/types/tracker_state'
18
+ require 'rtransmission/types/tracker_stat'
19
+ require 'rtransmission/types/day'
20
+ require 'rtransmission/types/encryption'
21
+ require 'rtransmission/types/traffic_stats'
22
+ require 'rtransmission/types/stats'
@@ -3,8 +3,8 @@
3
3
  # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
4
 
5
5
  module RTransmission
6
- module Fields
7
- class Day
6
+ module Types
7
+ class Day < RTransmission::Type
8
8
  MAP = {1 => :sunday, 2 => :monday, 4 => :tuesday, 8 => :wednesday, 16 => :thursday, 32 => :friday, 64 => :saturday}
9
9
 
10
10
  def self.unmap(value)
@@ -3,8 +3,8 @@
3
3
  # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
4
 
5
5
  module RTransmission
6
- module Fields
7
- class Encryption
6
+ module Types
7
+ class Encryption < RTransmission::Type
8
8
  def self.unmap(value)
9
9
  value.to_sym
10
10
  end
@@ -3,8 +3,8 @@
3
3
  # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
4
 
5
5
  module RTransmission
6
- module Fields
7
- class Error
6
+ module Types
7
+ class Error < RTransmission::Type
8
8
  MAP = {0 => :ok, 1 => :tracker_warning, 2 => :tracker_error, 3 => :local_error}
9
9
 
10
10
  def self.unmap(value)
@@ -3,8 +3,8 @@
3
3
  # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
4
 
5
5
  module RTransmission
6
- module Fields
7
- class ETA
6
+ module Types
7
+ class Eta < RTransmission::Type
8
8
  MAP = {-1 => :not_available, -2 => :unknown}
9
9
 
10
10
  def self.unmap(value)
@@ -3,14 +3,14 @@
3
3
  # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
4
 
5
5
  module RTransmission
6
- module Fields
7
- class Percent
8
- def self.unmap(value)
9
- value
10
- end
6
+ module Types
7
+ class File < RTransmission::Type
8
+ attribute 'name'
9
+ attribute 'length'
10
+ attribute 'bytesCompleted'
11
11
 
12
- def self.map(value)
13
- value
12
+ def self.unmap(value)
13
+ RTransmission::Types::File.new(value)
14
14
  end
15
15
  end
16
16
  end
@@ -0,0 +1,17 @@
1
+ # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
+ # All rights reserved.
3
+ # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
+
5
+ module RTransmission
6
+ module Types
7
+ class FileStat < RTransmission::Type
8
+ attribute 'bytesCompleted'
9
+ attribute 'wanted', :name => :wanted?
10
+ attribute 'priority', :type => :priority
11
+
12
+ def self.unmap(value)
13
+ RTransmission::Types::FileStat.new(value)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,30 @@
1
+ # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
+ # All rights reserved.
3
+ # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
+
5
+ module RTransmission
6
+ module Types
7
+ class Peer < RTransmission::Type
8
+ attribute 'address'
9
+ attribute 'clientIsChoked', :name => :client_choked?
10
+ attribute 'clientIsInterested', :name => :client_interested?
11
+ attribute 'clientName'
12
+ attribute 'flagStr'
13
+ attribute 'isDownloadingFrom', :name => :downloading_from?
14
+ attribute 'isEncrypted', :name => :encrypted?
15
+ attribute 'isIncoming', :name => :incoming?
16
+ attribute 'isUTP', :name => :utp?
17
+ attribute 'isUploadingTo', :name => :uploading_to?
18
+ attribute 'peerIsChoked', :name => :peer_choked?
19
+ attribute 'peerIsInterested', :name => :peer_interested?
20
+ attribute 'port'
21
+ attribute 'progress'
22
+ attribute 'rateToClient'
23
+ attribute 'rateToPeer'
24
+
25
+ def self.unmap(value)
26
+ RTransmission::Types::Peer.new(value)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,20 @@
1
+ # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
+ # All rights reserved.
3
+ # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
+
5
+ module RTransmission
6
+ module Types
7
+ class PeersFrom < RTransmission::Type
8
+ attribute 'fromCache', :name => :cache
9
+ attribute 'fromDht', :name => :dht
10
+ attribute 'fromIncoming', :name => :incoming
11
+ attribute 'fromLtep', :name => :ltep
12
+ attribute 'fromPex', :name => :pex
13
+ attribute 'fromTracker', :name => :tracker
14
+
15
+ def self.unmap(value)
16
+ RTransmission::Types::PeersFrom.new(value)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -3,8 +3,8 @@
3
3
  # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
4
 
5
5
  module RTransmission
6
- module Fields
7
- class Priority
6
+ module Types
7
+ class Priority < RTransmission::Type
8
8
  MAP = {-1 => :low, 0 => :normal, 1 => :high}
9
9
 
10
10
  def self.unmap(value)
@@ -3,8 +3,8 @@
3
3
  # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
4
 
5
5
  module RTransmission
6
- module Fields
7
- class SeedIdleMode
6
+ module Types
7
+ class SeedIdleMode < RTransmission::Type
8
8
  MAP = {0 => :global, 1 => :single, 2 => :unlimited}
9
9
 
10
10
  def self.unmap(value)
@@ -3,8 +3,8 @@
3
3
  # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
4
 
5
5
  module RTransmission
6
- module Fields
7
- class SeedRatioMode
6
+ module Types
7
+ class SeedRatioMode < RTransmission::Type
8
8
  MAP = {0 => :global, 1 => :single, 2 => :unlimited}
9
9
 
10
10
  def self.unmap(value)
@@ -0,0 +1,21 @@
1
+ # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
+ # All rights reserved.
3
+ # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
+
5
+ module RTransmission
6
+ module Types
7
+ class Stats < RTransmission::Type
8
+ attribute 'activeTorrentCount'
9
+ attribute 'downloadSpeed'
10
+ attribute 'pausedTorrentCount'
11
+ attribute 'torrentCount'
12
+ attribute 'uploadSpeed'
13
+ attribute 'cumulative-stats', :type => :traffic_stats
14
+ attribute 'current-stats', :type => :traffic_stats
15
+
16
+ def self.unmap(value)
17
+ RTransmission::Types::Stats.new(value)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -3,8 +3,8 @@
3
3
  # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
4
 
5
5
  module RTransmission
6
- module Fields
7
- class Status
6
+ module Types
7
+ class Status < RTransmission::Type
8
8
  MAP = {1 => :check_wait, 2 => :check, 4 => :download, 8 => :seed, 16 => :stopped}
9
9
 
10
10
  def self.unmap(value)
@@ -3,8 +3,8 @@
3
3
  # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
4
 
5
5
  module RTransmission
6
- module Fields
7
- class Time
6
+ module Types
7
+ class Time < RTransmission::Type
8
8
  def self.unmap(value)
9
9
  value == 0 ? nil : ::Time.at(value)
10
10
  end
@@ -0,0 +1,18 @@
1
+ # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
+ # All rights reserved.
3
+ # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
+
5
+ module RTransmission
6
+ module Types
7
+ class Tracker < RTransmission::Type
8
+ attribute 'id'
9
+ attribute 'announce'
10
+ attribute 'scrape'
11
+ attribute 'tier'
12
+
13
+ def self.unmap(value)
14
+ RTransmission::Types::Tracker.new(value)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,41 @@
1
+ # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
+ # All rights reserved.
3
+ # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
+
5
+ # FIXME: add types where needed
6
+ module RTransmission
7
+ module Types
8
+ class TrackerStat < RTransmission::Type
9
+ attribute 'id'
10
+ attribute 'announce'
11
+ attribute 'announceState', :type => :tracker_state
12
+ attribute 'downloadCount'
13
+ attribute 'hasAnnounced', :name => :announced?
14
+ attribute 'hasScraped', :name => :scraped?
15
+ attribute 'host'
16
+ attribute 'isBackup', :name => :backup?
17
+ attribute 'lastAnnouncePeerCount'
18
+ attribute 'lastAnnounceResult'
19
+ attribute 'lastAnnounceStartTime', :type => :time
20
+ attribute 'lastAnnounceSucceeded', :name => :last_announce_succeeded?
21
+ attribute 'lastAnnounceTime', :type => :time
22
+ attribute 'lastAnnounceTimedOut', :name => :last_announce_timed_out?
23
+ attribute 'lastScrapeResult'
24
+ attribute 'lastScrapeStartTime', :type => :time
25
+ attribute 'lastScrapeSucceeded', :name => :last_scrape_succeeded?
26
+ attribute 'lastScrapeTime', :type => :time
27
+ attribute 'lastScrapeTimedOut', :name => :last_scrape_timed_out?
28
+ attribute 'leecherCount'
29
+ attribute 'nextAnnounceTime', :type => :time
30
+ attribute 'nextScrapeTime', :type => :time
31
+ attribute 'scrape'
32
+ attribute 'scrapeState', :type => :tracker_state
33
+ attribute 'seederCount'
34
+ attribute 'tier'
35
+
36
+ def self.unmap(value)
37
+ RTransmission::Types::TrackerStat.new(value)
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,15 @@
1
+ # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
+ # All rights reserved.
3
+ # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
+
5
+ module RTransmission
6
+ module Types
7
+ class TrackerState < RTransmission::Type
8
+ MAP = {0 => :inactive, 1 => :waiting, 2 => :queued, 3 => :active}
9
+
10
+ def self.unmap(value)
11
+ MAP[value]
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
+ # All rights reserved.
3
+ # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
+
5
+ module RTransmission
6
+ module Types
7
+ class TrafficStats < RTransmission::Type
8
+ attribute 'uploadedBytes'
9
+ attribute 'downloadedBytes'
10
+ attribute 'filesAdded'
11
+ attribute 'sessionCount'
12
+ attribute 'secondsActive'
13
+
14
+ def self.unmap(value)
15
+ RTransmission::Types::TrafficStats.new(value)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -5,7 +5,7 @@
5
5
  module RTransmission
6
6
  module VERSION
7
7
  MAJOR = 0
8
- MINOR = 2
8
+ MINOR = 3
9
9
 
10
10
  STRING = [MAJOR, MINOR].join('.')
11
11
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: rtransmission
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: "0.2"
5
+ version: "0.3"
6
6
  platform: ruby
7
7
  authors:
8
8
  - Andrew Kirilenko
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-06-03 00:00:00 +03:00
13
+ date: 2011-06-07 00:00:00 +03:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
@@ -26,34 +26,33 @@ files:
26
26
  - COPYING
27
27
  - README.md
28
28
  - rtransmission.gemspec
29
- - lib/rtransmission/fields.rb
30
29
  - lib/rtransmission/client.rb
31
30
  - lib/rtransmission/session.rb
31
+ - lib/rtransmission/types/eta.rb
32
+ - lib/rtransmission/types/time.rb
33
+ - lib/rtransmission/types/tracker_stat.rb
34
+ - lib/rtransmission/types/encryption.rb
35
+ - lib/rtransmission/types/error.rb
36
+ - lib/rtransmission/types/tracker.rb
37
+ - lib/rtransmission/types/stats.rb
38
+ - lib/rtransmission/types/peers_from.rb
39
+ - lib/rtransmission/types/file_stat.rb
40
+ - lib/rtransmission/types/tracker_state.rb
41
+ - lib/rtransmission/types/file.rb
42
+ - lib/rtransmission/types/status.rb
43
+ - lib/rtransmission/types/seed_ratio_mode.rb
44
+ - lib/rtransmission/types/peer.rb
45
+ - lib/rtransmission/types/priority.rb
46
+ - lib/rtransmission/types/traffic_stats.rb
47
+ - lib/rtransmission/types/seed_idle_mode.rb
48
+ - lib/rtransmission/types/day.rb
32
49
  - lib/rtransmission/version.rb
33
50
  - lib/rtransmission/torrent.rb
51
+ - lib/rtransmission/types.rb
34
52
  - lib/rtransmission/response.rb
53
+ - lib/rtransmission/type.rb
35
54
  - lib/rtransmission/exception.rb
36
55
  - lib/rtransmission/request.rb
37
- - lib/rtransmission/fields/eta.rb
38
- - lib/rtransmission/fields/time.rb
39
- - lib/rtransmission/fields/tracker_stat.rb
40
- - lib/rtransmission/fields/encryption.rb
41
- - lib/rtransmission/fields/error.rb
42
- - lib/rtransmission/fields/tracker.rb
43
- - lib/rtransmission/fields/stats.rb
44
- - lib/rtransmission/fields/peers_from.rb
45
- - lib/rtransmission/fields/file_stat.rb
46
- - lib/rtransmission/fields/percent.rb
47
- - lib/rtransmission/fields/pieces.rb
48
- - lib/rtransmission/fields/file.rb
49
- - lib/rtransmission/fields/status.rb
50
- - lib/rtransmission/fields/seed_ratio_mode.rb
51
- - lib/rtransmission/fields/peer.rb
52
- - lib/rtransmission/fields/priority.rb
53
- - lib/rtransmission/fields/traffic_stats.rb
54
- - lib/rtransmission/fields/seed_idle_mode.rb
55
- - lib/rtransmission/fields/day.rb
56
- - lib/rtransmission/field.rb
57
56
  - lib/rtransmission.rb
58
57
  has_rdoc: true
59
58
  homepage: http://github.com/iced/rtransmission
@@ -1,24 +0,0 @@
1
- # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
- # All rights reserved.
3
- # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
-
5
- module RTransmission
6
- class Field
7
- def self.unmap(value)
8
- value
9
- end
10
-
11
- def self.define_attribute(name, rpc_name, args = {})
12
- self.send :define_method, name.to_s do
13
- value = @hash[rpc_name]
14
- value = args[:type].unmap(value) if args[:type]
15
-
16
- value
17
- end
18
- end
19
-
20
- def initialize(hash)
21
- @hash = hash
22
- end
23
- end
24
- end
@@ -1,23 +0,0 @@
1
- # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
- # All rights reserved.
3
- # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
-
5
- require 'rtransmission/fields/error'
6
- require 'rtransmission/fields/eta'
7
- require 'rtransmission/fields/percent'
8
- require 'rtransmission/fields/priority'
9
- require 'rtransmission/fields/time'
10
- require 'rtransmission/fields/file'
11
- require 'rtransmission/fields/file_stat'
12
- require 'rtransmission/fields/peer'
13
- require 'rtransmission/fields/peers_from'
14
- require 'rtransmission/fields/pieces'
15
- require 'rtransmission/fields/seed_idle_mode'
16
- require 'rtransmission/fields/seed_ratio_mode'
17
- require 'rtransmission/fields/status'
18
- require 'rtransmission/fields/tracker'
19
- require 'rtransmission/fields/tracker_stat'
20
- require 'rtransmission/fields/day'
21
- require 'rtransmission/fields/encryption'
22
- require 'rtransmission/fields/traffic_stats'
23
- require 'rtransmission/fields/stats'
@@ -1,17 +0,0 @@
1
- # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
- # All rights reserved.
3
- # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
-
5
- module RTransmission
6
- module Fields
7
- class File < RTransmission::Field
8
- define_attribute :name, 'name'
9
- define_attribute :length, 'length'
10
- define_attribute :bytes_completed, 'bytesCompleted'
11
-
12
- def self.unmap(value)
13
- RTransmission::Fields::File.new(value)
14
- end
15
- end
16
- end
17
- end
@@ -1,17 +0,0 @@
1
- # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
- # All rights reserved.
3
- # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
-
5
- module RTransmission
6
- module Fields
7
- class FileStat < RTransmission::Field
8
- define_attribute :bytes_completed, 'bytesCompleted'
9
- define_attribute :wanted?, 'wanted'
10
- define_attribute :priority, 'priority', :type => RTransmission::Fields::Priority
11
-
12
- def self.unmap(value)
13
- RTransmission::Fields::FileStat.new(value)
14
- end
15
- end
16
- end
17
- end
@@ -1,30 +0,0 @@
1
- # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
- # All rights reserved.
3
- # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
-
5
- module RTransmission
6
- module Fields
7
- class Peer < RTransmission::Field
8
- define_attribute :address, 'address'
9
- define_attribute :client_choked?, 'clientIsChoked'
10
- define_attribute :client_interested?, 'clientIsInterested'
11
- define_attribute :client_name, 'clientName'
12
- define_attribute :flag_str, 'flagStr'
13
- define_attribute :downloading_from?, 'isDownloadingFrom'
14
- define_attribute :encrypted?, 'isEncrypted'
15
- define_attribute :incoming?, 'isIncoming'
16
- define_attribute :utp?, 'isUTP'
17
- define_attribute :uploading_to?, 'isUploadingTo'
18
- define_attribute :peer_choked?, 'peerIsChoked'
19
- define_attribute :peer_interested?, 'peerIsInterested'
20
- define_attribute :port, 'port'
21
- define_attribute :progress, 'progress', :type => RTransmission::Fields::Percent
22
- define_attribute :rate_to_client, 'rateToClient'
23
- define_attribute :rate_to_peer, 'rateToPeer'
24
-
25
- def self.unmap(value)
26
- RTransmission::Fields::Peer.new(value)
27
- end
28
- end
29
- end
30
- end
@@ -1,20 +0,0 @@
1
- # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
- # All rights reserved.
3
- # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
-
5
- module RTransmission
6
- module Fields
7
- class PeersFrom < RTransmission::Field
8
- define_attribute :cache, 'fromCache'
9
- define_attribute :dht, 'fromDht'
10
- define_attribute :incoming, 'fromIncoming'
11
- define_attribute :ltep, 'fromLtep'
12
- define_attribute :pex, 'fromPex'
13
- define_attribute :tracker, 'fromTracker'
14
-
15
- def self.unmap(value)
16
- RTransmission::Fields::PeersFrom.new(value)
17
- end
18
- end
19
- end
20
- end
@@ -1,13 +0,0 @@
1
- # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
- # All rights reserved.
3
- # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
-
5
- module RTransmission
6
- module Fields
7
- class Pieces
8
- def self.unmap(value)
9
- value
10
- end
11
- end
12
- end
13
- end
@@ -1,21 +0,0 @@
1
- # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
- # All rights reserved.
3
- # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
-
5
- module RTransmission
6
- module Fields
7
- class Stats < RTransmission::Field
8
- define_attribute :active_torrent_count, 'activeTorrentCount'
9
- define_attribute :download_speed, 'downloadSpeed'
10
- define_attribute :paused_torrent_count, 'pausedTorrentCount'
11
- define_attribute :torrent_count, 'torrentCount'
12
- define_attribute :upload_speed, 'uploadSpeed'
13
- define_attribute :cumulative_stats, 'cumulative-stats', :type => RTransmission::Fields::TrafficStats
14
- define_attribute :current_stats, 'current-stats', :type => RTransmission::Fields::TrafficStats
15
-
16
- def self.unmap(value)
17
- RTransmission::Fields::Stats.new(value)
18
- end
19
- end
20
- end
21
- end
@@ -1,18 +0,0 @@
1
- # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
- # All rights reserved.
3
- # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
-
5
- module RTransmission
6
- module Fields
7
- class Tracker < RTransmission::Field
8
- define_attribute :id, 'id'
9
- define_attribute :announce, 'announce'
10
- define_attribute :scrape, 'scrape'
11
- define_attribute :tier, 'tier'
12
-
13
- def self.unmap(value)
14
- RTransmission::Fields::Tracker.new(value)
15
- end
16
- end
17
- end
18
- end
@@ -1,41 +0,0 @@
1
- # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
- # All rights reserved.
3
- # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
-
5
- # FIXME: add types where needed
6
- module RTransmission
7
- module Fields
8
- class TrackerStat < RTransmission::Field
9
- define_attribute :id, 'id'
10
- define_attribute :announce, 'announce'
11
- define_attribute :announce_state, 'announceState'
12
- define_attribute :download_count, 'downloadCount'
13
- define_attribute :has_announced, 'hasAnnounced'
14
- define_attribute :has_scraped, 'hasScraped'
15
- define_attribute :host, 'host'
16
- define_attribute :is_backup, 'isBackup'
17
- define_attribute :last_announce_peer_count, 'lastAnnouncePeerCount'
18
- define_attribute :last_announce_result, 'lastAnnounceResult'
19
- define_attribute :last_announce_start_time, 'lastAnnounceStartTime'
20
- define_attribute :last_announce_succeeded, 'lastAnnounceSucceeded'
21
- define_attribute :last_announce_time, 'lastAnnounceTime'
22
- define_attribute :last_announce_timed_out, 'lastAnnounceTimedOut'
23
- define_attribute :last_scrape_result, 'lastScrapeResult'
24
- define_attribute :last_scrape_start_time, 'lastScrapeStartTime'
25
- define_attribute :last_scrape_succeeded, 'lastScrapeSucceeded'
26
- define_attribute :last_scrape_time, 'lastScrapeTime'
27
- define_attribute :last_scrape_timed_out, 'lastScrapeTimedOut'
28
- define_attribute :leecher_count, 'leecherCount'
29
- define_attribute :next_announce_time, 'nextAnnounceTime'
30
- define_attribute :next_scrape_time, 'nextScrapeTime'
31
- define_attribute :scrape, 'scrape'
32
- define_attribute :scrape_state, 'scrapeState'
33
- define_attribute :seeder_count, 'seederCount'
34
- define_attribute :tier, 'tier'
35
-
36
- def self.unmap(value)
37
- RTransmission::Fields::TrackerStat.new(value)
38
- end
39
- end
40
- end
41
- end
@@ -1,19 +0,0 @@
1
- # Copyright (c) 2011, Andrew Kirilenko <andrew.kirilenko@gmail.com>
2
- # All rights reserved.
3
- # Use of this source code is governed by a BSD-style license that can be found in the COPYING file.
4
-
5
- module RTransmission
6
- module Fields
7
- class TrafficStats < RTransmission::Field
8
- define_attribute :uploaded_bytes, 'uploadedBytes'
9
- define_attribute :downloaded_bytes, 'downloadedBytes'
10
- define_attribute :files_added, 'filesAdded'
11
- define_attribute :session_count, 'sessionCount'
12
- define_attribute :seconds_active, 'secondsActive'
13
-
14
- def self.unmap(value)
15
- RTransmission::Fields::TrafficStats.new(value)
16
- end
17
- end
18
- end
19
- end