init
This commit is contained in:
46
webService/movies.go
Normal file
46
webService/movies.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package webService
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"gitlab.com/arkadooti.sarkar/go-boilerplate/core/appcontext"
|
||||
"gitlab.com/arkadooti.sarkar/go-boilerplate/core/log"
|
||||
"gitlab.com/arkadooti.sarkar/go-boilerplate/utils"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func (s *WebService) MovieDetails(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := appcontext.UpgradeCtx(r.Context())
|
||||
|
||||
movieName := r.URL.Query().Get("name")
|
||||
|
||||
details, err := s.DB.GetMovieDetails(ctx, movieName)
|
||||
if err != nil {
|
||||
log.GenericError(ctx, errors.New("not able to get movies from DB:"+err.Error()))
|
||||
}
|
||||
|
||||
if details.Title != "" {
|
||||
log.GenericInfo(ctx, "Sending response from DB")
|
||||
utils.ReturnOKResponse(ctx, w, details)
|
||||
return
|
||||
}
|
||||
|
||||
details, err = s.Domain.GetMovieDetailsFromApi(ctx, movieName)
|
||||
if err != nil {
|
||||
utils.ReturnErrorResponse(ctx, w, "Invalid request or IMDB error", http.StatusBadRequest, err)
|
||||
return
|
||||
}
|
||||
|
||||
if details.Title == "" {
|
||||
utils.ReturnErrorResponse(ctx, w, "No movie found with the title: "+movieName, http.StatusBadRequest, err)
|
||||
return
|
||||
}
|
||||
|
||||
if details.Title != "" {
|
||||
err = s.DB.SetMovieDetails(ctx, details)
|
||||
if err != nil {
|
||||
log.GenericError(ctx, errors.New("not able to insert into DB: "+err.Error()))
|
||||
}
|
||||
}
|
||||
log.GenericInfo(ctx, "Sending response from API endpoint")
|
||||
utils.ReturnOKResponse(ctx, w, details)
|
||||
}
|
||||
10
webService/ping.go
Normal file
10
webService/ping.go
Normal file
@@ -0,0 +1,10 @@
|
||||
package webService
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func (s *WebService) Ping(w http.ResponseWriter, r *http.Request) {
|
||||
_, _ = fmt.Fprintf(w, "alive")
|
||||
}
|
||||
18
webService/routes.go
Normal file
18
webService/routes.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package webService
|
||||
|
||||
import (
|
||||
"gitlab.com/arkadooti.sarkar/go-boilerplate/core/appcontext"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func (s *WebService) Run(ctx appcontext.AppContext) {
|
||||
s.registerPublicApis()
|
||||
s.server.Start(ctx)
|
||||
}
|
||||
|
||||
func (s *WebService) registerPublicApis() {
|
||||
s.server.AddNoAuthRoutes("Ping", http.MethodGet, "/public/ping", s.Ping)
|
||||
|
||||
//Send movie name in query (query key: 'name')
|
||||
s.server.AddNoAuthRoutes("Ping", http.MethodGet, "/public/movie-details", s.MovieDetails)
|
||||
}
|
||||
22
webService/webservice.go
Normal file
22
webService/webservice.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package webService
|
||||
|
||||
import (
|
||||
"gitlab.com/arkadooti.sarkar/go-boilerplate/core/appserver"
|
||||
"gitlab.com/arkadooti.sarkar/go-boilerplate/db"
|
||||
"gitlab.com/arkadooti.sarkar/go-boilerplate/domain"
|
||||
)
|
||||
|
||||
type WebService struct {
|
||||
Domain domain.Domain
|
||||
DB db.Databases
|
||||
server appserver.AppServer
|
||||
}
|
||||
|
||||
func NewWebService(domainService domain.Domain, db db.Databases, serviceRoute, servicePort string) *WebService {
|
||||
server := appserver.NewAppServer(servicePort, serviceRoute)
|
||||
return &WebService{
|
||||
Domain: domainService,
|
||||
DB: db,
|
||||
server: server,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user