taproot / micropub-adapter
将micropub支持添加到现有或新应用程序的最简单方法。
Requires
- php: >=7.3
- nyholm/psr7: ^1.4
- psr/http-message: ^1.0
- psr/log: ^1.1||^2.0||3.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.4.x-dev||^2.0
- monolog/monolog: 2.x-dev||^3.0
- nyholm/psr7-server: dev-master
- phpunit/phpunit: ^9
- slim/slim: ^4.7
- taproot/indieauth: dev-main
- vimeo/psalm: ^4.x-dev
Suggests
- taproot/indieauth: An IndieAuth implementation built for use with taproot/micropub-adapter.
README
taproot/micropub-adapter 是通过 PSR-7 为任何 PHP 网页应用添加 Micropub 支持的简单且灵活的方式。
快速链接
安装
taproot/micropub-adapter 目前已针对 PHP 7.3, 7.4, 8.0 和 8.1 进行测试且兼容。
使用 composer 安装 taproot/micropub-adapter
composer.phar require taproot/micropub-adapter
composer.phar install (or composer.phar update)
版本发布都经过 GPG 签名,因此您可以验证代码未被篡改。
gpg --recv-keys 1C00430B19C6B426922FE534BEF8CE58118AD524
cd vendor/taproot/micropub-adapter
git tag -v v0.1.3 # Replace with the version you have installed
用法
继承 MicropubAdapter
micropub-adapter 定义了一个抽象类,Taproot\Micropub\MicropubAdapter
,该类实现了 micropub 和 micropub 媒体端点的请求处理逻辑。它解析传入的 micropub 请求并将它们分派到每个操作的回调方法(创建、删除、更新等)。它处理基本的验证和错误条件,为您规范化传入的数据,并将回调方法的返回值转换为有效的响应。
您需要做的就是继承 MicropubAdapter
并实现您要支持的操作的相应回调方法。然后,在您的应用程序中创建一个适配器实例,并在 micropub 和媒体端点请求中分别调用 handleRequest()
和 handleMediaEndpointRequest()
。
请参阅示例应用程序以了解如何继承和使用 MicropubAdapter
。
回调方法
请参阅 API 文档以了解每个回调的参数和可能的返回值。可选的回调具有默认的空操作实现。
任何功能都需要
verifyAccessTokenCallback()
:此回调负责验证用于授权 micropub 请求的访问令牌,并为其他回调提供用户/作用域数据。
micropub 端点动作回调 - 实现您用例中相关的任何回调
configurationQueryCallback()
sourceQueryCallback()
createCallback()
updateCallback()
deleteCallback()
undeleteCallback()
媒体端点回调 - 实现以启用媒体端点。由于路由超出了此库的范围,您需要将 media-endpoint
值添加到 configurationQueryCallback()
返回的数组中,以便客户端能够发现媒体端点。
扩展回调 - 这些回调在传入请求经过认证后,但在任何 micropub 特定处理之前被调用。这允许您的子类实现 micropub 扩展。这些方法的实现应检查请求是否需要扩展处理(例如,没有 url
参数的 ?q=source
请求,如果没有通过 sourceQueryCallback()
的逻辑处理,则将返回错误)。如果请求需要扩展处理,则处理它并返回响应或错误值。否则,返回 false
以继续按常规处理请求。
访问令牌和 IndieAuth
您需要一种方式来验证用于认证micropub请求的访问令牌 —— 事实上,verifyAccessTokenCallback()
是您必须实现的方法!如果您的应用还没有能够创建和验证访问令牌的 IndieAuth 端点,您可能希望使用配套库 taproot/indieauth 来为您的应用添加indieauth支持。示例应用使用了 taproot/indieauth,因此您可以参考它来了解如何一起使用这两个库。
贡献
如果您对使用此库有任何疑问,请加入 indieweb 聊天室 并联系 barnaby
。
如果您发现库中的错误或问题,或想建议新功能,请 创建一个问题。
如果讨论导致您想要提交一个拉取请求,虽然这不是必需的,但按照以下流程操作将增加其快速被接受的机会
- 将此存储库叉到您的github账户中,并将其克隆到您的开发计算机上。
- 运行
./run_coverage.sh
并确保所有测试通过 —— 您将需要XDebug来获取代码覆盖率数据。 - 如有适用,编写失败的回归测试,例如修复错误时的测试。
- 进行更改。
- 运行
./run_coverage.sh
和open docs/coverage/index.html
。确保您所做的更改已通过测试。taproot/micropub-adapter 从 0.1.0 版本开始就有 100% 的测试覆盖率,这个数字不应该下降! - 运行
./vendor/bin/psalm
并修复它带来的任何警告。 - 安装并运行
./phpDocumentor.phar
以生成文档(如有适用)。 - 推送您的更改并提交PR。
变更日志
v0.1.3
2023-07-24
- 正确处理存在多个
content-type
标头的JSON请求 —— 感谢 @oddevan!
(0.1.2 版本因标记错误提交而缺失)
v0.1.1
2022-10-03
- 更新示例以使用来自 taproot/indieauth 的最新功能
- 允许使用 psr/log v2 和 v3
- 允许在测试时使用 monolog v3
- 将 PHP 8.1 添加到测试矩阵中,启用手动调度。
v0.1.0
2021-06-24
首次发布。