kawax / laravel-mastodon-api by revolution

Mastodon API for Laravel
30,716
25
4
Package Data
Maintainer Username: revolution
Maintainer Contact: kawaxbiz@gmail.com (kawax)
Package Create Date: 2017-05-10
Package Last Update: 2024-11-21
Home Page:
Language: PHP
License: MIT
Last Refreshed: 2024-12-23 03:25:22
Package Statistics
Total Downloads: 30,716
Monthly Downloads: 494
Daily Downloads: 6
Total Stars: 25
Total Watchers: 4
Total Forks: 2
Total Open Issues: 0

Mastodon API for Laravel

Build Status

Requirements

  • PHP >= 7.1
  • Laravel >= 5.8

Installation

Composer

composer require revolution/laravel-mastodon-api

Usage

Registering an application

By Web UI

  1. Go to your Mastodon's user preferences page.
  2. Go to development page.

By API

use Mastodon;

class MastodonController
{
    public function app()
    {
        $client_name = 'my-app';
        $redirect_uris = 'https://my-instance/callback';
        $scopes = 'read write follow';
        
        $app_info = Mastodon::domain('https://example.com')
                            ->createApp($client_name, $redirect_uris, $scopes);

        dd($app_info);
        //[
        //    'id' => '',
        //    'client_id' => '',
        //    'client_secret' => '',
        //]
     }
}

OAuth authentication

Use https://github.com/kawax/socialite-mastodon

Save account info.(id, token, username, acct...and more.)

Get statuses

$statuses = Mastodon::domain('https://example.com')
                    ->token('token')
                    ->statuses($account_id);

dd($statuses);

Get one status

$status = Mastodon::domain('https://example.com')
                  ->token('token')
                  ->status($status_id);

dd($status);

Post status

Mastodon::domain('https://example.com')->token('token');
$response = Mastodon::createStatus('test1');
$response = Mastodon::createStatus('test2', ['visibility' => 'unlisted']);

dd($response);

Any API by get or post method

$response = Mastodon::domain('https://example.com')
                    ->token('token')
                    ->get('/timelines/public', ['local' => true]);
$response = Mastodon::domain('https://example.com')
                    ->token('token')
                    ->post('/follows', ['uri' => '']);

Any API can call by call method

$response = Mastodon::domain('https://example.com')
                    ->token('token')
                    ->call('DELETE', '/statuses/1');

Any request through Guzzle

Set all data by your self.

$url = 'https://example.com/api/v1/instance';

$options = [
    'headers' => [
        'Authorization' => 'Bearer ' . $token,
    ]
]

$response = Mastodon::request('GET', $url, $options);

dd($response);

without Laravel, or without Facade

use GuzzleHttp\Client;
use Revolution\Mastodon\MastodonClient;

$mastodon = new MastodonClient(new Client);

$statuses = $mastodon->domain('https://example.com')
                     ->token('token')
                     ->statuses($account_id);

Other methods

Check public methods in Contracts/Factory.php

Streaming API

Edit $token and $url in streaming_example.php

php ./streaming_example.php

Ctrl+C to quit.

LICENSE

MIT
Copyright kawax