Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kawax/laravel-mastodon-api


https://github.com/kawax/laravel-mastodon-api

Last synced: about 1 month ago
JSON representation

Awesome Lists containing this project

README

        

# Mastodon API for Laravel

## Requirements
- PHP >= 8.2
- Laravel >= 10.0

## 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
```php
use Revolution\Mastodon\Facades\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
```php
use Revolution\Mastodon\Facades\Mastodon;

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

dd($statuses);
```

### Get one status
```php
use Revolution\Mastodon\Facades\Mastodon;

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

dd($status);
```

### Post status
```php
use Revolution\Mastodon\Facades\Mastodon;

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
```php
use Revolution\Mastodon\Facades\Mastodon;

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

```php
use Revolution\Mastodon\Facades\Mastodon;

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

### Any API can call by `call` method
```php
use Revolution\Mastodon\Facades\Mastodon;

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

### 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