yggverse/gemini

用于 Gemini 协议的 PHP 8 库

1.0.1 2024-07-08 01:36 UTC

This package is auto-updated.

Last update: 2024-10-02 23:42:51 UTC


README

用于 Gemini 协议 的 PHP 8 库

出于优化原因,一些实验性功能如 DokuwikiGTK3/Pango 已从 1.0.0 版本中删除,但在 以前版本 中可用。 Gemtext 组件重新实现为独立的库(见 附加组件

附加组件

  • gemtext-php - 用于 Gemini/Gemtext 操作的面向对象的 PHP 8 库

用法

composer require yggverse/gemini

客户端

通过 TLS 套接字连接进行 Gemini 协议查询的 PHP 接口

请求

$request = new \Yggverse\Gemini\Client\Request(
    'gemini://yggverse.cities.yesterweb.org:1965/index.gmi'
);

解析后的请求(SNI)

对于直接连接,请将解析后的 IP 地址作为第二个参数提供

$request = new \Yggverse\Gemini\Client\Request(
    'gemini://yggverse.cities.yesterweb.org:1965/index.gmi' // target URL
    '68.133.1.71' // resolved IP, skip to use system-wide resolver
);

或者,在 getResponse 之前使用 Request 对象的 setResolvedHost 方法

Request::setResolvedHost

$request->setResolvedHost(
    '68.133.1.71'
)
  • 要使用 PHP 解析网络地址,请查看 net-php 库!

Request::getResolvedHost

获取解析后的主机

Request::setHost

Request::getHost

Request::setPort

Request::getPort

Request::setPath

Request::getPath

Request::setQuery

Request::getQuery

Request::getResponse

执行请求的 URL 并返回原始响应

var_dump(
    $request->getResponse()
);

Request::getOptions

Request::setOptions

$request = new \Yggverse\Gemini\Client\Request(
    'gemini://yggverse.cities.yesterweb.org',
    '68.133.1.71' // make direct request to the resolved host
);

$request->setOptions(
    [
        'ssl' =>
        [
            'peer_name'        => 'yggverse.cities.yesterweb.org', // SNI
            'verify_peer'      => false,
            'verify_peer_name' => false
        ]
    ]
);

响应

此类提供对原始响应操作的附加功能

$response = new \Yggverse\Gemini\Client\Response(
    $request->getResponse()
);

Response::setCode

Response::getCode

Response::setMeta

Response::getMeta

Response::setBody

Response::getBody

var_dump(
    $response->getBody()
);

集成

  • gemini-dl - Gemini 协议的 CLI 批量下载器
  • Yo! - 用于不同网络的爬虫
  • Yoda - Gemini 协议的 PHP-GTK 浏览器
  • β-Doku - Gemini 协议的 DokuWiki 卫星