The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Mojo::Snoo::User - Mojo wrapper for Reddit Users

SYNOPSIS

    use Mojo::Snoo::User;

    # OAuth ONLY. Reddit is deprecating cookie auth soon.
    my $user = Mojo::Snoo::User->new(
        username      => 'foobar',
        password      => 'very_secret',
        client_id     => 'oauth_client_id',
        client_secret => 'very_secret_oauth',
    );

    # send message to /u/foobar
    $user->send_message(
        title => 'this is not spam',
        body  => q@Hi, how ya doin'?@,
    );

    # or do non-OAuth things with a user object
    my $user = Mojo::Snoo::User->new('username');

ATTRIBUTES

name

The name of the user. This is required for object instantiation. The constructor can accept a single string value or key/value pairs. Examples:

    Mojo::Snoo::User->new('reddit_buddy')->name;
    Mojo::Snoo::User->new(name => 'reddit_buddy')->name;

METHODS

send_message

Send private message to user.

    POST /api/compose.

OAuth is required for this method.

    # OAuth is required for this endpoint
    my $user = Mojo::Snoo::User->new(%oauth, name => 'some_user');

    $user->send_message(
        title => 'title goes here',
        body  => 'body goes here',
    );

Be aware! This endpoint may require you to complete a CAPTCHA if your account lacks sufficient karma. If this happens, Mojo::Snoo::User will provide you with a CAPTCHA image link and wait for the answer via STDIN before proceding.

STDIN is really only useful for personal bots and scripts. When Mojo::Snoo supports more forms of authentication, it would be nice to let the user change this via the class constructor.

subreddit

Returns a Mojo::Snoo::Subreddit object.

thing

Returns a Mojo::Snoo::Link object.

comment

Returns a Mojo::Snoo::Comment object.

user

Returns a Mojo::Snoo::User object.

API DOCUMENTATION

Please see the official Reddit API documentation for more details regarding the usage of endpoints. For a better idea of how OAuth works, see the Quick Start and the full documentation. There is also a lot of useful information of the redditdev subreddit.

LICENSE

The (two-clause) FreeBSD License. See LICENSE for details.