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)}) } } }