mirror of
https://github.com/YGGverse/titan-II.git
synced 2025-09-05 19:02:20 +00:00
init psr-4 composer package
This commit is contained in:
parent
4a02eed627
commit
ae72a00361
37
README.md
37
README.md
@ -1,40 +1,39 @@
|
||||
# Titan II
|
||||
|
||||
Gemini Protocol library for PHP.
|
||||
Gemini Protocol library for PHP 8
|
||||
|
||||
- [gemini://gemini.circumlunar.space/](gemini://gemini.circumlunar.space/)
|
||||
- [https://gemini.circumlunar.space/](https://gemini.circumlunar.space/)
|
||||
|
||||
## Basic Implentation
|
||||
## Install
|
||||
|
||||
1. `composer require yggverse/titan-ii`
|
||||
2. `openssl req -x509 -newkey rsa:4096 -keyout key.rsa -out cert.pem -days 3650 -nodes -subj "/CN=127.0.0.1"`
|
||||
3. `php server.php`
|
||||
4. `gemini://127.0.0.1`
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
<?php
|
||||
|
||||
use TitanII\Request;
|
||||
use TitanII\Response;
|
||||
use TitanII\Server;
|
||||
|
||||
$server = new Server();
|
||||
$server = new \YGGverse\TitanII\Server();
|
||||
|
||||
$server->setCert('cert.pem');
|
||||
$server->setKey('key.rsa');
|
||||
|
||||
$server->setHandler(function (Request $request): Response {
|
||||
$response = new Response();
|
||||
$server->setHandler(
|
||||
function (\YGGverse\TitanII\Request $request): \YGGverse\TitanII\Response
|
||||
{
|
||||
$response = new \YGGverse\TitanII\Response();
|
||||
|
||||
$response->setCode(20);
|
||||
$response->setMeta("text/plain");
|
||||
$response->setContent("Hello World!");
|
||||
$response->setMeta('text/plain');
|
||||
$response->setContent('Hello World!');
|
||||
|
||||
return $response;
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
$server->start();
|
||||
```
|
||||
|
||||
## Instructions
|
||||
|
||||
1. run `cd test/certs; openssl req -x509 -newkey rsa:4096 -keyout key.rsa -out cert.pem -days 3650 -nodes -subj "/CN=127.0.0.1"`
|
||||
2. run `composer install`
|
||||
3. run `cd ..; php server.php`
|
||||
4. Open `gemini://127.0.0.1`
|
@ -1,9 +1,10 @@
|
||||
{
|
||||
"name": "tdmckenney0/titan-ii",
|
||||
"version": "0.1",
|
||||
"name": "yggverse/titan-ii",
|
||||
"description": "Gemini Protocol Library",
|
||||
"keywords": [ "gemini", "gemini-protocol", "ipv6" ],
|
||||
"homepage": "https://github.com/YGGverse/titan-II",
|
||||
"type": "library",
|
||||
"license": "GPLv3",
|
||||
"license": "GPL-3.0-only",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Tanner Mckenney",
|
||||
@ -12,6 +13,8 @@
|
||||
],
|
||||
"require": {},
|
||||
"autoload": {
|
||||
"classmap": ["src/"]
|
||||
"psr-4": {
|
||||
"YGGverse\\TitanII\\": "src/"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
18
composer.lock
generated
18
composer.lock
generated
@ -1,18 +0,0 @@
|
||||
{
|
||||
"_readme": [
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "1d8aa09a1cb642af953e3d80b990a54a",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [],
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": [],
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.0.0"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace TitanII;
|
||||
namespace YGGverse\TitanII;
|
||||
|
||||
/**
|
||||
* Gemini Request
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace TitanII;
|
||||
namespace YGGverse\TitanII;
|
||||
|
||||
/**
|
||||
* Gemini Response
|
||||
|
@ -1,9 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace TitanII;
|
||||
|
||||
use TitanII\Request;
|
||||
use TitanII\Response;
|
||||
namespace YGGverse\TitanII;
|
||||
|
||||
/**
|
||||
* Gemini Server
|
||||
@ -57,9 +54,9 @@ class Server {
|
||||
*
|
||||
* Parameter 1 Callable is expected to handle the following:
|
||||
*
|
||||
* @param Request
|
||||
* @param \YGGverse\TitanII\Request
|
||||
*
|
||||
* @return Response
|
||||
* @return \YGGverse\TitanII\Response
|
||||
*/
|
||||
public function setHandler(callable $handler): self
|
||||
{
|
||||
@ -153,7 +150,7 @@ class Server {
|
||||
|
||||
stream_set_blocking($incoming, false);
|
||||
|
||||
$request = new Request($body);
|
||||
$request = new \YGGverse\TitanII\Request($body);
|
||||
|
||||
$response = call_user_func($this->handler, $request);
|
||||
|
||||
|
2
test/certs/.gitignore
vendored
2
test/certs/.gitignore
vendored
@ -1,2 +0,0 @@
|
||||
*
|
||||
!.gitignore
|
@ -1,44 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace TitanII\Test;
|
||||
|
||||
require_once(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php');
|
||||
|
||||
use TitanII\Server;
|
||||
use TitanII\Request;
|
||||
use TitanII\Response;
|
||||
|
||||
// Make a new server
|
||||
$server = new Server();
|
||||
|
||||
// Set the certs.
|
||||
$server->setCert(__DIR__ . DIRECTORY_SEPARATOR . 'certs' . DIRECTORY_SEPARATOR . 'cert.pem');
|
||||
$server->setKey(__DIR__ . DIRECTORY_SEPARATOR . 'certs' . DIRECTORY_SEPARATOR . 'key.rsa');
|
||||
|
||||
// Response Body (Gemini Text!)
|
||||
$body = <<<GEMINI
|
||||
# Titan II Lifts off!
|
||||
|
||||
The tower is clear!
|
||||
GEMINI;
|
||||
|
||||
/**
|
||||
* Set a request handler.
|
||||
*
|
||||
* This function must take a `TitanII\Request` object, and return a `TitanII\Response` object.
|
||||
*/
|
||||
$server->setHandler(function (Request $request) use (&$body): Response {
|
||||
$response = new Response();
|
||||
|
||||
$response->setMeta('text/gemini');
|
||||
$response->setContent($body);
|
||||
|
||||
echo $request;
|
||||
|
||||
return $response;
|
||||
});
|
||||
|
||||
/**
|
||||
* Boot the server!
|
||||
*/
|
||||
$server->start();
|
Loading…
x
Reference in New Issue
Block a user