func (h *Handler) Create(ctx context.Context, rw http.ResponseWriter, req *http.Request) { subject, ok := mux.Vars(req)["subject"] if !ok { http.Error(rw, "No subject given.", http.StatusBadRequest) return } var conn DefaultConnection decoder := json.NewDecoder(req.Body) if err := decoder.Decode(&conn); err != nil { http.Error(rw, "Could not decode request: "+err.Error(), http.StatusBadRequest) return } if v, err := govalidator.ValidateStruct(conn); !v { if err != nil { http.Error(rw, err.Error(), http.StatusBadRequest) return } http.Error(rw, "Payload did not validate.", http.StatusBadRequest) return } conn.ID = uuid.New() conn.LocalSubject = subject if err := h.s.Create(&conn); err != nil { http.Error(rw, err.Error(), http.StatusInternalServerError) return } WriteJSON(rw, &conn) }
func (h *Handler) Create(ctx context.Context, rw http.ResponseWriter, req *http.Request) { type Payload struct { Email string `valid:"email,required" json:"email" ` Password string `valid:"length(6|254),required" json:"password"` Data string `valid:"optional,json", json:"data"` } var p Payload decoder := json.NewDecoder(req.Body) if err := decoder.Decode(&p); err != nil { http.Error(rw, err.Error(), http.StatusBadRequest) return } if v, err := govalidator.ValidateStruct(p); !v { if err != nil { http.Error(rw, err.Error(), http.StatusBadRequest) return } http.Error(rw, "Payload did not validate.", http.StatusBadRequest) return } if p.Data == "" { p.Data = "{}" } user, err := h.s.Create(uuid.New(), p.Email, p.Password, p.Data) if err != nil { http.Error(rw, err.Error(), http.StatusInternalServerError) return } WriteJSON(rw, user) }
func (h *Handler) Create(ctx context.Context, rw http.ResponseWriter, req *http.Request) { var p payload decoder := json.NewDecoder(req.Body) if err := decoder.Decode(&p); err != nil { http.Error(rw, err.Error(), http.StatusBadRequest) return } if v, err := govalidator.ValidateStruct(p); !v { if err != nil { http.Error(rw, err.Error(), http.StatusBadRequest) return } http.Error(rw, "Payload did not validate.", http.StatusBadRequest) return } secret, err := sequence.RuneSequence(12, []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890")) if err != nil { http.Error(rw, err.Error(), http.StatusInternalServerError) return } client := &osin.DefaultClient{ Id: uuid.New(), Secret: string(secret), RedirectUri: p.RedirectURIs, UserData: "{}", } if err := h.s.CreateClient(client); err != nil { http.Error(rw, err.Error(), http.StatusInternalServerError) return } WriteJSON(rw, client) }