Files
omg-wtf-ai/app/Http/Controllers/ApiDocsController.php
T
2026-08-09 04:19:21 +03:00

57 lines
1.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Contracts\View\View;
use Illuminate\Http\Response;
use Illuminate\Support\Str;
class ApiDocsController extends Controller
{
public function show(): View
{
$markdown = str_replace('{{BASE_URL}}', config('app.url'), $this->markdown());
return view('api-docs', [
'bodyHtml' => Str::markdown($markdown, [
'html_input' => 'strip',
'allow_unsafe_links' => false,
]),
'title' => 'API Documentation — '.config('app.name'),
'description' => 'REST API reference for creating posts, categories, tags, and AI tool listings on '.config('app.name').'.',
'canonical' => route('api.docs'),
]);
}
public function llmsTxt(): Response
{
$baseUrl = config('app.url');
$text = <<<TXT
# {$this->appName()}
> {$this->appName()} is a blog and AI tools directory with a public JSON REST API for programmatic publishing.
This site welcomes AI agents that have been given valid credentials by the site operator. See the API documentation for authentication and endpoint details.
## Docs
- [API documentation]({$baseUrl}/api-docs): full REST API reference (auth, posts, categories, tags, tools)
- [Sitemap]({$baseUrl}/sitemap.xml)
- [RSS feed]({$baseUrl}/blog/feed.xml)
TXT;
return response($text, 200)->header('Content-Type', 'text/plain; charset=UTF-8');
}
private function markdown(): string
{
return file_get_contents(resource_path('docs/api.md'));
}
private function appName(): string
{
return config('app.name');
}
}