Key int `json:"key"` Value string `json:"value"` } type Route struct { Name string Method string Pattern string HandlerFunc http.HandlerFunc } type Routes []Route var servera = "one" var serverb = "two" var serverc = "three" var serv string var c = consistent.CreateConsistent() var routes = Routes{ Route{ "GetAll", "GET", "/keys", GetAll, }, Route{ "Get", "GET", "/keys/{key_id}", Get, }, Route{ "Put",
func Initialize() { c = consistent.CreateConsistent() c.AddNode(servera) c.AddNode(serverb) c.AddNode(serverc) }
func main() { var option int32 //check the options commandargs := os.Args[1:] if len(commandargs) == 0 { fmt.Println("Select an option") fmt.Println("1. Execute code as a REST Application") fmt.Println("2. Execute code without supplying the data") fmt.Scan(&option) } if option == 2 { client := &http.Client{} c := consistent.CreateConsistent() servera := "one" serverb := "two" serverc := "three" c.AddNode(servera) c.AddNode(serverb) c.AddNode(serverc) userdata := Data{ {Key: 1, Value: "a"}, {Key: 2, Value: "b"}, {Key: 3, Value: "c"}, {Key: 4, Value: "d"}, {Key: 5, Value: "e"}, {Key: 6, Value: "f"}, {Key: 7, Value: "g"}, {Key: 8, Value: "h"}, {Key: 9, Value: "i"}, {Key: 10, Value: "j"}, } i := 0 for _, u := range userdata { i = i + 1 server, err := c.AddData(u.Value) if err != nil { log.Fatal(err) } url := "http://localhost" url += ":" var serv string if server == servera { serv = "3000" } else if server == serverb { serv = "3001" } else { serv = "3002" } url += fmt.Sprintf("%s%s", serv, "/keys") param := url param += fmt.Sprintf("%s%s%s%s", "/", strconv.Itoa(u.Key), "/", u.Value) request, err := http.NewRequest("PUT", param, nil) request.Header.Add("Content-Type", "application/json") _, health := client.Do(request) if health != nil { c.RemoveNode(serv) userdata = append(userdata, u) } // implement get for specific key id fmt.Println("The below data is inserted in the server", serv) PrinteachContents(serv, u) } //implement get operation fmt.Println("*******************************************************") fmt.Println("Printing the contents from server with the port no: 3000") PrintContents("3000") fmt.Println("***********************************************************") fmt.Println("Printing the contents from server with the port no : 3001") PrintContents("3001") fmt.Println("************************************************************") fmt.Println("Printing the contents from server with the port no : 3002") PrintContents("3002") } else if option == 1 { router.Initialize() router := router.NewRouter() log.Fatal(http.ListenAndServe(":8080", router)) } }