🏗️ Connected media module layers into main server

This commit is contained in:
Maxim Lebedev 2023-09-30 20:10:03 +06:00
parent bd2b9f02b1
commit aeba4bbb8a
Signed by: toby3d
GPG Key ID: 1F14E25B7C119FC5
3 changed files with 54 additions and 0 deletions

2
go.mod
View File

@ -8,3 +8,5 @@ require (
)
require golang.org/x/net v0.15.0
require github.com/caarlos0/env/v9 v9.0.0

2
go.sum
View File

@ -1,3 +1,5 @@
github.com/caarlos0/env/v9 v9.0.0 h1:SI6JNsOA+y5gj9njpgybykATIylrRMklbs5ch6wO6pc=
github.com/caarlos0/env/v9 v9.0.0/go.mod h1:ye5mlCVMYh6tZ+vCgrs/B95sj88cg5Tlnc0XIzgZ020=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8=

50
main.go Normal file
View File

@ -0,0 +1,50 @@
package main
import (
"log"
"net/http"
"os"
"github.com/caarlos0/env/v9"
"source.toby3d.me/toby3d/pub/internal/domain"
mediahttpdelivery "source.toby3d.me/toby3d/pub/internal/media/delivery/http"
mediamemoryrepo "source.toby3d.me/toby3d/pub/internal/media/repository/memory"
mediaucase "source.toby3d.me/toby3d/pub/internal/media/usecase"
"source.toby3d.me/toby3d/pub/internal/urlutil"
)
var (
config = new(domain.Config)
logger = log.New(os.Stdout, "Micropub ", log.LstdFlags)
)
func init() {
if err := env.ParseWithOptions(config, env.Options{}); err != nil {
logger.Fatal("cannot parse environment variables into config:", err)
}
}
func main() {
mediaRepo := mediamemoryrepo.NewMemoryMediaRepository()
mediaUseCase := mediaucase.NewMediaUseCase(mediaRepo)
mediaHandler := mediahttpdelivery.NewHandler(mediaUseCase, *config)
server := http.Server{
Addr: config.HTTP.Bind,
Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
head, _ := urlutil.ShiftPath(r.RequestURI)
switch head {
default:
http.NotFound(w, r)
case "media":
mediaHandler.ServeHTTP(w, r)
}
}),
}
if err := server.ListenAndServe(); err != nil {
logger.Fatal("cannot listen and serve:", err)
}
}