class Transmission::Client
Constants
- CHECK
- CHECK_WAIT
- DOWNLOAD
- SEED
- SESSION_STAT_ARGS
- STATUS
- STOPPED
- TORRENT_ARGS
Public Class Methods
new(host = '127.0.0.1', port = 9091, username = nil, password = nil)
click to toggle source
# File lib/transmission-connect/client.rb, line 20 def initialize(host = '127.0.0.1', port = 9091, username = nil, password = nil) @header = username.nil? ? {} : {'Authorization' => Base64.encode64("#{username}:#{password}")} @uri = URI.parse("http://#{host}:#{port}/#{RPC_PATH}") new_connection end
Public Instance Methods
add_bt_magnet(hash)
click to toggle source
# File lib/transmission-connect/client.rb, line 34 def add_bt_magnet(hash) hash = "magnet:?xt=urn:btih:#{hash}" request('torrent-add', {:filename => hash}) end
get_info(hash = nil)
click to toggle source
# File lib/transmission-connect/client.rb, line 51 def get_info(hash = nil) args = hash.nil? ? {} : {:ids => hash.to_a} args = {:fields => TORRENT_ARGS}.merge(args) request('torrent-get', args) end
new_connection()
click to toggle source
# File lib/transmission-connect/client.rb, line 26 def new_connection @connection = Net::HTTP.start(@uri.host, @uri.port) end
pause_magnet(hash)
click to toggle source
# File lib/transmission-connect/client.rb, line 43 def pause_magnet(hash) request('torrent-stop', {:ids => hash.to_a}) end
rem_bt_magnet(hash)
click to toggle source
# File lib/transmission-connect/client.rb, line 39 def rem_bt_magnet(hash) request('torrent-remove', {:ids => hash.to_a, 'delete-local-data' => true}) end
session_stats(args = {})
click to toggle source
# File lib/transmission-connect/client.rb, line 30 def session_stats(args = {}) request('session-stats', args) end
unpause_magnet(hash)
click to toggle source
# File lib/transmission-connect/client.rb, line 47 def unpause_magnet(hash) request('torrent-start', {:ids => hash.to_a}) end
Private Instance Methods
build_json(method,attributes = {})
click to toggle source
# File lib/transmission-connect/client.rb, line 79 def build_json(method,attributes = {}) if attributes.length == 0 {'method' => method}.to_json else {'method' => method, 'arguments' => attributes }.to_json end end
request(method, args)
click to toggle source
# File lib/transmission-connect/client.rb, line 58 def request(method, args) post_data = build_json method, args begin result = @connection.post2(@uri.path, post_data, @header) rescue new_connection return request method, args end case result when Net::HTTPSuccess JSON.parse(result.read_body)['arguments'] when Net::HTTPConflict @header = @header.merge("x-transmission-session-id" => result.header["x-transmission-session-id"]) request(method, args) when Net::HTTPBadResponse request(method, args) else raise Exception end end