refactor project tree

This commit is contained in:
yggverse 2024-04-21 21:44:47 +03:00
parent fd8d5ddf96
commit f4199191b5
14 changed files with 43 additions and 23 deletions

219
gemini/gemini-php/0.1.0.gmi Normal file
View file

@ -0,0 +1,219 @@
# gemini-php 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
``` php
$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)
``` php
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!
``` php
echo $reader->toGemini(
file_get_contents(
'/host/data/pages/index.txt'
)
);
```
Get document title
``` php
$gemini = $reader->toGemini(
file_get_contents(
'/host/data/pages/index.txt'
)
);
echo $reader->getH1(
$gemini
);
```
Get document links
``` php
$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
``` php
$filesystem = new \Yggverse\Gemini\Dokuwiki\Filesystem(
'/host/data' // storage location
);
```
Return simple array of all files in storage
``` php
var_dump (
$filesystem->getList(
'hello:world'
)
);
```
Return all files under the storage folder in tree format
``` php
var_dump (
$filesystem->getTree(
'hello:world'
)
);
```
Return pages under the given data directory
``` php
var_dump (
$filesystem->getPagePathsByPath(
// absolute path to target data directory (e.g. Filesystem::getDirectoryPathByUri)
)
);
```
Return absolute path to stored page file
``` php
var_dump (
$filesystem->getPagePathByUri(
'hello:world'
)
);
```
Return page URI in dokuwiki:format
``` php
var_dump (
$filesystem->getPageUriByPath(
'/full/path/to/page.txt'
)
);
```
Return absolute path to stored media file
``` php
var_dump (
$filesystem->getMediaPathByUri(
'hello:world'
)
);
```
Return file MIME if path match storage item
``` php
var_dump (
$filesystem->getMimeByPath(
'/full/path/to/page.txt'
)
);
```
Return file content if path match storage item
``` php
var_dump (
$filesystem->getDataByPath(
'/full/path/to/page.txt'
)
);
```
Check path exist and match storage item
``` php
var_dump (
$filesystem->isPath(
'/full/path/to/page.txt'
)
);
```
### Helper
Useful methods to minify controller codebase
``` php
$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
``` php
var_dump (
$helper->getChildrenSectionLinksByUri(
'hello:world'
)
);
```
Return simple array of children page links in Gemini format
``` php
var_dump (
$helper->getChildrenPageLinksByUri(
'hello:world'
)
);
```
Return page link (that contain document name) in Gemini format
``` php
var_dump (
$helper->getPageLinkByPath(
$filesystem->getPagePathByUri(
'hello:world'
)
)
);
```
## Links
=> https://github.com/YGGverse/gemini-php/releases/tag/0.1.0 Download gemini-php 0.1.0
=> https://github.com/YGGverse/gemini-php#dokuwiki API documentation
=> /gemini/bdoku/index.gmi β-Doku is DokuWiki Satellite for Gemini Protocol

View file

@ -0,0 +1,26 @@
# gemini-php 0.2.0
Completed Request / Response Client
This API make TLS socket connection simpler for PHP apps based on Composer
## Example
``` php
$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
=> https://github.com/YGGverse/gemini-php/releases/tag/0.2.0 Download gemini-php 0.2.0
=> https://github.com/YGGverse/Yo/blob/gemini/src/cli/document/crawl.php Feature in Yo! Crawler branch for Gemini Protocol

View file

@ -0,0 +1,55 @@
# gemini-php 0.3.0
Version 0.3.0 is here!
Includes new classes for object-oriented work with gemtext (text/gemini)
## Example
``` php
$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
);
}
```
## Links
=> https://github.com/YGGverse/gemini-php/releases/tag/0.3.0 Download gemini-php 0.3.0
=> https://github.com/YGGverse/gemini-php?tab=readme-ov-file#gemtext Gemtext API methods

View file

@ -0,0 +1,36 @@
# gemini-php 0.4.0
Includes Body::findLinks method to grab clickable links from Gemtext
## Example
``` php
$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
## Links
=> https://github.com/YGGverse/gemini-php/releases/tag/0.4.0 Download gemini-php 0.4.0

View file

@ -0,0 +1,14 @@
# gemini-php 0.4.1
Correction release
* allow nullable $length attribute
* remove chunk settings
* remove custom length value
* allow nullable response init
* fix macros name
## Links
=> https://github.com/YGGverse/gemini-php/releases/tag/0.4.1 Download gemini-php 0.4.1
=> 0.4.0.gmi Major version details

View file

@ -0,0 +1,36 @@
# gemini-php 0.5.0
Implemented Body::skipTags filter
## Example
``` php
$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->skipTags() // strip all tags
);
var_dump(
$body->skipTags(
[ // strip 1- and 2- level headers only
"##",
"###"
]
)
);
```
## Links
=> https://github.com/YGGverse/gemini-php/releases/tag/0.5.0 Download gemini-php 0.5.0

View file

@ -0,0 +1,28 @@
# gemini-php 0.6.0
Add stream context options support
## Example
``` php
$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
]
]
);
```
## Links
=> https://github.com/YGGverse/gemini-php/releases/tag/0.6.0 Download gemini-php 0.6.0
=> https://github.com/YGGverse/net-php Network Resolver in PHP 8

View file

@ -0,0 +1,35 @@
# gemini-php 0.7.0
Client::Request method now supports resolved host as optional argument!
This feature useful to
* reduce traffic usage
* increase page loading time by DNS results cache in memory
* alternative networks resolvers, isolated of system
Update dedicated to the Yo! crawler project
=> https://github.com/YGGverse/Yo/tree/gemini
## Example
``` php
$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
``` php
$request->setResolvedHost(
'68.133.1.71'
)
```
## Links
=> https://github.com/YGGverse/gemini-php/releases/tag/0.7.0 Download gemini-php 0.7.0
=> https://github.com/YGGverse/net-php Network Resolver in PHP 8

View file

@ -0,0 +1,16 @@
# gemini-php
PHP 8 / Composer Library for Gemini Protocol
=> https://github.com/YGGverse/gemini-php GitHub
## Releases
=> 0.7.0.gmi 2024-04-07 0.7.0
=> 0.6.0.gmi 2024-04-06 0.6.0
=> 0.5.0.gmi 2024-04-05 0.5.0
=> 0.4.1.gmi 2024-04-05 0.4.1
=> 0.4.0.gmi 2024-04-03 0.4.0
=> 0.3.0.gmi 2024-04-03 0.3.0
=> 0.2.0.gmi 2024-04-02 0.2.0
=> 0.1.0.gmi 2024-04-02 0.1.0