yt-function-sdk-go/README.md

74 lines
2.1 KiB
Markdown
Raw Permalink Normal View History

2022-10-23 20:12:23 +03:00
# Набор инструментов для функций
# Пакет
Сообщение является бинарным пакетом. Для работы с ним его для начала необходимо десериализовать. Для этого используется protocol buffer
После десериализации присутствует 4 поля:
1. Параметры заголовка, которые передаются с пакетом (например http-заголовки). Формат заголовка типа key:string=valye:string
2022-10-25 12:59:22 +03:00
2. Метаданные. В этом поле передаются служебные данные для самого SDK.
2022-10-23 20:12:23 +03:00
3. Бинарные данные, которые, которые передаются в функцию
2022-10-25 09:46:24 +03:00
# Сборка
## Подготовка пакетов
```
apt install protobuf-compiler
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
```
## Подготовка файлов
```
protoc --go_out=. ./protobuf/*
```
2022-11-28 10:13:52 +03:00
# Исользование
Пример использования:
```golang
package main
import (
"git.ymnuktech.ru/ymnuk/yt-function-sdk-go.git/network"
funcSDK "git.ymnuktech.ru/ymnuk/yt-function-sdk-go.git/network"
)
func main(){
addr, exists := os.LookupEnv("NATS_ADDR")
if !exists {
addr = "nats://localhost:4222"
}
serve = funcSDK.NewServe(addr, "", "test", nil)
if serve == nil {
panic(fmt.Errorf(`serve is not created`))
}
serve.AddAccept("*")
err := serve.Run()
if err != nil {
panic(err)
}
var err error
err = serve.RegisterFunction("testFuncSimple", func(header *network.Header, paylod []byte) (result []byte, err error) {
header.ResponseHeaders["test"] = "my test"
return []byte("world"), nil
})
if err != nil {
t.Error("Has error: ", err)
return
}
var result []byte
var header *network.Header
result, header, err = serve.Call("default.test.testFuncSimple", nil, []byte("Hello"))
if err!=nil{
panic(err)
}
fmt.Println(header)
fmt.Println(string(result))
}
```