Add status check to REST API of Go products
[nonrtric.git] / test / usecases / oruclosedlooprecovery / goversion / stub / ics / ics.go
1 // -
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
21 package main
22
23 import (
24         "flag"
25         "fmt"
26         "net/http"
27         "time"
28
29         "github.com/gorilla/mux"
30 )
31
32 var client = &http.Client{
33         Timeout: 5 * time.Second,
34 }
35
36 func main() {
37         port := flag.Int("port", 8083, "The port this consumer will listen on")
38         flag.Parse()
39         fmt.Println("Starting ICS stub on port ", *port)
40
41         r := mux.NewRouter()
42         r.HandleFunc("/data-consumer/v1/info-jobs/{jobId}", handleCalls).Methods(http.MethodPut, http.MethodDelete)
43         fmt.Println(http.ListenAndServe(fmt.Sprintf(":%v", *port), r))
44 }
45
46 func handleCalls(w http.ResponseWriter, r *http.Request) {
47         vars := mux.Vars(r)
48         id, ok := vars["jobId"]
49         if ok {
50                 fmt.Println(r.Method, " of job ", id)
51                 if r.Method == http.MethodPut {
52                         req, _ := http.NewRequest(http.MethodPut, "http://localhost:8085/create/"+id, nil)
53                         r, err := client.Do(req)
54                         if err != nil {
55                                 fmt.Println("Failed to create job in producer ", err)
56                                 return
57                         }
58                         fmt.Println("Created job in producer ", r.Status)
59                 } else {
60                         req, _ := http.NewRequest(http.MethodDelete, "http://localhost:8085/delete/"+id, nil)
61                         r, err := client.Do(req)
62                         if err != nil {
63                                 fmt.Println("Failed to delete job in producer ", err)
64                                 return
65                         }
66                         fmt.Println("Deleted job in producer ", r.Status)
67                 }
68         }
69
70 }