# NAME

API::Twitter - Twitter.com API Client

# VERSION

version 0.05

# SYNOPSIS

    use API::Twitter;

    my $twitter = API::Twitter->new(
        consumer_key        => 'CONSUMER_KEY',
        consumer_secret     => 'CONSUMER_SECRET',
        access_token        => 'ACCESS_TOKEN',
        access_token_secret => 'ACCESS_TOKEN_SECRET',
        identifier          => 'IDENTIFIER',
    );

    $twitter->debug(1);
    $twitter->fatal(1);

    my $user = $twitter->users('lookup');
    my $results = $user->fetch;

    # after some introspection

    $user->update( ... );

# DESCRIPTION

This distribution provides an object-oriented thin-client library for
interacting with the Twitter ([http://twitter.com](http://twitter.com)) API. For usage and
documentation information visit [https://dev.twitter.com/rest/public](https://dev.twitter.com/rest/public).
API::Twitter is derived from [API::Client](https://metacpan.org/pod/API::Client) and inherits all of it's
functionality. Please read the documentation for API::Client for more
usage information.

# ATTRIBUTES

## access\_token

    $twitter->access_token;
    $twitter->access_token('ACCESS_TOKEN');

The access\_token attribute should be set to an API access\_token associated with
your account.

## access\_token\_secret

    $twitter->access_token_secret;
    $twitter->access_token_secret('ACCESS_TOKEN_SECRET');

The access\_token\_secret attribute should be set to an API access\_token\_secret
associated with your account.

## consumer\_key

    $twitter->consumer_key;
    $twitter->consumer_key('CONSUMER_KEY');

The consumer\_key attribute should be set to an API consumer\_key associated with
your account.

## consumer\_secret

    $twitter->consumer_secret;
    $twitter->consumer_secret('CONSUMER_SECRET');

The consumer\_secret attribute should be set to an API consumer\_secret
associated with your account.

## identifier

    $twitter->identifier;
    $twitter->identifier('IDENTIFIER');

The identifier attribute should be set to a string that identifies your app.

## debug

    $twitter->debug;
    $twitter->debug(1);

The debug attribute if true prints HTTP requests and responses to standard out.

## fatal

    $twitter->fatal;
    $twitter->fatal(1);

The fatal attribute if true promotes 4xx and 5xx server response codes to
exceptions, a [API::Client::Exception](https://metacpan.org/pod/API::Client::Exception) object.

## retries

    $twitter->retries;
    $twitter->retries(10);

The retries attribute determines how many times an HTTP request should be
retried if a 4xx or 5xx response is received. This attribute defaults to 1.

## timeout

    $twitter->timeout;
    $twitter->timeout(5);

The timeout attribute determines how long an HTTP connection should be kept
alive. This attribute defaults to 10.

## url

    $twitter->url;
    $twitter->url(Mojo::URL->new('https://api.twitter.com'));

The url attribute set the base/pre-configured URL object that will be used in
all HTTP requests. This attribute expects a [Mojo::URL](https://metacpan.org/pod/Mojo::URL) object.

## user\_agent

    $twitter->user_agent;
    $twitter->user_agent(Mojo::UserAgent->new);

The user\_agent attribute set the pre-configured UserAgent object that will be
used in all HTTP requests. This attribute expects a [Mojo::UserAgent](https://metacpan.org/pod/Mojo::UserAgent) object.

# METHODS

## action

    my $result = $twitter->action($verb, %args);

    # e.g.

    $twitter->action('head', %args);    # HEAD request
    $twitter->action('options', %args); # OPTIONS request
    $twitter->action('patch', %args);   # PATCH request

The action method issues a request to the API resource represented by the
object. The first parameter will be used as the HTTP request method. The
arguments, expected to be a list of key/value pairs, will be included in the
request if the key is either `data` or `query`.

## create

    my $results = $twitter->create(%args);

    # or

    $twitter->POST(%args);

The create method issues a `POST` request to the API resource represented by
the object. The arguments, expected to be a list of key/value pairs, will be
included in the request if the key is either `data` or `query`.

## delete

    my $results = $twitter->delete(%args);

    # or

    $twitter->DELETE(%args);

The delete method issues a `DELETE` request to the API resource represented by
the object. The arguments, expected to be a list of key/value pairs, will be
included in the request if the key is either `data` or `query`.

## fetch

    my $results = $twitter->fetch(%args);

    # or

    $twitter->GET(%args);

The fetch method issues a `GET` request to the API resource represented by the
object. The arguments, expected to be a list of key/value pairs, will be
included in the request if the key is either `data` or `query`.

## update

    my $results = $twitter->update(%args);

    # or

    $twitter->PUT(%args);

The update method issues a `PUT` request to the API resource represented by
the object. The arguments, expected to be a list of key/value pairs, will be
included in the request if the key is either `data` or `query`.

# RESOURCES

## account

    $twitter->account;

The account method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#account](https://dev.twitter.com/rest/public#account).

## application

    $twitter->application;

The application method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#application](https://dev.twitter.com/rest/public#application).

## blocks

    $twitter->blocks;

The blocks method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#blocks](https://dev.twitter.com/rest/public#blocks).

## direct\_messages

    $twitter->direct_messages;

The direct\_messages method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#direct\_messages](https://dev.twitter.com/rest/public#direct_messages).

## favorites

    $twitter->favorites;

The favorites method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#favorites](https://dev.twitter.com/rest/public#favorites).

## followers

    $twitter->followers;

The followers method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#followers](https://dev.twitter.com/rest/public#followers).

## friends

    $twitter->friends;

The friends method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#friends](https://dev.twitter.com/rest/public#friends).

## friendships

    $twitter->friendships;

The friendships method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#friendships](https://dev.twitter.com/rest/public#friendships).

## geo

    $twitter->geo;

The geo method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#geo](https://dev.twitter.com/rest/public#geo).

## help

    $twitter->help;

The help method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#help](https://dev.twitter.com/rest/public#help).

## lists

    $twitter->lists;

The lists method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#lists](https://dev.twitter.com/rest/public#lists).

## media

    $twitter->media;

The media method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#media](https://dev.twitter.com/rest/public#media).

## mutes

    $twitter->mutes;

The mutes method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#mutes](https://dev.twitter.com/rest/public#mutes).

## saved\_searches

    $twitter->saved_searches;

The saved\_searches method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#saved\_searches](https://dev.twitter.com/rest/public#saved_searches).

## search

    $twitter->search;

The search method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#search](https://dev.twitter.com/rest/public#search).

## statuses

    $twitter->statuses;

The statuses method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#statuses](https://dev.twitter.com/rest/public#statuses).

## trends

    $twitter->trends;

The trends method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#trends](https://dev.twitter.com/rest/public#trends).

## users

    $twitter->users;

The users method returns a new instance representative of the API
resource requested. This method accepts a list of path segments which will be
used in the HTTP request. The following documentation can be used to find more
information. [https://dev.twitter.com/rest/public#users](https://dev.twitter.com/rest/public#users).

# AUTHOR

Al Newkirk <anewkirk@ana.io>

# COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Al Newkirk.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
