NAME

BusyBird::Manual::Status - Status object specification

SYNOPSIS

    use JSON;
    
    my $status = decode_json(<<'STATUS');
    {
        "id": "http://api.example.com/2291",
        "created_at": "Thu Jan 03 02:24:43 +0000 2013",
        "text": "sample status",
        "user": {
            "screen_name": "debug_ito",
            "profile_image_url": "http://img.example.com/user/debug_ito.png",
            "name": "Toshio Ito"
        },
        "busybird": {
            "level": 0,
            "acked_at": "Thu Jan 03 14:44:12 +0900 2013",
            "status_permalink" : "http://example.com/status/2291",
            "user_permalink": "http://example.com/user/debug_ito"
        }
    }
    STATUS

DESCRIPTION

This is the specification of a status object handled by BusyBird (especially BusyBird::StatusStorage and BusyBird::Timeline).

A status object is just a hash reference (or an Object in JSON format). It should be serializable to JSON and deserializable from JSON.

FIELDS

The following fields in a status object is used by BusyBird.

Note that the following list uses JSON for key notation. For example, busybird.acked_at field is $status->{busybird}{acked_at} in Perl (NOT $status->{"busybird.acked_at"}).

Status object can have fields that are not listed in this page. BusyBird tries to keep such fields untouched.

busybird.acked_at

The timestamp string at which the status is acked. If this field does not exist or it's null, the status is unacked.

The timestamp string must be parsable by BusyBird::DateTime::Format.

busybird.level

The level of the status. Level must be an integer. It may be positive or negative.

If not set, it is considered as 0.

busybird.original.id

The original ID of the status. You should set this field when you somehow convert status ID.

ID conversion is necessary when you import statuses from multiple sources with their own ID spaces, and you want to avoid ID conflict between them. BusyBird::Filter::Twitter does such conversion, for example.

If this field is set, BusyBird uses this field if necessary, e.g., when it builds permalink to the status.

If set, this string is used for the permalink URL of the status.

To further customize status permalinks, see status_permalink_builder of BusyBird::Manual::Config.

Experimental.

If set, this string is used for the permalink URL for the user.

created_at

The timestamp string at which the status is created.

The timestamp string must be parsable by BusyBird::DateTime::Format.

To customize the way BusyBird renders this timestamp, see time_zone, time_format, time_locale of BusyBird::Manual::Config.

entities

Object containing Twitter Entities.

Twitter Entities are objects annotating the status text. Currently BusyBird reads the following fields to create hyperlinks in the text.

  • entities.hashtags

  • entities.media

  • entities.urls

  • entities.user_mentions

To customize the way it renders those hyperlinks and annotated texts, see *_entitiy_url_builder and *_entity_text_builder of BusyBird::Manual::Config.

In addition to annotating the text, BusyBird renders images specified in entities.media.

extended_entities.media

Twitter embeds additional media entities under extended_entities.media field. The structure of this field is basically the same as entities.media.

BusyBird renders images specified extended_entities.media field, too.

id

ID of the status. ID may be an arbitrary string.

Status ID must be unique in a timeline. If you try to input a status whose ID already exists in the timeline, the input status is ignored.

retweeted_status

Nested status object that is the original retweeted status.

If this field is set, BusyBird considers the status containing this field is a retweet. It then renders the status in retweeted_status field and who retweeted this.

text

Status text string. The body of the status.

user.profile_image_url

URL string of the icon image of the person who created this status.

user.screen_name

Name of the person who created this status.

AUTHOR

Toshio Ito <toshioito [at] cpan.org>