Приложение представляет из себя веб-сервер, работающий по протоколу HTTP. API сервера спроекторован в соответствии с принципами REST и JSON API.
Сервис предоставляет возможности:
- создание объекта трансляции
- удаление объекта трансляции
- получение списка существующих трансляций
- изменение состояния трансляции
Для запуска необходима версия Golang >= 1.11
$ go version
go version go1.11.5 linux/amd64
go get github.com/vadim-dmitriev/sittme
cd $GOPATH/src/github.com/vadim-dmitriev/sittme
$ go build . && ./sittme
2020/06/21 18:52:11 Service started on localhost:8080
Приложение имеет два основных источника параметров запуска:
-
Переменные окружения
- PORT содержит целочисленное значение порта, на котором должно работать приложение
- RTIMEOUT и WTIMEOUT содержат целочисленые значения времени (в секундах) читения и записи запроса/ответа соответственно
- TIMEOUT содержит целочисленное значение таймера (в секундах) перехода из состояния Interrupted в Finished
-
Аргументы запуска Аргументы запуска можно посмотреть, выполнив
./sittme --help
. Они содержат такой же набор настраиваемых параметров, как и переменне окрежения.
NOTE: Значения переменных окружения являются приоритетными.
Создание трансляции. Трансляции назначется уникальный идентификатор.
$ http POST :8080/api/v1/streams
HTTP/1.1 201 Created
Content-Length: 155
Content-Type: application/json
Date: Sun, 21 Jun 2020 16:19:27 GMT
Server: fasthttp
{
"data": {
"attributes": {
"date_modified": "2020-06-21T19:19:27.365443063+03:00",
"state": "created"
},
"id": "bd1fae7a-8b54-418f-85b1-461ed9c1d781"
},
"error": null
}
Получение списка всех существующих трансляций.
$ http GET :8080/api/v1/streams
HTTP/1.1 200 OK
Content-Length: 290
Content-Type: application/json
Date: Sun, 21 Jun 2020 16:20:44 GMT
Server: fasthttp
{
"data": [
{
"attributes": {
"date_modified": "2020-06-21T19:19:27.365443063+03:00",
"state": "created"
},
"id": "bd1fae7a-8b54-418f-85b1-461ed9c1d781"
},
{
"attributes": {
"date_modified": "2020-06-21T19:20:42.920917255+03:00",
"state": "created"
},
"id": "1955bf05-28b4-4dc4-8a2b-40b329ac4a34"
}
],
"error": null
}
Удаление трансляции с заданным уникальным идентификатором uuid
.
$ http DELETE :8080/api/v1/streams/ad7b989e-f36e-4570-967c-49ce807386c8
HTTP/1.1 204 No Content
Content-Type: application/json
Date: Sun, 21 Jun 2020 16:25:20 GMT
Server: fasthttp
Изменение состояния трансляции с заданным уникальным идентификатором uuid
. В теле запроса необходимо передать JSON следующего формата:
{
"state": "{new_state}"
}
$ echo '{"state": "active"}' | http PATCH :8080/api/v1/streams/d2a444de-d49d-4b73-aa4c-fba5bd34a8ea
HTTP/1.1 204 No Content
Content-Type: application/json
Date: Sun, 21 Jun 2020 16:28:55 GMT
Server: fasthttp