diff options
author | Brian Picciano <mediocregopher@gmail.com> | 2021-08-30 20:08:51 -0600 |
---|---|---|
committer | Brian Picciano <mediocregopher@gmail.com> | 2021-08-30 20:44:45 -0600 |
commit | 9343d2ea697f13e52e9199fce62a959f1954f580 (patch) | |
tree | e1e36e330a3c9891bfd8a625229a9b417ad89afa /srv/cmd | |
parent | 3e9a17abb9a9d63af3c260fba9dc404dd9c59ade (diff) |
add chat handlers and only allow POST methods
Diffstat (limited to 'srv/cmd')
-rw-r--r-- | srv/cmd/mediocre-blog/main.go | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/srv/cmd/mediocre-blog/main.go b/srv/cmd/mediocre-blog/main.go index 5d0d790..5f473ff 100644 --- a/srv/cmd/mediocre-blog/main.go +++ b/srv/cmd/mediocre-blog/main.go @@ -11,10 +11,12 @@ import ( "github.com/mediocregopher/blog.mediocregopher.com/srv/api" "github.com/mediocregopher/blog.mediocregopher.com/srv/cfg" + "github.com/mediocregopher/blog.mediocregopher.com/srv/chat" "github.com/mediocregopher/blog.mediocregopher.com/srv/mailinglist" "github.com/mediocregopher/blog.mediocregopher.com/srv/pow" "github.com/mediocregopher/mediocre-go-lib/v2/mctx" "github.com/mediocregopher/mediocre-go-lib/v2/mlog" + "github.com/mediocregopher/radix/v4" "github.com/tilinna/clock" ) @@ -45,6 +47,13 @@ func main() { apiParams.SetupCfg(cfg) ctx = mctx.WithAnnotator(ctx, &apiParams) + redisProto := cfg.String("redis-proto", "tcp", "Network protocol to connect to redis over, can be tcp or unix") + redisAddr := cfg.String("redis-addr", "127.0.0.1:6379", "Address redis is expected to listen on") + redisPoolSize := cfg.Int("redis-pool-size", 5, "Number of connections in the redis pool to keep") + + chatGlobalRoomMaxMsgs := cfg.Int("chat-global-room-max-messages", 1000, "Maximum number of messages the global chat room can retain") + chatUserIDCalcSecret := cfg.String("chat-user-id-calc-secret", "", "Secret to use when calculating user ids") + // initialization err := cfg.Init(ctx) @@ -60,6 +69,10 @@ func main() { ctx = mctx.Annotate(ctx, "dataDir", *dataDir, + "redisProto", *redisProto, + "redisAddr", *redisAddr, + "redisPoolSize", *redisPoolSize, + "chatGlobalRoomMaxMsgs", *chatGlobalRoomMaxMsgs, ) clock := clock.Realtime() @@ -92,9 +105,35 @@ func main() { ml := mailinglist.New(mlParams) + redis, err := (radix.PoolConfig{ + Size: *redisPoolSize, + }).New( + ctx, *redisProto, *redisAddr, + ) + + if err != nil { + loggerFatalErr(ctx, logger, "initializing redis pool", err) + } + defer redis.Close() + + chatGlobalRoom, err := chat.NewRoom(ctx, chat.RoomParams{ + Logger: logger.WithNamespace("global-chat-room"), + Redis: redis, + ID: "global", + MaxMessages: *chatGlobalRoomMaxMsgs, + }) + if err != nil { + loggerFatalErr(ctx, logger, "initializing global chat room", err) + } + defer chatGlobalRoom.Close() + + chatUserIDCalc := chat.NewUserIDCalculator([]byte(*chatUserIDCalcSecret)) + apiParams.Logger = logger.WithNamespace("api") apiParams.PowManager = powMgr apiParams.MailingList = ml + apiParams.GlobalRoom = chatGlobalRoom + apiParams.UserIDCalculator = chatUserIDCalc logger.Info(ctx, "listening") a, err := api.New(apiParams) |