The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Mojo::Transmission - Client for talking with Transmission BitTorrent daemon

DESCRIPTION

Mojo::Transmission is a very lightweight client for exchanging data with the Transmission BitTorrent daemon using RPC.

The documentation in this module might seem sparse, but that is because the API is completely transparent regarding the data-structure received from the Transmission API.

SYNOPSIS

  my $transmission = Mojo::Transmission->new;
  $transmission->add(url => "http://releases.ubuntu.com/17.10/ubuntu-17.10.1-desktop-amd64.iso.torrent");

  my $torrents = $transmission->torrent([]);
  $transmission->torrent(remove => $torrents[0]->{id}) if @$torrents;

ATTRIBUTES

default_trackers

  $array_ref    = $transmission->default_trackers;
  $transmission = $transmission->default_trackers([$url, ...]);

Holds a list of default trackers that can be used by "add".

ua

  $ua           = $transmission->ua;
  $transmission = $transmission->ua(Mojo::UserAgent->new);

Holds a Mojo::UserAgent used to issue requests to backend.

url

  $url          = $transmission->url;
  $transmission = $transmission->url(Mojo::URL->new);

Mojo::URL object holding the URL to the transmission daemon. Default to the TRANSMISSION_RPC_URL environment variable or "http://localhost:9091/transmission/rpc".

METHODS

add

  # Generic call
  $res          = $transmission->add(\%args);
  $transmission = $transmission->add(\%args, sub { my ($transmission, $res) = @_ });

  # magnet:?xt=${xt}&dn=${dn}&tr=${tr}
  $transmission->add({xt => "...", dn => "...", tr => [...]});

  # magnet:?xt=urn:btih:${hash}&dn=${dn}&tr=${tr}
  $transmission->add({hash => "...", dn => "...", tr => [...]});

  # Custom URL or file
  $transmission->add({url => "...", tr => [...]});

This method can be used to add a torrent. tr defaults to "default_trackers".

See also https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt#L356.

add_p

  $promise = $transmission->add_p(\%args);

Same as "add", but returns a promise.

session

  # session-get
  $transmission = $transmission->session([], sub { my ($transmission, $res) = @_; });
  $res          = $transmission->session([]);

  # session-set
  $transmission = $transmission->session(\%attrs, sub { my ($transmission, $res) = @_; });
  $res          = $transmission->session(\%attrs);

Used to get or set Transmission session arguments.

See also https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt#L444.

session_p

  $promise = $transmission->session_p([]);
  $promise = $transmission->session_p(\%args);

Same as "session", but returns a promise.

stats

  # session-stats
  $transmission = $transmission->stats(sub { my ($transmission, $res) = @_; });
  $res          = $transmission->stats;

Used to retrieve Transmission statistics.

stats_p

  $promise = $transmission->stats_p;

Same as "stats", but returns a promise.

See also https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt#L531.

torrent

  # torrent-get
  $transmission = $transmission->torrent(\@attrs, $id, sub { my ($transmission, $res) = @_; });
  $res          = $transmission->torrent(\@attrs, $id);

  # torrent-set
  $transmission = $transmission->torrent(\%attrs, $id, sub { my ($transmission, $res) = @_; });
  $res          = $transmission->torrent(\%attrs, $id);

  # torrent-$action
  $transmission = $transmission->torrent(remove  => $id, sub { my ($transmission, $res) = @_; });
  $transmission = $transmission->torrent(start   => $id, sub { my ($transmission, $res) = @_; });
  $transmission = $transmission->torrent(stop    => $id, sub { my ($transmission, $res) = @_; });
  $res          = $transmission->torrent($action => $id);

  # torrent-remove + delete-local-data
  $transmission = $transmission->torrent(purge => $id, sub { my ($transmission, $res) = @_; });

Used to get or set torrent related attributes or execute an action on a torrent.

$id can either be a scalar or an array-ref, referring to which torrents to use.

See also:

torrent_p

  $promise = $transmission->torrent_p(\@attrs, ...);
  $promise = $transmission->torrent_p(\%attrs, ...);
  $promise = $transmission->torrent_p($action => ...);

Same as "torrent", but returns a promise.

FUNCTIONS

tr_status

  use Mojo::Transmission "tr_status";
  $str = tr_status $int;

Returns a description for the $int status:

  0 = stopped
  1 = check_wait
  2 = check
  3 = download_wait
  4 = download
  5 = seed_wait
  6 = seed

Returns empty string on invalid input.

COPYRIGHT AND LICENSE

Copyright (C) 2016, Jan Henning Thorsen

This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.

AUTHOR

Jan Henning Thorsen - jhthorsen@cpan.org