feat: add http request and response

This commit is contained in:
franklin 2024-04-26 20:45:33 +02:00
parent c725ba0602
commit 0fef0ec16c
No known key found for this signature in database
4 changed files with 49 additions and 30 deletions

View File

@ -56,12 +56,15 @@ func (p *ValidationGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Reques
rets []interface{}
)
executionStart := time.Now()
listModelTypesAvailableModelTypes := p.service.ListModelTypes()
rw := gotsrpc.ResponseWriter{ResponseWriter: w}
listModelTypesAvailableModelTypes := p.service.ListModelTypes(&rw, r)
callStats.Execution = time.Since(executionStart)
rets = []interface{}{listModelTypesAvailableModelTypes}
if err := gotsrpc.Reply(rets, callStats, r, w); err != nil {
gotsrpc.ErrorCouldNotReply(w)
return
if rw.Status() == http.StatusOK {
rets = []interface{}{listModelTypesAvailableModelTypes}
if err := gotsrpc.Reply(rets, callStats, r, w); err != nil {
gotsrpc.ErrorCouldNotReply(w)
return
}
}
gotsrpc.Monitor(w, r, args, rets, callStats)
return
@ -81,12 +84,15 @@ func (p *ValidationGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Reques
return
}
executionStart := time.Now()
validateEntityValidationResult, validateEntityValidationError := p.service.ValidateEntity(arg_modelType, arg_modelID, arg_commit)
rw := gotsrpc.ResponseWriter{ResponseWriter: w}
validateEntityValidationResult, validateEntityValidationError := p.service.ValidateEntity(&rw, r, arg_modelType, arg_modelID, arg_commit)
callStats.Execution = time.Since(executionStart)
rets = []interface{}{validateEntityValidationResult, validateEntityValidationError}
if err := gotsrpc.Reply(rets, callStats, r, w); err != nil {
gotsrpc.ErrorCouldNotReply(w)
return
if rw.Status() == http.StatusOK {
rets = []interface{}{validateEntityValidationResult, validateEntityValidationError}
if err := gotsrpc.Reply(rets, callStats, r, w); err != nil {
gotsrpc.ErrorCouldNotReply(w)
return
}
}
gotsrpc.Monitor(w, r, args, rets, callStats)
return
@ -105,12 +111,15 @@ func (p *ValidationGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Reques
return
}
executionStart := time.Now()
validationResultValidationResult, validationResultValidationError := p.service.ValidationResult(arg_modelType, arg_modelID)
rw := gotsrpc.ResponseWriter{ResponseWriter: w}
validationResultValidationResult, validationResultValidationError := p.service.ValidationResult(&rw, r, arg_modelType, arg_modelID)
callStats.Execution = time.Since(executionStart)
rets = []interface{}{validationResultValidationResult, validationResultValidationError}
if err := gotsrpc.Reply(rets, callStats, r, w); err != nil {
gotsrpc.ErrorCouldNotReply(w)
return
if rw.Status() == http.StatusOK {
rets = []interface{}{validationResultValidationResult, validationResultValidationError}
if err := gotsrpc.Reply(rets, callStats, r, w); err != nil {
gotsrpc.ErrorCouldNotReply(w)
return
}
}
gotsrpc.Monitor(w, r, args, rets, callStats)
return
@ -128,12 +137,15 @@ func (p *ValidationGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Reques
return
}
executionStart := time.Now()
validationResultsValidationResults, validationResultsValidationError := p.service.ValidationResults(arg_modelType)
rw := gotsrpc.ResponseWriter{ResponseWriter: w}
validationResultsValidationResults, validationResultsValidationError := p.service.ValidationResults(&rw, r, arg_modelType)
callStats.Execution = time.Since(executionStart)
rets = []interface{}{validationResultsValidationResults, validationResultsValidationError}
if err := gotsrpc.Reply(rets, callStats, r, w); err != nil {
gotsrpc.ErrorCouldNotReply(w)
return
if rw.Status() == http.StatusOK {
rets = []interface{}{validationResultsValidationResults, validationResultsValidationError}
if err := gotsrpc.Reply(rets, callStats, r, w); err != nil {
gotsrpc.ErrorCouldNotReply(w)
return
}
}
gotsrpc.Monitor(w, r, args, rets, callStats)
return

View File

@ -1,13 +1,15 @@
package validation
import (
"net/http"
"github.com/foomo/contentfulvalidation/errors"
"github.com/foomo/contentfulvalidation/validator"
)
type Validation interface {
ValidationResult(modelType validator.ModelType, modelID validator.ModelID) (validationResult *validator.ValidationResult, validationError *errors.ValidationError)
ValidationResults(modelType validator.ModelType) (validationResults map[validator.ModelID]*validator.ValidationResult, validationError *errors.ValidationError)
ValidateEntity(modelType validator.ModelType, modelID validator.ModelID, commit bool) (validationResult *validator.ValidationResult, validationError *errors.ValidationError)
ListModelTypes() (availableModelTypes []*validator.ModelTypeInfo)
ValidationResult(w http.ResponseWriter, r *http.Request, modelType validator.ModelType, modelID validator.ModelID) (validationResult *validator.ValidationResult, validationError *errors.ValidationError)
ValidationResults(w http.ResponseWriter, r *http.Request, modelType validator.ModelType) (validationResults map[validator.ModelID]*validator.ValidationResult, validationError *errors.ValidationError)
ValidateEntity(w http.ResponseWriter, r *http.Request, modelType validator.ModelType, modelID validator.ModelID, commit bool) (validationResult *validator.ValidationResult, validationError *errors.ValidationError)
ListModelTypes(w http.ResponseWriter, r *http.Request) (availableModelTypes []*validator.ModelTypeInfo)
}

View File

@ -63,12 +63,15 @@ func (p *WebhookGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request)
return
}
executionStart := time.Now()
p.service.UpdateCache(arg_sysType, arg_modelType, arg_modelID)
rw := gotsrpc.ResponseWriter{ResponseWriter: w}
p.service.UpdateCache(&rw, r, arg_sysType, arg_modelType, arg_modelID)
callStats.Execution = time.Since(executionStart)
rets = []interface{}{}
if err := gotsrpc.Reply(rets, callStats, r, w); err != nil {
gotsrpc.ErrorCouldNotReply(w)
return
if rw.Status() == http.StatusOK {
rets = []interface{}{}
if err := gotsrpc.Reply(rets, callStats, r, w); err != nil {
gotsrpc.ErrorCouldNotReply(w)
return
}
}
gotsrpc.Monitor(w, r, args, rets, callStats)
return

View File

@ -1,9 +1,11 @@
package webhook
import (
"net/http"
"github.com/foomo/contentfulvalidation/validator"
)
type Webhook interface {
UpdateCache(sysType validator.SysType, modelType validator.ModelType, modelID validator.ModelID)
UpdateCache(w http.ResponseWriter, r *http.Request, sysType validator.SysType, modelType validator.ModelType, modelID validator.ModelID)
}