qbt_client 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +78 -0
- data/Rakefile +7 -0
- data/lib/qbt_client/version.rb +3 -0
- data/lib/qbt_client/web_ui.rb +608 -0
- data/lib/qbt_client.rb +6 -0
- data/qbt_client.gemspec +28 -0
- data/spec/lib/qbt_client/web_ui_spec.rb +642 -0
- data/spec/lib/qbt_client_spec.rb +11 -0
- data/spec/spec_helper.rb +161 -0
- metadata +146 -0
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,161 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
|
+
require 'qbt_client'
|
3
|
+
require 'digest'
|
4
|
+
|
5
|
+
def print_response res
|
6
|
+
puts 'response:'
|
7
|
+
puts res.inspect
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_ip
|
11
|
+
'http://127.0.0.1'
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_port
|
15
|
+
8083
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_user
|
19
|
+
'admin'
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_pass
|
23
|
+
'abc'
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_torrent_url
|
27
|
+
"http://www.slackware.com/torrents/slackware64-14.1-install-dvd.torrent"
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_torrent_name
|
31
|
+
"slackware64-14.1-iso"
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_torrent_url2
|
35
|
+
"http://torrent.unix-ag.uni-kl.de/torrents/KNOPPIX_V7.4.2DVD-2014-09-28-EN.torrent"
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_torrent_name2
|
39
|
+
"KNOPPIX_V7.4.2DVD-2014-09-28-EN"
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_torrent_info client, torrent_hash, key
|
43
|
+
info = {}
|
44
|
+
client.torrent_list.each do |t|
|
45
|
+
if t["hash"] == torrent_hash
|
46
|
+
info = t
|
47
|
+
end
|
48
|
+
end
|
49
|
+
info[key]
|
50
|
+
end
|
51
|
+
|
52
|
+
def hash_from_torrent_name client, name
|
53
|
+
torrents = client.torrent_list
|
54
|
+
hash = nil
|
55
|
+
|
56
|
+
torrents.each do |t|
|
57
|
+
if t["name"] == name
|
58
|
+
hash = t["hash"]
|
59
|
+
end
|
60
|
+
end
|
61
|
+
hash
|
62
|
+
end
|
63
|
+
|
64
|
+
def delete_torrent_with_hash client, hash
|
65
|
+
unless hash.nil? or hash.empty?
|
66
|
+
client.delete_torrent_and_data hash
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def delete_torrent_with_name client, name
|
71
|
+
unless name.nil? or name.empty?
|
72
|
+
hash = hash_from_torrent_name client, name
|
73
|
+
delete_torrent_with_hash client, hash
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def download_torrent name, url
|
78
|
+
client = QbtClient::WebUI.new(test_ip, test_port, test_user, test_pass)
|
79
|
+
|
80
|
+
# If we're already downloading the torrent, delete it
|
81
|
+
delete_torrent_with_name client, name
|
82
|
+
|
83
|
+
# Start the download...
|
84
|
+
client.download url
|
85
|
+
sleep 2
|
86
|
+
|
87
|
+
hash = hash_from_torrent_name client, name
|
88
|
+
|
89
|
+
# Return the info.
|
90
|
+
[hash, name]
|
91
|
+
end
|
92
|
+
|
93
|
+
def download_and_pause_torrent name, url
|
94
|
+
client = QbtClient::WebUI.new(test_ip, test_port, test_user, test_pass)
|
95
|
+
|
96
|
+
# If we're already downloading the torrent, just pause it and return its data
|
97
|
+
hash = hash_from_torrent_name client, name
|
98
|
+
unless hash.nil?
|
99
|
+
client.pause hash
|
100
|
+
return [hash, name]
|
101
|
+
end
|
102
|
+
|
103
|
+
# Torrent not found, start the download...
|
104
|
+
client.download url
|
105
|
+
sleep 2
|
106
|
+
|
107
|
+
hash = hash_from_torrent_name client, name
|
108
|
+
|
109
|
+
# Pause the download...
|
110
|
+
client.pause hash
|
111
|
+
|
112
|
+
# Return the info.
|
113
|
+
[hash, name]
|
114
|
+
end
|
115
|
+
|
116
|
+
def given_a_downloading_torrent
|
117
|
+
download_torrent test_torrent_name, test_torrent_url
|
118
|
+
end
|
119
|
+
|
120
|
+
def given_another_downloading_torrent
|
121
|
+
download_torrent test_torrent_name2, test_torrent_url2
|
122
|
+
end
|
123
|
+
|
124
|
+
def given_a_paused_downloading_torrent
|
125
|
+
download_and_pause_torrent test_torrent_name, test_torrent_url
|
126
|
+
end
|
127
|
+
|
128
|
+
def given_another_paused_downloading_torrent
|
129
|
+
download_and_pause_torrent test_torrent_name2, test_torrent_url2
|
130
|
+
end
|
131
|
+
|
132
|
+
def torrent_exists? client, hash
|
133
|
+
return false if (client.properties(hash)).nil?
|
134
|
+
true
|
135
|
+
end
|
136
|
+
|
137
|
+
def torrent_with_name_exists? client, name
|
138
|
+
hash = hash_from_torrent_name client, name
|
139
|
+
|
140
|
+
return false if (client.properties(hash)).nil?
|
141
|
+
true
|
142
|
+
end
|
143
|
+
|
144
|
+
def md5 str
|
145
|
+
Digest::MD5.hexdigest str
|
146
|
+
end
|
147
|
+
|
148
|
+
def enable_queueing client, enable
|
149
|
+
client.set_preferences({ "queueing_enabled" => enable })
|
150
|
+
end
|
151
|
+
|
152
|
+
def delete_all_torrents
|
153
|
+
client = QbtClient::WebUI.new(test_ip, test_port, test_user, test_pass)
|
154
|
+
torrents = client.torrent_list
|
155
|
+
hash = nil
|
156
|
+
|
157
|
+
torrents.each do |t|
|
158
|
+
client.delete_torrent_and_data t["hash"]
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
metadata
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: qbt_client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jeff McAffee
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-02-11 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: httparty
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.7'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.7'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.7'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry-byebug
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: qBittorrent client
|
98
|
+
email:
|
99
|
+
- jeff@ktechsystems.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".rspec"
|
106
|
+
- ".travis.yml"
|
107
|
+
- Gemfile
|
108
|
+
- LICENSE.txt
|
109
|
+
- README.md
|
110
|
+
- Rakefile
|
111
|
+
- lib/qbt_client.rb
|
112
|
+
- lib/qbt_client/version.rb
|
113
|
+
- lib/qbt_client/web_ui.rb
|
114
|
+
- qbt_client.gemspec
|
115
|
+
- spec/lib/qbt_client/web_ui_spec.rb
|
116
|
+
- spec/lib/qbt_client_spec.rb
|
117
|
+
- spec/spec_helper.rb
|
118
|
+
homepage: https://github.com/jmcaffee/qbt_client
|
119
|
+
licenses:
|
120
|
+
- MIT
|
121
|
+
metadata: {}
|
122
|
+
post_install_message:
|
123
|
+
rdoc_options: []
|
124
|
+
require_paths:
|
125
|
+
- lib
|
126
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
requirements: []
|
137
|
+
rubyforge_project:
|
138
|
+
rubygems_version: 2.3.0
|
139
|
+
signing_key:
|
140
|
+
specification_version: 4
|
141
|
+
summary: qBittorent client
|
142
|
+
test_files:
|
143
|
+
- spec/lib/qbt_client/web_ui_spec.rb
|
144
|
+
- spec/lib/qbt_client_spec.rb
|
145
|
+
- spec/spec_helper.rb
|
146
|
+
has_rdoc:
|