Overview

Namespaces

  • Baguette
    • Mastodon
      • Config
      • Entity
      • Grant
      • Service
  • GuzzleHttp
    • Cookie
    • Exception
    • Handler
    • Promise
  • Psr
    • Http
      • Message
  • Teto
    • Object

Classes

  • Baguette\Mastodon\Client
  • Baguette\Mastodon\Config\DotEnvStorage
  • Baguette\Mastodon\Entity\Account
  • Baguette\Mastodon\Entity\Application
  • Baguette\Mastodon\Entity\Attachment
  • Baguette\Mastodon\Entity\Card
  • Baguette\Mastodon\Entity\Context
  • Baguette\Mastodon\Entity\Entity
  • Baguette\Mastodon\Entity\Error_
  • Baguette\Mastodon\Entity\Instance
  • Baguette\Mastodon\Entity\Mention
  • Baguette\Mastodon\Entity\Notification
  • Baguette\Mastodon\Entity\Status
  • Baguette\Mastodon\Entity\Tag
  • Baguette\Mastodon\EntityCaster
  • Baguette\Mastodon\Grant\CodeGrant
  • Baguette\Mastodon\Grant\Grant
  • Baguette\Mastodon\Grant\NoopGrant
  • Baguette\Mastodon\Grant\PasswordCredential
  • Baguette\Mastodon\Mastodon
  • Baguette\Mastodon\Requester
  • Baguette\Mastodon\Service\AuthFactory
  • Baguette\Mastodon\Service\Authorization
  • Baguette\Mastodon\Service\Scope
  • Baguette\Mastodon\Service\SessionStorage
  • Baguette\Mastodon\Service\Toot

Interfaces

  • Baguette\Mastodon\Config\Storage

Exceptions

  • Baguette\Mastodon\Service\AuthorizationException

Constants

  • Baguette\Mastodon\Entity\DATETIME_FORMAT

Functions

  • Baguette\Mastodon\authorization
  • Baguette\Mastodon\credential
  • Baguette\Mastodon\Entity\map
  • Baguette\Mastodon\Entity\mapValues
  • Baguette\Mastodon\Entity\toArrayValue
  • Baguette\Mastodon\grant
  • Baguette\Mastodon\http
  • Baguette\Mastodon\request
  • Baguette\Mastodon\scope
  • Baguette\Mastodon\session
  • Baguette\Mastodon\toot
  • Overview
  • Namespace
  • Class
 1:  2:  3:  4:  5:  6:  7:  8:  9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 
<?php

namespace Baguette\Mastodon\Service;

use Respect\Validation\Validator as v;

/**
 * Toot
 *
 * @author    USAMI Kenta <tadsan@zonu.me>
 * @copyright 2017 Baguette HQ
 * @license   https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0
 * @property-read string     $toot_string
 * @property-read int[]      $media_ids
 * @property-read int|null   $in_reply_to_id
 * @property-read string     $visibility
 * @property-read bool|null  $sensitive
 * @property-read string|null $spoiler_text
 */
class Toot
{
    use \Teto\Object\PrivateGetter;
    use \Teto\Object\ReadOnly;

    const VISIBILITY_DIRECT   = 'direct';
    const VISIBILITY_PRIVATE  = 'private';
    const VISIBILITY_UNLISTED = 'unlisted';
    const VISIBILITY_PUBLIC   = 'public';

    private static $VISIBILITIES = [
        Toot::VISIBILITY_PUBLIC,
        Toot::VISIBILITY_UNLISTED,
        Toot::VISIBILITY_PRIVATE,
        Toot::VISIBILITY_DIRECT,
    ];

    /** @var string */
    private $toot_string;
    /** @var int[] */
    private $media_ids = [];
    /** @var int|null */
    private $in_reply_to_id;
    /** @var string|null */
    private $visibility;
    /** @var bool|null */
    private $sensitive;
    /** @var string|null */
    private $spoiler_text;

    /**
     * @param string[] $scopes
     */
    public function __construct($toot_string, array $options)
    {
        v::stringType()->assert($toot_string);
        $this->toot_string = $toot_string;

        if (isset($options['media_ids'])) {
            $ids = [];
            foreach ($options['media_ids'] as $id) {
                v::intType()->assert($id);
                $ids[] = $id;
            }
            $this->media_ids = $ids;
        }

        if (isset($options['in_reply_to_id'])) {
            v::intType()->assert($options['in_reply_to_id']);
            $this->in_reply_to_id = $options['in_reply_to_id'];
        }

        if (isset($options['visibility'])) {
            v::in(Toot::$VISIBILITIES)->assert($options['visibility']);
            $this->visibility = $options['visibility'];
        }

        if (isset($options['senstitive'])) {
            v::bool()->assert($options['senstitive']);
            $this->senstitive = $options['senstitive'];
        }
    }

    /**
     * @return string
     */
    public function __toString()
    {
        if ($this->visibility === Toot::VISIBILITY_PUBLIC) {
            return $this->toot_string;
        }

        return "[{$this->visibility}]";
    }
}
ξ ^ω^)ξ Baguette PHP Mastodon API Client / SDK API documentation generated by ApiGen