retort 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/retort/core_ext.rb +1 -1
- data/lib/retort/rtorrent.rb +39 -0
- data/lib/retort/torrent.rb +29 -26
- data/lib/retort/version.rb +1 -1
- data/lib/retort.rb +1 -1
- data/spec/rtorrent/methods_spec.rb +3 -4
- metadata +5 -5
- data/lib/retort/conversion.rb +0 -40
data/lib/retort/core_ext.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
class Retort::Rtorrent
|
2
|
+
|
3
|
+
TYPES = {
|
4
|
+
time: 'to_time',
|
5
|
+
date: 'to_date',
|
6
|
+
size: 'to_xb'
|
7
|
+
}
|
8
|
+
|
9
|
+
class << self
|
10
|
+
|
11
|
+
attr_accessor :prefix, :attr_mappings, :attributes, :attributes_raw
|
12
|
+
|
13
|
+
def setup(prefix="", &block)
|
14
|
+
self.prefix = prefix
|
15
|
+
self.attributes = {}
|
16
|
+
self.attributes_raw = {}
|
17
|
+
|
18
|
+
instance_eval(&block)
|
19
|
+
end
|
20
|
+
|
21
|
+
def attribute(property, options = {}, &block)
|
22
|
+
type = options[:type]
|
23
|
+
method_name = options[:name] || property
|
24
|
+
method_name = "#{self.prefix}.#{method_name}" unless self.prefix.empty?
|
25
|
+
self.attributes_raw[property] = method_name
|
26
|
+
|
27
|
+
if TYPES.member? type
|
28
|
+
#Syntax is 'to_*=$.....'. Example : 'to_date=$d.get_creation_date'.
|
29
|
+
self.attributes[property] = "#{TYPES[type]}=$#{method_name}"
|
30
|
+
property = "#{property}_raw"
|
31
|
+
end
|
32
|
+
self.attributes[property] = method_name
|
33
|
+
end
|
34
|
+
|
35
|
+
alias method_missing attribute
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
data/lib/retort/torrent.rb
CHANGED
@@ -4,35 +4,34 @@ module Retort
|
|
4
4
|
|
5
5
|
class Torrent < Rtorrent
|
6
6
|
|
7
|
+
setup :d do
|
8
|
+
info_hash name: 'hash'
|
9
|
+
name
|
10
|
+
connection_current
|
11
|
+
size name: 'size_bytes', type: :size
|
12
|
+
completed name: 'completed_bytes', type: :size
|
13
|
+
creation_date name: 'creation_date', type: :date
|
14
|
+
downloaded name: 'bytes_done', type: :size
|
15
|
+
up_rate name: 'up.rate', type: :size
|
16
|
+
down_rate name: 'down.rate', type: :size
|
17
|
+
message name: 'get_message'
|
18
|
+
seeders name: 'peers_complete'
|
19
|
+
leechers name: 'peers_connected'
|
20
|
+
state
|
21
|
+
complete
|
22
|
+
is_active
|
23
|
+
is_hash_checked
|
24
|
+
is_hash_checking
|
25
|
+
is_multi_file
|
26
|
+
is_open
|
27
|
+
end
|
28
|
+
|
7
29
|
class << self
|
8
|
-
def attr_mappings
|
9
|
-
@@mappings ||= build(:d) do
|
10
|
-
info_hash name: 'hash'
|
11
|
-
name
|
12
|
-
connection_current
|
13
|
-
size name: 'size_bytes', type: :size
|
14
|
-
completed name: 'completed_bytes', type: :size
|
15
|
-
creation_date name: 'creation_date', type: :date
|
16
|
-
downloaded name: 'bytes_done', type: :size
|
17
|
-
up_rate name: 'up.rate', type: :size
|
18
|
-
down_rate name: 'down.rate', type: :size
|
19
|
-
message name: 'get_message'
|
20
|
-
seeders name: 'peers_complete'
|
21
|
-
leechers name: 'peers_connected'
|
22
|
-
state
|
23
|
-
complete
|
24
|
-
is_active
|
25
|
-
is_hash_checked
|
26
|
-
is_hash_checking
|
27
|
-
is_multi_file
|
28
|
-
is_open
|
29
|
-
end
|
30
|
-
end
|
31
30
|
|
32
31
|
def all(view="main")
|
33
|
-
methods =
|
32
|
+
methods = attributes.map {|key,value| "#{value}="}
|
34
33
|
Service.call("d.multicall", view, *methods).map do |r|
|
35
|
-
attributes = Hash[
|
34
|
+
attributes = Hash[self.attributes.keys.zip(r)]
|
36
35
|
Torrent.new attributes
|
37
36
|
end
|
38
37
|
end
|
@@ -50,7 +49,7 @@ module Retort
|
|
50
49
|
end
|
51
50
|
end
|
52
51
|
|
53
|
-
attr_accessor *(
|
52
|
+
attr_accessor *(attributes.keys)
|
54
53
|
|
55
54
|
def initialize(attributes)
|
56
55
|
|
@@ -66,6 +65,10 @@ module Retort
|
|
66
65
|
|
67
66
|
end
|
68
67
|
|
68
|
+
def completed_ratio
|
69
|
+
self.completed_raw/(self.size_raw.to_f)
|
70
|
+
end
|
71
|
+
|
69
72
|
def status
|
70
73
|
return "complete" if @complete.truth
|
71
74
|
end
|
data/lib/retort/version.rb
CHANGED
data/lib/retort.rb
CHANGED
@@ -2,9 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Retort::Torrent do
|
4
4
|
it "has all methods listed" do
|
5
|
-
all_methods = Retort::Service.call
|
6
|
-
torrent_methods = Retort::Torrent.
|
7
|
-
|
8
|
-
x.size.should == 0
|
5
|
+
all_methods = Retort::Service.call("system.listMethods").to_set
|
6
|
+
torrent_methods = Retort::Torrent.attributes_raw.values.to_set
|
7
|
+
torrent_methods.subset?(all_methods).should == true
|
9
8
|
end
|
10
9
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: retort
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-09-
|
12
|
+
date: 2011-09-16 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &16031180 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *16031180
|
25
25
|
description: An rTorrent xmlrpc wrapper written in ruby
|
26
26
|
email:
|
27
27
|
- marcel.morgan@gmail.com
|
@@ -38,8 +38,8 @@ files:
|
|
38
38
|
- Rakefile
|
39
39
|
- autotest/discover.rb
|
40
40
|
- lib/retort.rb
|
41
|
-
- lib/retort/conversion.rb
|
42
41
|
- lib/retort/core_ext.rb
|
42
|
+
- lib/retort/rtorrent.rb
|
43
43
|
- lib/retort/service.rb
|
44
44
|
- lib/retort/torrent.rb
|
45
45
|
- lib/retort/version.rb
|
data/lib/retort/conversion.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
class Retort::Rtorrent
|
2
|
-
|
3
|
-
TYPES = {
|
4
|
-
time: 'to_time',
|
5
|
-
date: 'to_date',
|
6
|
-
size: 'to_xb'
|
7
|
-
}
|
8
|
-
|
9
|
-
attr_accessor :attributes, :attributes_raw
|
10
|
-
|
11
|
-
def initialize(prefix)
|
12
|
-
@attributes = {}
|
13
|
-
@attributes_raw = {}
|
14
|
-
@prefix = prefix
|
15
|
-
end
|
16
|
-
|
17
|
-
def attribute(property, options = {}, &block)
|
18
|
-
type = options[:type]
|
19
|
-
method_name = options[:name] || property
|
20
|
-
method_name = "#{@prefix}.#{method_name}" unless @prefix.empty?
|
21
|
-
@attributes_raw[property] = method_name
|
22
|
-
|
23
|
-
if TYPES.member? type
|
24
|
-
#Syntax is 'to_*=$.....'. Example : 'to_date=$d.get_creation_date'.
|
25
|
-
@attributes[property] = "#{TYPES[type]}=$#{method_name}"
|
26
|
-
property = "#{property}_raw"
|
27
|
-
end
|
28
|
-
@attributes[property] = method_name
|
29
|
-
end
|
30
|
-
|
31
|
-
alias method_missing attribute
|
32
|
-
|
33
|
-
def self.build(prefix="", &block)
|
34
|
-
c = new(prefix)
|
35
|
-
c.instance_eval(&block)
|
36
|
-
c.attributes
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
|