phpexperts/tempest-highlight-api

tempest/highlight 的轻量级、Docker 化 API 服务器。

v1.5.0 2024-03-30 02:47 UTC

This package is auto-updated.

Last update: 2024-08-30 04:00:59 UTC


README

此代码托管于 https://highlight.phpexperts.pro/

许可证:MIT

https://github.com/PHPExpertsInc/highlight.phpexperts.pro/

API 路由

POST: /highlight
{
    "lang":  "language",
    "text":  "JSON-encoded text"
}
        
Output: text/html

安装说明

通过 Composer + Docker

composer create-project phpexperts/tempest-highlight-api
cd tempest-highlight-api
# Edit the desired HTTP port in `docker-compose.yml`.
docker compose up -d

通过 Git + Nginx

本地运行需要 PHP v8.3 或更高版本以及 ext-json 扩展。

sudo -s
cd /var/www
git clone https://github.com/PHPExpertsInc/highlight.phpexperts.pro
cd highlight.phpexperts.pro/

# Add a new virtualhost:
cp docker/web/sites/001_default.conf  /etc/nginx/sites-available/999_my-highlighter.conf
# Edit it and add a `server_name my.url;` directive.
systemctl restart nginx

客户端

纯 JavaScript 客户端

    <link rel="stylesheet" href="https://highlight.phpexperts.pro/css/highlight-tempest.css" />
    <code lang="JavaScript">
    console.log("Hello, World!");
    </code>
    <script src="https://highlight.phpexperts.pro/js/highlight.min.js" defer="defer"></script>

PHP 客户端

首先,composer require phpexperts/rest-speaker。然后

复制 [src/client.php] 或直接复制此代码。

    use PHPExperts\RESTSpeaker\NoAuth;
    use PHPExperts\RESTSpeaker\RESTSpeaker;

    $url = 'https://highlight.phpexperts.pro';
    $highlighter = new class(new NoAuth(), $url) extends RESTSpeaker {
        public function highlight(string $language, string $text): string
        {
            $result = $this->post('/highlight', [
                'lang' => $language,
                'text' => $text
            ]);
    
            if ($this->getLastStatusCode() === 400) {
                throw new \RuntimeException($result);
            }
    
            return $result;
        }
    };
    
    echo $highlighter->highlight('PHP', 'echo "Hello, World!\n";');