tsk-51: Send message endpoint (#52)

Closes #51

Reviewed-on: phoenix/textsender-api#52
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
This commit is contained in:
phoenix
2025-12-10 21:35:02 +00:00
committed by phoenix
parent 20ffc45f89
commit 0d252bc261
32 changed files with 753 additions and 96 deletions
+39 -10
View File
@@ -3,10 +3,10 @@ package config
import (
"flag"
"fmt"
"log"
"os"
"strconv"
"git.kundeng.us/phoenix/textsender-models/tx0/config"
"github.com/joho/godotenv"
"git.kundeng.us/phoenix/textsender-api/internal/version"
@@ -17,6 +17,7 @@ type Config struct {
ServerPort string
ResetDB bool
JWTSecret string `env:"JWT_SECRET" required:"true"`
TwilioConfig *config.TwiloConfig
}
type ConnectionInfo struct {
@@ -46,7 +47,7 @@ func PrintName() {
fmt.Println(version.String())
}
func Load() *Config {
func Load() (*Config, *config.TwiloConfig, error) {
versionFlag := flag.Bool("version", false, "Print version information")
resetDb := flag.Bool("reset-db", false, "Reset the database schema and exit")
port := flag.String("port", PORT, "Server port")
@@ -57,19 +58,22 @@ func Load() *Config {
os.Exit(-1)
}
err := godotenv.Load()
if err != nil {
log.Fatal("Error loading .env file")
if err := godotenv.Load(); err != nil {
return nil, nil, fmt.Errorf("Error loading .env file")
}
unpackedConnString := UnpackDBConnString()
dbConnString := unpackedConnString.Parse()
return &Config{
DBConnString: dbConnString,
ServerPort: *port,
ResetDB: *resetDb,
JWTSecret: os.Getenv("JWT_SECRET"),
if cfg, err := TwilioConfig(); err != nil {
return nil, nil, err
} else {
return &Config{
DBConnString: dbConnString,
ServerPort: *port,
ResetDB: *resetDb,
JWTSecret: os.Getenv("JWT_SECRET"),
}, cfg, nil
}
}
@@ -124,6 +128,31 @@ func UnpackDBConnString() (connInfo ConnectionInfo) {
return
}
func TwilioConfig() (*config.TwiloConfig, error) {
authSid := os.Getenv("TWILIO_AUTH_SID")
serviceSid := os.Getenv("TWILIO_SERVICE_SID")
authToken := os.Getenv("TWILIO_AUTH_TOKEN")
phoneNumber := os.Getenv("TWILIO_PHONE_NUMBER")
if len(authSid) == 0 {
return nil, fmt.Errorf("Twilio config account sid not found")
} else if len(serviceSid) == 0 {
return nil, fmt.Errorf("Twilio config service sid not found")
} else if len(authToken) == 0 {
return nil, fmt.Errorf("Twilio config auth token not found")
} else if len(phoneNumber) == 0 {
return nil, fmt.Errorf("Twilio config phone number not found")
} else {
var cfg config.TwiloConfig
cfg.AccountSID = authSid
cfg.ServiceSID = serviceSid
cfg.AuthToken = authToken
cfg.Number = phoneNumber
return &cfg, nil
}
}
func (c *Config) GetDBConnString() string {
return c.DBConnString
}