Module: Transmission::RPC::Client

Defined in:
lib/transmission-rpc/client.rb

Overview

This communicates with Transmission’s RPC server. Transmission’s RPC is just an HTTP server with a JSON API It implements part of the [RPC 1.7.X spec](trac.transmissionbt.com/browser/branches/1.7x/doc/rpc-spec.txt)

Constant Summary collapse

API_VERSION =
'1.7'

Class Method Summary collapse

Class Method Details

.connected?Boolean

Checks if we’re connected to the Trasmission Daemon. If you’re having problems, make sure you have the Transmission Daemon installed and then try running transmission-daemon -f in your shell

Returns:

  • (Boolean)


10
11
12
13
14
15
16
17
# File 'lib/transmission-rpc/client.rb', line 10

def self.connected?
  begin
    request("session-get")
    true
  rescue
    false
  end
end

.request(method, arguments = {}, ids = []) ⇒ Object

Sends out a request to Transmission’s RPC server If you’re curious about the formatting, [read this](trac.transmissionbt.com/browser/branches/1.7x/doc/rpc-spec.txt)



21
22
23
24
25
26
27
28
29
# File 'lib/transmission-rpc/client.rb', line 21

def self.request(method, arguments = {}, ids = [])
  arguments = self.add_ids(arguments, ids) if ids.present?
  begin
    @response = RestClient.post(self.url, { :method => method, :arguments => arguments }.to_json, :x_transmission_session_id => self.session_id)
    JSON.parse(@response.body)
  rescue
    puts "Couldn't connect to Transmission. Is Transmission running at http://#{Transmission.configuration.ip}:#{Transmission.configuration.port}?"
  end
end