Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,12 @@ Or install it yourself as:
)

torrents = transmission_api_client.all
# same as .all without arguments, but fetches only specified fields
torrents = transmission_api_client.all(fields: ['id', 'name', 'addedDate'])
# find with default fields
torrent = transmission_api_client.find(id)
# find with custom fields
torrent = transmission_api_client.find(id, fields: ['id', 'name'])
torrent = transmission_api_client.create("http://torrent.com/nice_pic.torrent")
transmission_api_client.destroy(id)

Expand Down
39 changes: 19 additions & 20 deletions lib/transmission_api/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,33 +25,32 @@ def initialize(opts)
@debug_mode = opts[:debug_mode] || false
end

def all
def all(opts = {})
log "get_torrents"

response =
post(
:method => "torrent-get",
:arguments => {
:fields => fields
}
)
fields = opts.fetch(:fields) { self.fields }

response["arguments"]["torrents"]
get_torrents(fields: fields)
end

def find(id)
def find(id, opts = {})
log "get_torrent: #{id}"

response =
post(
:method => "torrent-get",
:arguments => {
:fields => fields,
:ids => [id]
}
)
fields = opts.fetch(:fields) { self.fields }

get_torrents(:fields => fields,
:ids => [id]).first
end

response["arguments"]["torrents"].first

def get_torrents(arguments)
log "get_torrents"

post_params = { :method => "torrent-get", arguments: arguments }

response = post(post_params)

response["arguments"]["torrents"]
end

def create(filename)
Expand All @@ -76,7 +75,7 @@ def destroy(id)
:method => "torrent-remove",
:arguments => {
:ids => [id],
:"delete-local-data" => true
:"delete-local-data" => true
}
)

Expand Down
39 changes: 39 additions & 0 deletions test/client_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,19 @@ def test_all
assert_equal( "torrents", @client.all )
end

def test_all_accepts_list_of_fields
opts_expected = {
:method => "torrent-get",
:arguments => { :fields => ["overridden_field"] }
}
result = { "arguments" => { "torrents" => "torrents" } }

@client.stubs(:fields).returns(["default_field"])
@client.expects(:post).with( opts_expected ).returns( result )

assert_equal( "torrents", @client.all(fields: ['overridden_field']) )
end

def test_find
opts_expected = {
:method => "torrent-get",
Expand All @@ -121,6 +134,32 @@ def test_find
assert_equal( "torrent1", @client.find(1) )
end

def test_find_accepts_fields
opts_expected = {
:method => "torrent-get",
:arguments => { :fields => ['id'], :ids => [1] }
}
result = { "arguments" => { "torrents" => ["torrent1"] } }

@client.stubs(:fields).returns("fields")
@client.expects(:post).with( opts_expected ).returns( result )

assert_equal( "torrent1", @client.find(1, fields: ['id']) )
end

def test_get_torrents
opts_expected = {
:method => "torrent-get",
:arguments => :test_arguments
}
result = { "arguments" => { "torrents" => ["torrent1"] } }

@client.stubs(:fields).returns("fields")
@client.expects(:post).with( opts_expected ).returns( result )

assert_equal( ["torrent1"], @client.get_torrents(:test_arguments) )
end

def test_create
opts_expected = {
:method => "torrent-add",
Expand Down