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.
@@ -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: