in server/schema_handler.go [241:281]
func schemaCmd(w http.ResponseWriter, r *http.Request) {
var err error
//TODO: Validate schema
s := parseSchemaForm(w, r)
if s == nil {
return
}
log.Infof("Received schema command with parameters: %+v", s)
if s.Cmd == "list" {
err = handleSchemaListCmd(w, s)
} else if len(s.Type) == 0 {
err = errors.New("type field cannot be empty")
} else if len(s.Name) == 0 && s.Cmd != "register" && s.Cmd != "change" {
err = errors.New("name field cannot be empty")
} else if s.Cmd == "add" {
err = state.InsertSchema(s.Name, s.Type, s.Body)
} else if s.Cmd == "del" {
err = state.DeleteSchema(s.Name, s.Type)
} else if s.InputType == "" || s.Output == "" {
err = errors.New("InputType and Output cannot be empty")
} else if s.Cmd == "register" {
err = SchemaRegister(s.Service, s.Cluster, s.DB, s.Table, s.InputType, s.Output, s.Version, s.Type, s.Dst, s.CreateTopic)
} else if s.Cmd == "change" { //mutate, alter?
err = SchemaChange(s.Service, s.Cluster, s.DB, s.Table, s.InputType, s.Output, s.Version, s.Type, s.Alter, s.Dst)
} else {
err = errors.New("unknown command (possible commands: add/del/register/change)")
}
if err != nil {
log.Errorf("Schema http: cmd=%v, name=%v, schema=%v, error=%v", s.Cmd, s.Name, s.Body, err)
//FIXME: Do not return actual error
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
}