surface/laravel-webfinger

Laravel 包,用于创建 ActivityPub webfinger。

1.2.0 2023-03-12 00:00 UTC

This package is auto-updated.

Last update: 2024-09-12 19:34:55 UTC


README

这创建了一个 webfinger,一种将信息附加到电子邮件地址或其他在线资源的方式。一旦安装,你应该能在 /.well-known/webfinger 下看到你的 JSON webfinger 配置文件。

安装

您可以通过 composer 安装此包

composer require surface/laravel-webfinger

您必须在 .env 文件中添加配置

WEBFINGER_INSTANCE=mastodon.instance
WEBFINGER_USERNAME=your-username

您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="Surface\LaravelWebfinger\LaravelWebfingerServiceProvider"

扩展资源

转换为 JSON 响应的资源绑定到服务容器。这允许您轻松覆盖资源并添加额外信息。要更改绑定,请将以下内容添加到您的应用服务提供者。

use App\Http\Resources\Webfinger as WebfingerResource;
use Surface\LaravelWebfinger\Http\Resources\Webfinger as PackageWebfinger;
use Surface\LaravelWebfinger\Service\Webfinger as WebfingerService;

$this->app->bind(
    PackageWebfinger::class,
    static fn (Container $app): WebfingerResource => new WebfingerResource(
        ...$app->make(WebfingerService::class)
    )
);

然后您将创建一个自定义资源,该资源扩展了基础资源。

<?php

namespace App\Http\Resources;

use Illuminate\Http\Request;
use Illuminate\Support\Stringable;
use Surface\LaravelWebfinger\Http\Resources\Webfinger as JsonResource;

class Webfinger extends JsonResource
{
    protected string $website;

    public function __construct(protected Stringable $instance, protected Stringable $username)
    {
        parent::__construct($instance, $username);

        $this->website = 'https://www.example.com';
    }

    public function links(Request $request): array
    {
        return [
            ...parent::links($request),
            [
                'rel' => 'self',
                'type' => 'text/html',
                'href' => $this->website,
            ],
        ];
    }
}

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

致谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件