Merge "Add schemas for input events of ODU slice assurance usecase"
[nonrtric.git] / dmaap-mediator-producer / internal / server / server.go
index d07b730..79646c2 100644 (file)
@@ -35,19 +35,32 @@ const AddJobPath = "/jobs"
 const jobIdToken = "infoJobId"
 const deleteJobPath = AddJobPath + "/{" + jobIdToken + "}"
 
-func NewRouter() *mux.Router {
+type ProducerCallbackHandler struct {
+       jobsManager jobs.JobsManager
+}
+
+func NewProducerCallbackHandler(jm jobs.JobsManager) *ProducerCallbackHandler {
+       return &ProducerCallbackHandler{
+               jobsManager: jm,
+       }
+}
+
+func NewRouter(jm jobs.JobsManager) *mux.Router {
+       callbackHandler := NewProducerCallbackHandler(jm)
        r := mux.NewRouter()
        r.HandleFunc(StatusPath, statusHandler).Methods(http.MethodGet).Name("status")
-       r.HandleFunc(AddJobPath, addInfoJobHandler).Methods(http.MethodPost).Name("add")
-       r.HandleFunc(deleteJobPath, deleteInfoJobHandler).Methods(http.MethodDelete).Name("delete")
+       r.HandleFunc(AddJobPath, callbackHandler.addInfoJobHandler).Methods(http.MethodPost).Name("add")
+       r.HandleFunc(deleteJobPath, callbackHandler.deleteInfoJobHandler).Methods(http.MethodDelete).Name("delete")
        r.NotFoundHandler = &notFoundHandler{}
        r.MethodNotAllowedHandler = &methodNotAllowedHandler{}
        return r
 }
 
-func statusHandler(w http.ResponseWriter, r *http.Request) {}
+func statusHandler(w http.ResponseWriter, r *http.Request) {
+       // Just respond OK to show the server is alive for now. Might be extended later.
+}
 
-func addInfoJobHandler(w http.ResponseWriter, r *http.Request) {
+func (h *ProducerCallbackHandler) addInfoJobHandler(w http.ResponseWriter, r *http.Request) {
        b, readErr := ioutil.ReadAll(r.Body)
        if readErr != nil {
                http.Error(w, fmt.Sprintf("Unable to read body due to: %v", readErr), http.StatusBadRequest)
@@ -58,12 +71,12 @@ func addInfoJobHandler(w http.ResponseWriter, r *http.Request) {
                http.Error(w, fmt.Sprintf("Invalid json body. Cause: %v", unmarshalErr), http.StatusBadRequest)
                return
        }
-       if err := jobs.AddJob(jobInfo); err != nil {
+       if err := h.jobsManager.AddJobFromRESTCall(jobInfo); err != nil {
                http.Error(w, fmt.Sprintf("Invalid job info. Cause: %v", err), http.StatusBadRequest)
        }
 }
 
-func deleteInfoJobHandler(w http.ResponseWriter, r *http.Request) {
+func (h *ProducerCallbackHandler) deleteInfoJobHandler(w http.ResponseWriter, r *http.Request) {
        vars := mux.Vars(r)
        id, ok := vars[jobIdToken]
        if !ok {
@@ -71,7 +84,7 @@ func deleteInfoJobHandler(w http.ResponseWriter, r *http.Request) {
                return
        }
 
-       jobs.DeleteJob(id)
+       h.jobsManager.DeleteJobFromRESTCall(id)
 }
 
 type notFoundHandler struct{}