yt-function-sdk-go/README.md

74 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Набор инструментов для функций
# Пакет
Сообщение является бинарным пакетом. Для работы с ним его для начала необходимо десериализовать. Для этого используется protocol buffer
После десериализации присутствует 4 поля:
1. Параметры заголовка, которые передаются с пакетом (например http-заголовки). Формат заголовка типа key:string=valye:string
2. Метаданные. В этом поле передаются служебные данные для самого SDK.
3. Бинарные данные, которые, которые передаются в функцию
# Сборка
## Подготовка пакетов
```
apt install protobuf-compiler
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
```
## Подготовка файлов
```
protoc --go_out=. ./protobuf/*
```
# Исользование
Пример использования:
```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))
}
```