From 0fef0ec16c6fd018b6bd4543020aa3167809356a Mon Sep 17 00:00:00 2001 From: franklin Date: Fri, 26 Apr 2024 20:45:33 +0200 Subject: [PATCH] feat: add http request and response --- validation/gotsrpc_gen.go | 52 ++++++++++++++++++++++++--------------- validation/validation.go | 10 +++++--- webhook/gotsrpc_gen.go | 13 ++++++---- webhook/webhook.go | 4 ++- 4 files changed, 49 insertions(+), 30 deletions(-) diff --git a/validation/gotsrpc_gen.go b/validation/gotsrpc_gen.go index 0dbd45a..f54c72a 100644 --- a/validation/gotsrpc_gen.go +++ b/validation/gotsrpc_gen.go @@ -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 diff --git a/validation/validation.go b/validation/validation.go index 8a67daf..b5f5364 100644 --- a/validation/validation.go +++ b/validation/validation.go @@ -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) } diff --git a/webhook/gotsrpc_gen.go b/webhook/gotsrpc_gen.go index 6fb95a1..538fded 100644 --- a/webhook/gotsrpc_gen.go +++ b/webhook/gotsrpc_gen.go @@ -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 diff --git a/webhook/webhook.go b/webhook/webhook.go index 7e7580e..e2f0e6a 100644 --- a/webhook/webhook.go +++ b/webhook/webhook.go @@ -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) }