Fix error in unsubscriber
All checks were successful
continuous-integration/drone/push Build is passing

- wrong error checking
This commit is contained in:
Peter Stuifzand 2019-03-19 07:28:32 +01:00
parent 59668090df
commit 071bf66721

View File

@ -87,38 +87,47 @@ func (handler *subscriptionHandler) handleUnsubscription(w http.ResponseWriter,
topic := r.Form.Get("hub.topic") topic := r.Form.Get("hub.topic")
mode := r.Form.Get("hub.mode") mode := r.Form.Get("hub.mode")
if subscribers, err := handler.store.Subscribers(topic); err != nil { subscribers, err := handler.store.Subscribers(topic)
for _, subscriber := range subscribers { if err != nil {
if subscriber.Callback != callback { return errors.Wrapf(err, "could not get subscribers for %s", topic)
continue }
}
ourChallenge := randStringBytes(12)
validationURL, err := url.Parse(callback) found := false
if err != nil { for _, subscriber := range subscribers {
log.Println(err) if subscriber.Callback != callback {
return err continue
}
q := validationURL.Query()
q.Add("hub.mode", mode)
q.Add("hub.topic", topic)
q.Add("hub.challenge", ourChallenge)
validationURL.RawQuery = q.Encode()
if validateURL(validationURL.String(), ourChallenge) {
err = handler.store.Unsubscribe(topic, callback)
if err != nil {
return err
}
}
} }
w.WriteHeader(200) found = true
ourChallenge := randStringBytes(12)
validationURL, err := url.Parse(callback)
if err != nil {
log.Println(err)
return err
}
q := validationURL.Query()
q.Add("hub.mode", mode)
q.Add("hub.topic", topic)
q.Add("hub.challenge", ourChallenge)
validationURL.RawQuery = q.Encode()
if validateURL(validationURL.String(), ourChallenge) {
err = handler.store.Unsubscribe(topic, callback)
if err != nil {
return err
}
}
}
w.WriteHeader(200)
if found {
_, err = fmt.Fprintf(w, "Unsubscribed\n") _, err = fmt.Fprintf(w, "Unsubscribed\n")
return err
} else { } else {
http.Error(w, "Hub does not handle subscription for topic", 400) http.Error(w, "Hub does not handle subscription for topic", 400)
} }
return nil
return err
} }
func (handler *subscriptionHandler) handleSubscription(w http.ResponseWriter, r *http.Request) error { func (handler *subscriptionHandler) handleSubscription(w http.ResponseWriter, r *http.Request) error {