An open API service indexing awesome lists of open source software.

https://github.com/zhayt/cert


https://github.com/zhayt/cert

docker docker-compose golang postgresql redis swagger

Last synced: 3 months ago
JSON representation

Awesome Lists containing this project

README

        

# CERT

Это сервис REST API, реализованный на языке Golang. Сервис предоставляет различные конечные точки для выполнения различных операций, начиная от простого CRUD и заканчивая анализом текста и вычислением хэша на основе запросов. Сервис интегрируется с PostgreSQL и Redis.Также проект покрыт юнит-тестами, тесты написаны для всех слоев.

# How to run
### Предварительные требования
- Установленный Docker
- Установленный Docker Compose
## Установка и Запуск приложения

1. Клонируйте репозиторий проекта на свой компьютер:
```shell
git clone https://github.com/zhayt/cert-tz
```
2. Перейдите в директорию проекта:
```shell
cd ./cert-tz
```
3. Запустите приложение с помощью Docker Compose:
```shell
docker-compose up --build
```
или
```shell
./scripts/app/run.sh
```
4. Чтобы остановить приложение, выполните команду:
```shell
docker-compose down
```

### API Endpoints
#### ** Формат обмена данными JSON. Есть Testrequests.http file для проверки работы эндпойнтов**
#### Swagger документация доступна по адресу http://localhost:8000/swagger/
1. **/rest/substr**
- **POST /rest/substr/find** - endpoint для нахождения заданной подстроки. Строка
передаеться в теле HTTP запроса.
2. **/rest/email**
- **POST /rest/email/check** - endpoint, которая анализирует тело HTTP запроса и
выдает все найденные email адреса.
3. **/rest/iin**
- **POST /rest/iin/check** - endpoint, которая анализирует тело HTTP запроса и
выдает все найденные валидные иин.

4. **/rest/counter**
- **POST /rest/counter/add/$i** - увеличивает счетчика на ($i), i целое число.
- **POST /rest/counter/sub/$i** - уменьшает счетчика на ($i), i целое число.
- **GET /rest/counter/val** - выводит текущее значение счетчика.

5. **/rest/user**
- **POST /rest/user** - Создает нового пользователя с полями first_name и last_name. Возвращает идентификатор, присвоенный пользователю.
- **GET /rest/user/:id** - Достает пользователя (first name, last name).
- **PUT /rest/user/:id** - Обновляет пользователя по индентификатору i, данные передается в теле HTTP запроса.
- **DELETE /rest/user/:id** - Удоляет пользователя по индентификатору i.

6. **/rest/hash**
- **POST /rest/hash/calc** - Отправляет запрос на вычисление хэша для предоставленных в теле запроса данных. Возвращается уникальный идентификатор запроса.
- **GET /rest/hash/result/$id** - Получение результата для запроса с указанным идентификатором ($id). Возвращает "PENDING", если результат еще не вычислен, или хэш-значение, если вычисление завершено.
Одновременное вычисления хеша ограничена константой N, N = 3.

## Testing
Запуск unit тестов
```shell
go test -cover ./...
```
Перед выполнением тестов для конечных точек /rest/user и /rest/counter, соответственно, убедитесь, что проты 5432 и 6379 не заняты. Поскольку тестконтейнеры будут подниматься на эти порты