malinkamedok / devops_course_app

Application made to check student homeworks
0 stars 0 forks source link

Приложение для проверки работ студентов курса DevOps

Приложение, отдающее курс валюты по ЦБ РФ или информацию о погоде за определенную дату. Для получения курсов валют используется официальное API ЦБ РФ. Для получения сведений о погоде используется сервис visualcrossing.

Получение курса валюты за определенную дату

GET / info / currency ##### Parameters > | name | type | data type | example | description | > |----------|----------|-----------|------------|-----------------------------| > | currency | required | string | `USD` | Валюта в стандарте ISO 4217 | > | date | optional | string | `2016-01-06` | Дата в формате YYYY-MM-DD | ##### Example output ```json { "data": { "USD": 33.4013 }, "service": "currency" } ```

Получение информации о погоде в определенном городе

GET / info / weather ##### Parameters > | name | type | data type | example | description | > |-----------|----------|-----------|-----------------|-------------------------------------| > | city | required | string | `SaintPetersburg` | Страна, город, адрес или координаты | > | date_from | optional | string | `2024-03-20` | Дата в формате YYYY-MM-DD | > | date_to | optional | string | `2024-03-26` | Дата в формате YYYY-MM-DD | ##### Example output ```json { "data": { "city": "SaintPetersburg", "from": "2024-03-25", "to": "2024-03-26", "temperature_c": { "average": 2.35, "median": 2.35, "min": -1, "max": 8 }, "humidity": { "average": 86.5, "median": 86.5, "min": 85.6, "max": 87.4 }, "pressure_mb": { "average": 1004.8, "median": 1004.8, "min": 1000.7, "max": 1008.9 } }, "service": "weather" } ```

Структура проекта

.
├── .github
│   └── workflows             # CI
├── cmd
│   └── main                  # Точка входа в приложение
├── docs                      # Проектная документация OpenApi
├── internal
│   ├── app                   # Настройки приложения
│   ├── config                # Парсинг переменных окружения (стандартный порт)
│   ├── controller
│   │   └── http
│   │       └── v1            # Endpoints
│   ├── entity                # Сущности
│   └── usecase               # Бизнес-логика приложения
│       ├── cbrf              # Обработка данных с ЦБ РФ
│       └── visualcrossing    # Обработка данных с VS
└── pkg
    ├── httpserver            # Конфигурации для работы с HTTP сервером
    └── web                   # Конфигурации для обработки JSON-ответов

Документация и запуск

Для запуска выполнить сборку приложения

docker compose

docker-compose up --build

linux machine

go mod tidy
go build -o app cmd/main/main.go
./app

running web server

Приложение запущено в облаке и доступно по ссылке

Документация

OpenApi

Переменные окружения ##### Parameters > | name | type | example | description | > |-----------|----------|----------------------------------------|-----------------------------------------------------| > | PORT | optional | `8000` | Порт приложения. default = 8000 | > | API_KEY | required | `AAAAAAAAAAAAAAA123BBBBBBB` | API ключ для сервиса visualcrossing | > | API_TOKEN | required | `0123456789:aaaaabbbbbCcccc12345DDddd` | API ключ для доступа к Telegram боту через HTTP API | > | CHAT_ID | required | `-0123456789` | ID чата в Telegram |