ParseUUIDParam consumes a url parameter and parses it as a UUID.
(rw http.ResponseWriter, r *http.Request, param string)
| 13 | |
| 14 | // ParseUUIDParam consumes a url parameter and parses it as a UUID. |
| 15 | func ParseUUIDParam(rw http.ResponseWriter, r *http.Request, param string) (uuid.UUID, bool) { |
| 16 | rawID := chi.URLParam(r, param) |
| 17 | if rawID == "" { |
| 18 | httpapi.Write(r.Context(), rw, http.StatusBadRequest, codersdk.Response{ |
| 19 | Message: "Missing UUID in URL.", |
| 20 | // Url params mean nothing to a user |
| 21 | Detail: fmt.Sprintf("%q URL param missing", param), |
| 22 | }) |
| 23 | return uuid.UUID{}, false |
| 24 | } |
| 25 | |
| 26 | parsed, err := uuid.Parse(rawID) |
| 27 | if err != nil { |
| 28 | httpapi.Write(r.Context(), rw, http.StatusBadRequest, codersdk.Response{ |
| 29 | Message: fmt.Sprintf("Invalid UUID %q.", rawID), |
| 30 | Detail: err.Error(), |
| 31 | }) |
| 32 | return uuid.UUID{}, false |
| 33 | } |
| 34 | |
| 35 | return parsed, true |
| 36 | } |