Releases: YGGverse/gemini-php
0.4.0
Includes Body::findLinks
method to grab clickable links from Gemtext
Example
$request = new \Yggverse\Gemini\Client\Request(
'gemini://yggverse.cities.yesterweb.org'
);
$response = new \Yggverse\Gemini\Client\Response(
$request->getResponse()
);
$body = new \Yggverse\Gemini\Gemtext\Body(
$response->getBody()
);
var_dump(
$body->findLinks() // returns array of gemini links
);
var_dump(
$body->findLinks('http') // returns array of http links
);
Other
- add response setters
- reduce default chunk size
Full Changelog: 0.3.0...0.4.0
0.3.0
Add object-oriented API for text/gemini
(Gemtext)
Example
$request = new \Yggverse\Gemini\Client\Request(
'gemini://yggverse.cities.yesterweb.org'
);
$response = new \Yggverse\Gemini\Client\Response(
$request->getResponse()
);
$body = new \Yggverse\Gemini\Gemtext\Body(
$response->getBody()
);
var_dump(
$body->getH2()
);
foreach ($body->getLinks() as $line)
{
$link = new \Yggverse\Gemini\Gemtext\Link(
$line
);
var_dump(
$link->getAddress()
);
var_dump(
$link->getAlt()
);
var_dump(
$link->getDate(
$timestamp // get unix time from this variable
)
);
var_dump(
$timestamp
);
}
Full Changelog: 0.2.0...0.3.0
0.2.0
Completed Request / Response Client
This API make TLS socket connection simpler for PHP apps based on Composer
Example
$request = new \Yggverse\Gemini\Client\Request(
'gemini://yggverse.cities.yesterweb.org:1965/index.gmi'
);
$response = new \Yggverse\Gemini\Client\Response(
$request->getResponse()
);
var_dump(
$response->getBody()
);
Links
Full Changelog: 0.1.0...0.2.0
0.1.0
Initial release dedicated to β-Doku project!
At this point, toolkit provides DokuWiki API for Gemini protocol
Example
Reader
Read DokuWiki and convert to Gemini
$reader = new \Yggverse\Gemini\Dokuwiki\Reader(
// optional regex rule set array
);
Get or change existing regex rule (or just skip by using build-in set)
echo $reader->setRule(
'/subject/ui',
'replacement'
);
Convert DokuWiki text to Gemini markup
As wiki has lot of inline links, to make converted document well-readable, this method does not replace links with new line =>
macros, but uses inline context: Name ( URL ).
This model useful with Reader::getLinks
method, that for example appends all those related links to the document footer.
If you don't like this implementation, feel free to change it by Reader::setRule
method!
echo $reader->toGemini(
file_get_contents(
'/host/data/pages/index.txt'
)
);
Get document title
$gemini = $reader->toGemini(
file_get_contents(
'/host/data/pages/index.txt'
)
);
echo $reader->getH1(
$gemini
);
Get document links
$gemini = $reader->toGemini(
file_get_contents(
'/host/data/pages/index.txt'
)
);
echo $reader->getLinks(
$gemini
);
Filesystem
Provides methods for simple and secure interaction with DokuWiki file storage
$filesystem = new \Yggverse\Gemini\Dokuwiki\Filesystem(
'/host/data' // storage location
);
Return simple array of all files in storage
var_dump (
$filesystem->getList(
'hello:world'
)
);
Return all files under the storage folder in tree format
var_dump (
$filesystem->getTree(
'hello:world'
)
);
Return pages under the given data directory
var_dump (
$filesystem->getPagePathsByPath(
// absolute path to target data directory (e.g. Filesystem::getDirectoryPathByUri)
)
);
Return absolute path to stored page file
var_dump (
$filesystem->getPagePathByUri(
'hello:world'
)
);
Return page URI in dokuwiki:format
var_dump (
$filesystem->getPageUriByPath(
'/full/path/to/page.txt'
)
);
Return absolute path to stored media file
var_dump (
$filesystem->getMediaPathByUri(
'hello:world'
)
);
Return file MIME if path match storage item
var_dump (
$filesystem->getMimeByPath(
'/full/path/to/page.txt'
)
);
Return file content if path match storage item
var_dump (
$filesystem->getDataByPath(
'/full/path/to/page.txt'
)
);
Check path exist and match storage item
var_dump (
$filesystem->isPath(
'/full/path/to/page.txt'
)
);
Helper
Useful methods to minify controller codebase
$helper = new \Yggverse\Gemini\Dokuwiki\Helper(
new \Yggverse\Gemini\Dokuwiki\Filesystem(),
new \Yggverse\Gemini\Dokuwiki\Reader()
);
Return simple array of children section links in Gemini format
var_dump (
$helper->getChildrenSectionLinksByUri(
'hello:world'
)
);
Return simple array of children page links in Gemini format
var_dump (
$helper->getChildrenPageLinksByUri(
'hello:world'
)
);
Return page link (that contain document name) in Gemini format
var_dump (
$helper->getPageLinkByPath(
$filesystem->getPagePathByUri(
'hello:world'
)
)
);
Links
Full Changelog: https://github.com/YGGverse/gemini-php/commits/0.1.0