func (s *httpServer) getExistingTopicFromQuery(req *http.Request) (url.Values, *nsqd.Topic, error) { reqParams, err := url.ParseQuery(req.URL.RawQuery) if err != nil { nsqd.NsqLogger().LogErrorf("failed to parse request params - %s", err) return nil, nil, http_api.Err{400, "INVALID_REQUEST"} } topicName, topicPart, err := http_api.GetTopicPartitionArgs(reqParams) if err != nil { return nil, nil, http_api.Err{400, err.Error()} } if topicPart == -1 { topicPart = s.ctx.getDefaultPartition(topicName) } topic, err := s.ctx.getExistingTopic(topicName, topicPart) if err != nil { nsqd.NsqLogger().Logf("topic not found - %s-%v, %v", topicName, topicPart, err) return nil, nil, http_api.Err{404, E_TOPIC_NOT_EXIST} } if topicPart != topic.GetTopicPart() { return nil, nil, http_api.Err{http.StatusNotFound, "Topic partition not exist"} } return reqParams, topic, nil }
func (s *httpServer) doDeleteTopic(w http.ResponseWriter, req *http.Request, ps httprouter.Params) (interface{}, error) { reqParams, err := url.ParseQuery(req.URL.RawQuery) if err != nil { nsqd.NsqLogger().LogErrorf("failed to parse request params - %s", err) return nil, http_api.Err{400, "INVALID_REQUEST"} } topicName, topicPart, err := http_api.GetTopicPartitionArgs(reqParams) if err != nil { return nil, http_api.Err{400, err.Error()} } if topicPart == -1 { topicPart = s.ctx.getDefaultPartition(topicName) } err = s.ctx.deleteExistingTopic(topicName, topicPart) if err != nil { return nil, http_api.Err{404, E_TOPIC_NOT_EXIST} } return nil, nil }