-
Notifications
You must be signed in to change notification settings - Fork 38
/
application_parameters.go
47 lines (36 loc) · 1.63 KB
/
application_parameters.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package internalapi
import (
"github.com/go-openapi/runtime/middleware"
"github.com/transcom/mymove/pkg/appcontext"
"github.com/transcom/mymove/pkg/gen/internalapi/internaloperations/application_parameters"
"github.com/transcom/mymove/pkg/gen/internalmessages"
"github.com/transcom/mymove/pkg/handlers"
"github.com/transcom/mymove/pkg/models"
)
func payloadForApplicationParametersModel(v models.ApplicationParameters) internalmessages.ApplicationParameters {
parameterValue := v.ParameterValue
parameterName := v.ParameterName
payload := internalmessages.ApplicationParameters{
ParameterValue: parameterValue,
ParameterName: parameterName,
}
return payload
}
// ApplicationParametersValidateHandler validates a value provided by the service member
type ApplicationParametersValidateHandler struct {
handlers.HandlerConfig
}
// Handler receives a POST request containing a parameter value
// if the value is present, it returns it back, if not, it returns an empty object
func (h ApplicationParametersValidateHandler) Handle(params application_parameters.ValidateParams) middleware.Responder {
return h.AuditableAppContextFromRequestWithErrors(params.HTTPRequest,
func(appCtx appcontext.AppContext) (middleware.Responder, error) {
// receive the value
value := params.Body.ParameterValue
name := params.Body.ParameterName
// fetch the value, if not found it will be an empty string
result, _ := models.FetchParameterValue(appCtx.DB(), *name, *value)
parameterValuePayload := payloadForApplicationParametersModel(result)
return application_parameters.NewValidateOK().WithPayload(¶meterValuePayload), nil
})
}