X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=RSM%2Fcontrollers%2Fcontroller.go;fp=RSM%2Fcontrollers%2Fcontroller.go;h=f572821226eab8d68e820a91e4d533afad6874e4;hb=60652d98d51ee23c1eaca2e8bc2bf19c74c57658;hp=abb1c651b8100fe41e84fa442bde117e5f0b89cc;hpb=b8d3ff3abf409da49ecab244cd6d2c2124dbce7c;p=ric-plt%2Fresource-status-manager.git diff --git a/RSM/controllers/controller.go b/RSM/controllers/controller.go index abb1c65..f572821 100644 --- a/RSM/controllers/controller.go +++ b/RSM/controllers/controller.go @@ -20,9 +20,6 @@ package controllers -type IController interface { -} -/* import ( "encoding/json" "io" @@ -41,6 +38,7 @@ const ( ) type IController interface { + ResourceStatus(writer http.ResponseWriter, r *http.Request) } type Controller struct { @@ -55,6 +53,18 @@ func NewController(logger *logger.Logger, handlerProvider *httpmsghandlerprovide } } +func (c *Controller) ResourceStatus(writer http.ResponseWriter, r *http.Request) { + c.logger.Infof("[Client -> RSM] #Controller.ResourceStatus - request: %v", c.prettifyRequest(r)) + + request := models.ResourceStatusRequest{} + + if !c.extractJsonBody(r, &request, writer) { + return + } + + c.handleRequest(writer, &r.Header, httpmsghandlerprovider.ResourceStatusRequest, request, true) +} + func (c *Controller) extractJsonBody(r *http.Request, request models.Request, writer http.ResponseWriter) bool { defer r.Body.Close() body, err := ioutil.ReadAll(io.LimitReader(r.Body, LimitRequest)) @@ -93,29 +103,15 @@ func (c *Controller) handleRequest(writer http.ResponseWriter, header *http.Head return } - response, err := (*handler).Handle(request) + err = handler.Handle(request) if err != nil { c.handleErrorResponse(err, writer) return } - if response == nil { - writer.WriteHeader(http.StatusNoContent) - c.logger.Infof("[RSM -> Client] #Controller.handleRequest - status response: %v", http.StatusNoContent) - return - } - - result, err := response.Marshal() - - if err != nil { - c.handleErrorResponse(err, writer) - return - } - - c.logger.Infof("[RSM -> Client] #Controller.handleRequest - response: %s", result) - writer.Header().Set("Content-Type", "application/json") - writer.Write([]byte(result)) + writer.WriteHeader(http.StatusNoContent) + c.logger.Infof("[RSM -> Client] #Controller.handleRequest - status response: %v", http.StatusNoContent) } func (c *Controller) validateRequestHeader(header *http.Header) error { @@ -159,6 +155,10 @@ func (c *Controller) handleErrorResponse(err error, writer http.ResponseWriter) e2Error, _ := err.(*rsmerrors.RmrError) errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} httpError = http.StatusInternalServerError + case *rsmerrors.RsmError: + e2Error, _ := err.(*rsmerrors.RsmError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} + httpError = http.StatusInternalServerError case *rsmerrors.ResourceNotFoundError: e2Error, _ := err.(*rsmerrors.ResourceNotFoundError) errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} @@ -181,11 +181,9 @@ func (c *Controller) handleErrorResponse(err error, writer http.ResponseWriter) if err != nil { c.logger.Errorf("#Controller.handleErrorResponse - Cannot send response. writer:%v", writer) } -}*/ -/* +} func (c *Controller) prettifyRequest(request *http.Request) string { dump, _ := httputil.DumpRequest(request, true) requestPrettyPrint := strings.Replace(string(dump), "\r\n", " ", -1) return strings.Replace(requestPrettyPrint, "\n", "", -1) -} -*/ \ No newline at end of file +} \ No newline at end of file