Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func Create(w http.ResponseWriter, r *http.Request) {
- w.Header().Set("Content-Type", "application/json")
- // Parse body
- decoder := json.NewDecoder(r.Body)
- var newFSM mongo.FSM
- err := decoder.Decode(&newFSM)
- if err != nil {
- fmt.Printf("Error: %s", err)
- w.Write([]byte("Error parse JSON"))
- return
- }
- // Create FSM
- FSM, err := fsm.New()
- if err != nil {
- fmt.Printf("Error: %s", err)
- w.Write([]byte("Error create a new FSM"))
- return
- }
- FSM.Import(newFSM.FSM)
- // Add transition
- // ...code
- // as example
- FSM.AddStateTransitionRules("a", "b", "c")
- FSM.AddStateTransitionRules("b", "d", "e")
- // Add event
- FSM.AddEvent("start", "a")
- FSM.AddEvent("to b", "b")
- // ...code
- // Add CB
- // ...code
- // Add state
- // ...code
- resultFSM, err := FSM.MarshalJSON()
- if err != nil {
- fmt.Printf("Error: %s", err)
- w.Write([]byte("Error parse a result FSM"))
- return
- }
- json.Unmarshal(resultFSM, &newFSM.FSM)
- id, err := mongo.Cfg.Add(newFSM)
- if err != nil {
- fmt.Printf("Error: %s", err)
- w.Write([]byte("Error create new FSM"))
- return
- }
- newFSM.Id = *id
- b, err := json.Marshal(newFSM)
- if err != nil {
- fmt.Printf("Error: %s", err)
- w.Write([]byte("Error parse JSON"))
- return
- }
- w.Write([]byte(string(b)))
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement