-
Notifications
You must be signed in to change notification settings - Fork 18
/
discover.go
44 lines (35 loc) · 1.05 KB
/
discover.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
//Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
//Licensed under the Universal Permissive License (UPL) Version 1.0 as shown at http://oss.oracle.com/licenses/upl.
package adsrest
import (
"net/http"
"github.com/teramoby/speedle-plus/pkg/httputils"
"github.com/teramoby/speedle-plus/pkg/logging"
)
func (e *RESTService) Discover(w http.ResponseWriter, r *http.Request) {
jsonRequest, err := DecodeJSONContext(r)
if err != nil {
httputils.HandleError(w, err)
return
}
context, err := ConvertJSONRequestToContext(jsonRequest)
if err != nil {
httputils.HandleError(w, err)
return
}
// assert token
e.Evaluator.AssertToken(context)
result, reason, err := e.Evaluator.Discover(*context)
response := IsAllowedResponse{
Allowed: result,
Reason: int32(reason),
}
// Audit log
if err != nil {
response.ErrorMessage = err.Error()
logging.WriteSimpleFailedAuditLog("Discovery", context, err.Error())
} else {
logging.WriteSimpleSucceededAuditLog("Discovery", context, nil)
}
httputils.SendOKResponse(w, &response)
}