nim/internal/settings.go

96 lines
2 KiB
Go

package internal
import (
"context"
"errors"
"log"
"os"
"strconv"
"google.golang.org/grpc"
"nim.jasinco.work/app/igapi"
)
type PR struct {
ACT_TYPE int //0 for post, 1 for revoke
ID int32
}
var (
SALT string
POSTGRES_URL string
JWT_SECRET string
FETCH_LENGTH int32
PREFORK bool
IGAPI_HOST string
CORS_ALLOW string
IGAPI_ACTIVATE bool
IGAPI_CHAN = make(chan PR, 20)
err error
conv int64
)
func ReadFromENV() error {
SALT = os.Getenv("SALT")
if len(SALT) < 8 {
return errors.New("Invalid Salt")
}
POSTGRES_URL = os.Getenv("POSTGRES_URL")
if len(POSTGRES_URL) < 1 {
return errors.New("POSTGRES_URL NOT FOUND")
}
JWT_SECRET = os.Getenv("JWT_SECRET")
if len(JWT_SECRET) < 10 {
return errors.New("INVALID JWT SECRET")
}
fetch_len_str := os.Getenv("FETCH_LENGTH")
if len(fetch_len_str) == 0 {
FETCH_LENGTH = 10
} else {
conv, err = strconv.ParseInt(fetch_len_str, 10, 32)
if err != nil {
return err
}
if conv < 1 {
return errors.New("FETCH_LENGTH should be a positive number as well over 0")
}
FETCH_LENGTH = int32(conv)
}
prefork_str := os.Getenv("PREFORK")
if len(prefork_str) == 0 {
PREFORK = false
} else {
PREFORK, err = strconv.ParseBool(prefork_str)
if err != nil {
return err
}
}
IGAPI_HOST = os.Getenv("IGAPI_HOST")
IGAPI_ACTIVATE = true
if len(IGAPI_HOST) == 0 {
log.Println("Didn't get IGAPI_HOST, it will work without it")
IGAPI_ACTIVATE = false
}
CORS_ALLOW = os.Getenv("CORS_ALLOW")
return nil
}
func IGAPI_establish() (*grpc.ClientConn, igapi.IGAPIClient) {
conn, err := grpc.NewClient(IGAPI_HOST)
if err != nil {
log.Panicf("Can't connect to igapi: %s", err.Error())
}
c := igapi.NewIGAPIClient(conn)
return conn, c
}
func IGAPI_chan_exec(c igapi.IGAPIClient) {
for id := range IGAPI_CHAN {
if id.ACT_TYPE == 0 {
c.Upload(context.Background(), &igapi.Request{Id: int64(id.ID)})
}
if id.ACT_TYPE == 1 {
c.Delete(context.Background(), &igapi.Request{Id: int64(id.ID)})
}
}
}