func (h *JQHandler) handleJqSharePost(c *gin.Context) { if size, err := h.checkReqSize(c); err != nil { h.logger(c).WithField("size", size).WithError(err).Info("req too large") c.String(http.StatusExpectationFailed, err.Error()) return } c.Request.Body = http.MaxBytesReader(c.Writer, c.Request.Body, JSONPayloadLimit) var jq *jq.JQ if err := c.BindJSON(&jq); err != nil { err = fmt.Errorf("error parsing JSON: %s", err) h.logger(c).WithError(err).Info("error parsing JSON") c.String(http.StatusUnprocessableEntity, err.Error()) return } if err := jq.Validate(); err != nil { c.String(http.StatusUnprocessableEntity, err.Error()) return } id, err := h.DB.UpsertSnippet(FromJQ(jq)) if err != nil { h.logger(c).WithError(err).Info("error upserting snippet") c.String(http.StatusUnprocessableEntity, "error sharing snippet") return } c.String(http.StatusCreated, id) }
func (h *JQHandler) handleJq(rw http.ResponseWriter, r *http.Request) { if r.Method != "POST" { h.r.JSON(rw, 500, nil) return } b, err := ioutil.ReadAll(r.Body) if err != nil { h.r.JSON(rw, 422, map[string]string{"message": err.Error()}) return } defer r.Body.Close() var jq *jq.JQ err = json.Unmarshal(b, &jq) if err != nil { h.r.JSON(rw, 422, map[string]string{"message": err.Error()}) return } if err := jq.Validate(); err != nil { h.r.JSON(rw, 422, map[string]string{"message": err.Error()}) return } log.Println(jq) re, err := jq.Eval() if err != nil { h.r.JSON(rw, 422, map[string]string{"message": err.Error()}) return } h.r.JSON(rw, 200, map[string]string{"result": re}) }