add service_url field to shortlinks config
This commit is contained in:
parent
2e70087f63
commit
d96b5606ff
@ -1,3 +1,4 @@
|
|||||||
|
service_url: http://localhost:8081
|
||||||
http_port: 8081
|
http_port: 8081
|
||||||
grpc_port: 8082
|
grpc_port: 8082
|
||||||
postgres_url: "postgres://postgres:postgres@localhost:5432/postgres"
|
postgres_url: "postgres://postgres:postgres@localhost:5432/postgres"
|
||||||
@ -3,6 +3,7 @@ package main
|
|||||||
import "backend/pkg/config"
|
import "backend/pkg/config"
|
||||||
|
|
||||||
type IConfig interface {
|
type IConfig interface {
|
||||||
|
GetServiceUrl() string
|
||||||
GetHttpPort() uint16
|
GetHttpPort() uint16
|
||||||
GetGrpcPort() uint16
|
GetGrpcPort() uint16
|
||||||
GetPostgresUrl() string
|
GetPostgresUrl() string
|
||||||
@ -13,11 +14,16 @@ func LoadConfig(filePath string) (IConfig, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
|
ServiceUrl string `yaml:"service_url" validate:"required"`
|
||||||
HttpPort uint16 `yaml:"http_port" validate:"required"`
|
HttpPort uint16 `yaml:"http_port" validate:"required"`
|
||||||
GrpcPort uint16 `yaml:"grpc_port" validate:"required"`
|
GrpcPort uint16 `yaml:"grpc_port" validate:"required"`
|
||||||
PostgresUrl string `yaml:"postgres_url" validate:"required"`
|
PostgresUrl string `yaml:"postgres_url" validate:"required"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Config) GetServiceUrl() string {
|
||||||
|
return c.ServiceUrl
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Config) GetHttpPort() uint16 {
|
func (c *Config) GetHttpPort() uint16 {
|
||||||
return c.HttpPort
|
return c.HttpPort
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import (
|
|||||||
|
|
||||||
func NewShortlinksGrpc(log logger.Logger, shortlinkService services.ShortlinkService, host string) *ShortlinksGrpc {
|
func NewShortlinksGrpc(log logger.Logger, shortlinkService services.ShortlinkService, host string) *ShortlinksGrpc {
|
||||||
return &ShortlinksGrpc{
|
return &ShortlinksGrpc{
|
||||||
handler: NewCreateHandler(log, shortlinkService, host),
|
handler: NewShortlinkCreateHandler(log, shortlinkService, host),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -19,10 +19,10 @@ type shortlinkCreateOutput struct {
|
|||||||
Link string `json:"link"`
|
Link string `json:"link"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewCreateHandler(
|
func NewShortlinkCreateHandler(
|
||||||
log logger.Logger,
|
log logger.Logger,
|
||||||
shortlinkService services.ShortlinkService,
|
shortlinkService services.ShortlinkService,
|
||||||
host string,
|
serviceUrl string,
|
||||||
) httpserver.Handler[shortlinkCreateInput, shortlinkCreateOutput] {
|
) httpserver.Handler[shortlinkCreateInput, shortlinkCreateOutput] {
|
||||||
return func(ctx context.Context, input shortlinkCreateInput) (shortlinkCreateOutput, error) {
|
return func(ctx context.Context, input shortlinkCreateInput) (shortlinkCreateOutput, error) {
|
||||||
output := shortlinkCreateOutput{}
|
output := shortlinkCreateOutput{}
|
||||||
@ -39,13 +39,17 @@ func NewCreateHandler(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return shortlinkCreateOutput{
|
return shortlinkCreateOutput{
|
||||||
Link: fmt.Sprintf("%s/s/%s", host, linkId),
|
Link: fmt.Sprintf("%s/s/%s", serviceUrl, linkId),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewShortlinkCreateHandler(log logger.Logger, shortlinkService services.ShortlinkService, host string) gin.HandlerFunc {
|
func NewShortlinkCreateGinHandler(
|
||||||
return httpserver.WrapGin(log, NewCreateHandler(log, shortlinkService, host))
|
log logger.Logger,
|
||||||
|
shortlinkService services.ShortlinkService,
|
||||||
|
serviceUrl string,
|
||||||
|
) gin.HandlerFunc {
|
||||||
|
return httpserver.WrapGin(log, NewShortlinkCreateHandler(log, shortlinkService, serviceUrl))
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewShortlinkResolveHandler(logger logger.Logger, shortlinkService services.ShortlinkService) gin.HandlerFunc {
|
func NewShortlinkResolveHandler(logger logger.Logger, shortlinkService services.ShortlinkService) gin.HandlerFunc {
|
||||||
|
|||||||
@ -10,7 +10,6 @@ import (
|
|||||||
"backend/pkg/cache"
|
"backend/pkg/cache"
|
||||||
"backend/pkg/logger"
|
"backend/pkg/logger"
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
@ -79,7 +78,6 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func RunServer(ctx context.Context, log logger.Logger, tracer trace.Tracer, conf IConfig, shortlinkService services.ShortlinkService) {
|
func RunServer(ctx context.Context, log logger.Logger, tracer trace.Tracer, conf IConfig, shortlinkService services.ShortlinkService) {
|
||||||
host := fmt.Sprintf("http://localhost:%d", conf.GetHttpPort())
|
|
||||||
debugMode := true
|
debugMode := true
|
||||||
if !debugMode {
|
if !debugMode {
|
||||||
gin.SetMode(gin.ReleaseMode)
|
gin.SetMode(gin.ReleaseMode)
|
||||||
@ -99,13 +97,13 @@ func RunServer(ctx context.Context, log logger.Logger, tracer trace.Tracer, conf
|
|||||||
r.Use(httpserver.NewTracingMiddleware(tracer))
|
r.Use(httpserver.NewTracingMiddleware(tracer))
|
||||||
|
|
||||||
linkGroup := r.Group("/s")
|
linkGroup := r.Group("/s")
|
||||||
linkGroup.POST("/new", NewShortlinkCreateHandler(log, shortlinkService, host))
|
linkGroup.POST("/new", NewShortlinkCreateGinHandler(log, shortlinkService, conf.GetServiceUrl()))
|
||||||
linkGroup.GET("/:linkId", NewShortlinkResolveHandler(log, shortlinkService))
|
linkGroup.GET("/:linkId", NewShortlinkResolveHandler(log, shortlinkService))
|
||||||
|
|
||||||
grpcUnderlying := grpc.NewServer()
|
grpcUnderlying := grpc.NewServer()
|
||||||
shortlinks.RegisterShortlinksServer(
|
shortlinks.RegisterShortlinksServer(
|
||||||
grpcUnderlying,
|
grpcUnderlying,
|
||||||
NewShortlinksGrpc(log, shortlinkService, host),
|
NewShortlinksGrpc(log, shortlinkService, conf.GetServiceUrl()),
|
||||||
)
|
)
|
||||||
|
|
||||||
httpServer := httpserver.New(
|
httpServer := httpserver.New(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user