Приложение для проверки работ студентов курса 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 |