Awesome
gemini-php
PHP 8 Library for Gemini Protocol
For optimization reasons, some experimental features like Dokuwiki
and GTK3/Pango
was dropped from 1.0.0
release, but available in previous versions. Gemtext
component re-implemented as separated library (see Extras)
Extras
- gemtext-php - Object-oriented PHP 8 library for Gemini / Gemtext operations
Usage
composer require yggverse/gemini
Client
PHP interface for Gemini protocol queries by TLS socket connection
Request
$request = new \Yggverse\Gemini\Client\Request(
'gemini://yggverse.cities.yesterweb.org:1965/index.gmi'
);
Resolved request (SNI)
For direct connection provide resolved IP as the second argument
$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
);
Alternatively, use setResolvedHost
method of Request
object before getResponse
Request::setResolvedHost
$request->setResolvedHost(
'68.133.1.71'
)
- to resolve network address with PHP, take a look on the net-php library!
Request::getResolvedHost
Get resolved host back
Request::setHost
Request::getHost
Request::setPort
Request::getPort
Request::setPath
Request::getPath
Request::setQuery
Request::getQuery
Request::getResponse
Execute requested URL and return raw response
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
This class provides additional features for the raw response operations
$response = new \Yggverse\Gemini\Client\Response(
$request->getResponse()
);
Response::setCode
Response::getCode
Response::setMeta
Response::getMeta
Response::setBody
Response::getBody
var_dump(
$response->getBody()
);