NAME
    Transmission::Client - Interface to Transmission

VERSION
    0.01

DESCRIPTION
    Transmission::Client is the main module in a collection of modules to
    communicate with Transmission. Transmission is:

     Transmission is a cross-platform BitTorrent client that is:
      * Easy
      * Lean
      * Native
      * Powerful
      * Free

    If you want to communicate with "transmission-daemon", this is a module
    which can help you with that.

    The documentation is half copy/paste from the Transmission RPC spec:
    <http://trac.transmissionbt.com/browser/trunk/doc/rpc-spec.txt>

    This module differs from P2P::Transmission in (at least) two ways: This
    one use Moose and it won't die. The latter is especially annoying in the
    constructor.

SYNOPSIS
     use Transmission::Client;

     my $client = Transmission::Client->new;
     my $torrent_id = 2;
     my $data = base64_encoded_data();

     $client->add(metainfo => $data) or confess $client->error;
     $client->remove($torrent_id) or confess $client->error;

     for my $torrent (@{ $client->torrents }) {
        print $torrent->name, "\n";
        for my $file (@{ $torrent->files }) {
            print "> ", $file->name, "\n";
        }
     }

     print $client->session->download_dir, "\n";

SEE ALSO
    Transmission::AttributeRole Transmission::Session Transmission::Torrent
    Transmission::Utils

ATTRIBUTES
  url
     $str = $self->url;

    Returns an URL to where the Transmission rpc api is. Default value is
    "http://localhost:9091/transmission/rpc";

  error
     $str = $self->error;

    Returns the last error known to the object. All methods can return empty
    list in addtion to what spesified. Check this attribute if so happens.

  username
     $str = $self->username;

    Used to authenticate against Transmission.

  password
     $str = $self->password;

    Used to authenticate against Transmission.

  timeout
     $int = $self->timeout;

    Number of seconds to wait for RPC response.

  session
     $session_obj = $self->session;
     $stats_obj = $self->stats;

    Returns an instance of Transmission::Session. "stats()" is a proxy
    method on "session".

  torrents
     $array_ref = $self->torrents;
     $self->clear_torrents;

    Returns an array-ref of Transmission::Torrent objects. Default value is
    a full list of all known torrents, with as little data as possible read
    from Transmission. This means that each request on a attribute on an
    object will require a new request to Transmission. See "read_torrents"
    for more information.

  version
     $str = $self->version;

    Get Transmission version.

  session_id
     $self->session_id($str);
     $str = $self->session_id;

    The session ID used to communicate with Transmission.

METHODS
  add
     $bool = $self->add(%args);

     key              | value type & description
     -----------------+-------------------------------------------------
     download_dir     | string    path to download the torrent to
     filename         | string    filename or URL of the .torrent file
     metainfo         | string    torrent content
     paused           | boolean   if true, don't start the torrent
     peer_limit       | number    maximum number of peers

    Either "filename" or "metainfo" MUST be included. All other arguments
    are optional.

    See "3.4 Adding a torrent" from
    <http://trac.transmissionbt.com/browser/trunk/doc/rpc-spec.txt>

  remove
     $bool = $self->remove(%args);

     key                | value type & description
     -------------------+-------------------------------------------------
     ids                | array    torrent list, as described in 3.1
     delete_local_data  | boolean  delete local data. (default: false)

    "ids" can also be the string "all". "ids" is required.

    See "3.4 Removing a torrent" from
    <http://trac.transmissionbt.com/browser/trunk/doc/rpc-spec.txt>

  move
     $bool = $self->move(%args);


     string      | value type & description
     ------------+-------------------------------------------------
     ids         | array      torrent list, as described in 3.1
     location    | string     the new torrent location
     move        | boolean    if true, move from previous location.
                 |            otherwise, search "location" for files

    "ids" can also be the string "all". "ids" and "location" is required.

    See "3.5 moving a torrent" from
    <http://trac.transmissionbt.com/browser/trunk/doc/rpc-spec.txt>

  start
     $bool = $self->start($ids);

    Will start one or more torrents. $ids can be a single int, an array of
    ints or the string "all".

  stop
     $bool = $self->stop($ids);

    Will stop one or more torrents. $ids can be a single int, an array of
    ints or the string "all".

  verify
     $bool = $self->stop($ids);

    Will verify one or more torrents. $ids can be a single int, an array of
    ints or the string "all".

  read_torrents
     @list = $self->read_torrents(%args);
     $array_ref = $self->read_torrents(%args);

     key         | value type & description
     ------------+-------------------------------------------------
     ids         | array      torrent list, as described in 3.1
                 |            this is optional
     lazy_read   | will create objects with as little data as possible.

    List context
        Returns a list of Transmission::Torrent objects and sets the
        "torrents" attribute.

    Scalar context
        Returns an array-ref of Transmission::Torrent.

  rpc
     $any = $self->rpc($method, %args);

    Communicate with backend. This methods is meant for internal use.

  read_all
     1 == $self->read_all;

    This method will try to populate ALL torrent, session and stats
    information, using three requests.

LICENSE
    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

AUTHOR
    Jan Henning Thorsen

