Noter
Утилита командной строки для создания и управления заметками
Заголовок раздела «Утилита командной строки для создания и управления заметками»[Image: ](#) [Image: ](#) [Image: ](#) [Image: ](#) [Image: ](#)
Особенности
Заголовок раздела «Особенности»- Быстрое создание заметок через командную строку
- Отправка заметок на удаленный сервер-хранилище
Установка и обновление
Заголовок раздела «Установка и обновление»Вы можете установить Noter, выполнив следующую команду, где https://your.custom.url и your_key_value - URL и ключ
вашего сервера-хранилища.
curl --user "$NOTER_AUTH" https://notes.example.com/Использование
Заголовок раздела «Использование»Чтобы создать заметку, просто выполните команду:
noter "Ваш текст заметки"Или вы можете передать текст через стандартный входной поток:
echo "Ваш текст заметки" | noterКонфигурация
Заголовок раздела «Конфигурация»После установки Noter, файл конфигурации будет создан в /usr/local/noter/noter.zconf.
Этот файл будет содержать ваши настройки URL и ключа:
NOTER_URL = "https://your.custom.url"NOTER_KEY = "your_key_value"Если при установке вы не укажете флаги
-uи-k- параметры будут пусты и программа не сможет функционировать!
Сервер-хранилище
Заголовок раздела «Сервер-хранилище»Чтобы ваш сервер мог обрабатывать заметки, он должен принимать POST-запросы с содержимым заметок. Вот пример схемы работы бэкенда:
- HTTP сервер: Ваш сервер должен принимать HTTP POST-запросы на указанный URL.
- Параметры запроса: Запрос должен содержать JSON с полем content, который содержит текст заметки.
- Аутентификация: Ваш сервер должен проверять наличие и правильность ключа API (X-API-KEY) в заголовках запроса.
- Сохранение заметки: После проверки ключа, сервер должен сохранить содержимое заметки в базе данных или другом хранилище.
Пример реализации на PHP
Заголовок раздела «Пример реализации на PHP»<?php
// Конфигурация$apiKey = "your_key_value";$database = []; // Пример хранилища (может быть заменено на базу данных)
// Проверка метода запросаif ($_SERVER['REQUEST_METHOD'] === 'POST') { $headers = getallheaders();
// Проверка API ключа if (isset($headers['X-API-KEY']) && $headers['X-API-KEY'] === $apiKey) { // Получение содержимого запроса $data = json_decode(file_get_contents('php://input'), true);
if (isset($data['content'])) { // Сохранение заметки (в примере в массиве, может быть заменено на базу данных) $database[] = $data['content']; echo json_encode(['status' => 200, 'message' => 'Note saved']); } else { echo json_encode(['status' => 400, 'message' => 'Invalid content']); } } else { echo json_encode(['status' => 403, 'message' => 'Invalid API key']); }} else { echo json_encode(['status' => 405, 'message' => 'Invalid request method']);}Пример реализации в Triangle Web
Заголовок раздела «Пример реализации в Triangle Web»<?php // config/route.php
use Triangle\Database\Manager;use Triangle\Exception\BusinessException;use Triangle\Http\{Request, Response};use Triangle\Router;
Router::post('/save', function (Request $request): Response { // Конфигурация $apiKey = "your_key_value";
// Проверка API ключа if ($request->header('X-API-KEY') === $apiKey) { if ($content = $request->post('content')) { // Генерация UUID для идентификации записи $id = generateId();
// Сохранение заметки в базе данных Manager::table('Noter')->insert(compact('id', 'content'));
// Возврат в консоль идентификатора заметки return response($id); } else { throw new BusinessException('Invalid content', 400); } } else { throw new BusinessException('Invalid API key', 403); }});Исходный код · AGPL-3.0