blob: c3a1331cabc1f779495ae1971d9f29d335ae5090 [file] [log] [blame]
elinuxhenrikba96d842021-09-06 16:05:01 +02001// -
2// ========================LICENSE_START=================================
3// O-RAN-SC
4// %%
5// Copyright (C) 2021: Nordix Foundation
6// %%
7// Licensed under the Apache License, Version 2.0 (the "License");
8// you may not use this file except in compliance with the License.
9// You may obtain a copy of the License at
10//
11// http://www.apache.org/licenses/LICENSE-2.0
12//
13// Unless required by applicable law or agreed to in writing, software
14// distributed under the License is distributed on an "AS IS" BASIS,
15// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16// See the License for the specific language governing permissions and
17// limitations under the License.
18// ========================LICENSE_END===================================
19//
20
21package server
22
23import (
elinuxhenrik63a42ca2021-09-06 22:16:24 +020024 "encoding/json"
elinuxhenrikba96d842021-09-06 16:05:01 +020025 "fmt"
elinuxhenrik63a42ca2021-09-06 22:16:24 +020026 "io/ioutil"
elinuxhenrikba96d842021-09-06 16:05:01 +020027 "net/http"
elinuxhenrik63a42ca2021-09-06 22:16:24 +020028
29 "oransc.org/nonrtric/dmaapmediatorproducer/internal/jobs"
elinuxhenrikba96d842021-09-06 16:05:01 +020030)
31
32func StatusHandler(w http.ResponseWriter, r *http.Request) {
33 if r.URL.Path != "/" {
34 http.Error(w, "404 not found.", http.StatusNotFound)
35 return
36 }
37
38 if r.Method != "GET" {
elinuxhenrik63a42ca2021-09-06 22:16:24 +020039 http.Error(w, "Method is not supported.", http.StatusMethodNotAllowed)
elinuxhenrikba96d842021-09-06 16:05:01 +020040 return
41 }
42
43 fmt.Fprintf(w, "All is well!")
44}
elinuxhenrik63a42ca2021-09-06 22:16:24 +020045
46func CreateInfoJobHandler(w http.ResponseWriter, r *http.Request) {
47 if r.URL.Path != "/producer_simulator/info_job" {
48 http.Error(w, "404 not found.", http.StatusNotFound)
49 return
50 }
51
52 if r.Method != "POST" {
53 http.Error(w, "Method is not supported.", http.StatusMethodNotAllowed)
54 return
55 }
56
57 b, readErr := ioutil.ReadAll(r.Body)
58 if readErr != nil {
59 http.Error(w, fmt.Sprintf("Unable to read body due to: %v", readErr), http.StatusBadRequest)
60 return
61 }
62 jobInfo := jobs.JobInfo{}
63 if unmarshalErr := json.Unmarshal(b, &jobInfo); unmarshalErr != nil {
64 http.Error(w, fmt.Sprintf("Invalid json body. Cause: %v", unmarshalErr), http.StatusBadRequest)
65 return
66 }
67 if err := jobs.AddJob(jobInfo); err != nil {
68 http.Error(w, fmt.Sprintf("Invalid job info. Cause: %v", err), http.StatusBadRequest)
69 }
70}
71
72func CreateServer(port int, handlerFunc func(http.ResponseWriter, *http.Request)) *http.Server {
73
74 mux := http.NewServeMux()
75 mux.HandleFunc("/", handlerFunc)
76 server := http.Server{
77 Addr: fmt.Sprintf(":%v", port), // :{port}
78 Handler: mux,
79 }
80 return &server
81}