Skip to content

EdCigamCo/UptimeMonitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UptimeMonitor

Описание

Эта версия добавляет поддержку CORS для интеграции с внешним клиентом (фронтендом на другом порту/домине). Бэкенд-логика и API остаются прежними, дополнительно настроены заголовки CORS и конфигурация CORS_ORIGIN.

Что добавлено

Новые компоненты

  1. CORS middleware (presentation/middleware.go):

    • CORS(corsOrigin string) func(http.HandlerFunc) http.HandlerFunc — оборачивает handlers и добавляет CORS‑заголовки
    • Обрабатывает preflight‑запросы (OPTIONS) с ответом 200 OK
  2. Расширенная конфигурация (infrastructure/config/env.go):

    • Поле CORSOrigin string в Config
    • Загрузка переменной окружения CORS_ORIGIN (по умолчанию http://localhost:3000)

Изменения в существующих компонентах

  • cmd/main.go:
    • Создание middleware: corsMiddleware := presentation.CORS(cfg.CORSOrigin)
    • Применение CORS к API эндпоинтам (/api/sites, /api/site, /api/sites/:id/history) и к /health
    • Логика воркера, graceful shutdown и остальные обработчики — без изменений

Конфигурация

Поддерживаются переменные окружения (файл .env):

PORT=8080
DB_PATH=uptime_monitor.db
CORS_ORIGIN=http://localhost:3000
  • CORS_ORIGIN — адрес клиента, которому разрешены кросс‑доменные запросы.

API эндпоинты (без изменений по контракту)

  • GET /health — проверка работоспособности
  • GET /info — информация о сервере
  • GET /check?url=<website_url> — одноразовая проверка доступности
  • POST /api/site — создать сайт
  • GET /api/sites — список сайтов с последним статусом
  • DELETE /api/site/:id — удалить сайт
  • GET /api/sites/:id/history?limit=<n> — история проверок сайта

Примеры запросов

Получить список сайтов со статусами:

curl http://localhost:8080/api/sites

Создать сайт:

curl -X POST http://localhost:8080/api/site \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

Удалить сайт:

curl -X DELETE http://localhost:8080/api/site/1

История проверок (с лимитом):

curl "http://localhost:8080/api/sites/1/history?limit=10"

Как запустить

  1. Установите зависимости:
go mod tidy
  1. Запустите сервер:
go run ./cmd/main.go

Примечания

  • CORS middleware добавляет заголовки:
    • Access-Control-Allow-Origin: <CORS_ORIGIN>
    • Access-Control-Allow-Methods: GET, POST, DELETE, OPTIONS
    • Access-Control-Allow-Headers: Content-Type
    • Access-Control-Allow-Credentials: true
  • Для preflight‑запросов (OPTIONS) middleware возвращает 200 OK до передачи управления handler’у.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages