|
|
@ -168,6 +168,50 @@ func (c *BridgeController) deleteBridge(w http.ResponseWriter, r *http.Request) |
|
|
|
respond.Data(w, bridge) |
|
|
|
} |
|
|
|
|
|
|
|
// deleteBridgeLight (`DELETE /:bridge_id/light/:light_id`): Delete bridge by ID
|
|
|
|
func (c *BridgeController) deleteBridgeLight(w http.ResponseWriter, r *http.Request) { |
|
|
|
idStr := mux.Vars(r)["bridge_id"] |
|
|
|
id, err := strconv.ParseInt(idStr, 10, 32) |
|
|
|
if err != nil { |
|
|
|
respond.Error(w, http.StatusBadRequest, "invalid_id", "The id "+idStr+" is not valid.") |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
lightIDStr := mux.Vars(r)["light_id"] |
|
|
|
lightID, err := strconv.ParseInt(lightIDStr, 10, 32) |
|
|
|
if err != nil { |
|
|
|
respond.Error(w, http.StatusBadRequest, "invalid_id", "The id "+lightIDStr+" is not valid.") |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
bridge, err := c.service.Bridge(r.Context(), int(id)) |
|
|
|
if err == sql.ErrNoRows { |
|
|
|
respond.Error(w, 404, "bridge_not_found", "The bridge cannot be found.") |
|
|
|
return |
|
|
|
} else if err != nil { |
|
|
|
httperr.Respond(w, err) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
light, err := c.service.Light(r.Context(), int(lightID)) |
|
|
|
if err != nil { |
|
|
|
httperr.Respond(w, err) |
|
|
|
return |
|
|
|
} |
|
|
|
if light.BridgeID != bridge.ID { |
|
|
|
respond.Error(w, 404, "bridge_not_found", "The bridge cannot be found.") |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
err = c.service.DeleteBridgeLight(r.Context(), bridge, light) |
|
|
|
if err != nil { |
|
|
|
httperr.Respond(w, err) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
respond.Data(w, bridge) |
|
|
|
} |
|
|
|
|
|
|
|
// Mount mounts the controller
|
|
|
|
func (c *BridgeController) Mount(router *mux.Router, prefix string) { |
|
|
|
sub := router.PathPrefix(prefix).Subrouter() |
|
|
@ -179,6 +223,7 @@ func (c *BridgeController) Mount(router *mux.Router, prefix string) { |
|
|
|
sub.HandleFunc("/{bridge_id}", c.getBridge).Methods("GET") |
|
|
|
sub.HandleFunc("/{bridge_id}", c.updateBridge).Methods("PUT", "PATCH") |
|
|
|
sub.HandleFunc("/{bridge_id}", c.deleteBridge).Methods("DELETE") |
|
|
|
sub.HandleFunc("/{bridge_id}/light/{light_id}", c.deleteBridgeLight).Methods("DELETE") |
|
|
|
sub.HandleFunc("/{bridge_id}/discover", c.postBridgeDiscover).Methods("POST") |
|
|
|
} |
|
|
|
|
|
|
|