func (h Hubbub) Unsubscribe(f content.Feed) error { if u, err := url.Parse(h.config.Hubbub.CallbackURL); err != nil { return ErrNotConfigured } else { if !u.IsAbs() { return ErrNotConfigured } } fdata := f.Data() if u, err := url.Parse(fdata.HubLink); err != nil { return ErrNoFeedHubLink } else { if !u.IsAbs() { return ErrNoFeedHubLink } } s := f.Subscription() if s.HasErr() { return s.Err() } if s.Data().FeedId != fdata.Id { h.logger.Infoln("Not subscribed to " + fdata.HubLink) return ErrNotSubscribed } go func() { h.subscription(s, f, false) }() return nil }
func (h *Hubbub) Subscribe(f content.Feed) error { if u, err := url.Parse(h.config.Hubbub.CallbackURL); err != nil { return ErrNotConfigured } else { if !u.IsAbs() { return ErrNotConfigured } } fdata := f.Data() if u, err := url.Parse(fdata.HubLink); err != nil { return ErrNoFeedHubLink } else { if !u.IsAbs() { return ErrNoFeedHubLink } } s := f.Subscription() if s.HasErr() { return s.Err() } data := s.Data() if data.FeedId == fdata.Id { h.logger.Infoln("Already subscribed to " + fdata.HubLink) return ErrSubscribed } data.Link = fdata.HubLink data.FeedId = fdata.Id data.SubscriptionFailure = true s.Data(data) s.Update() if s.HasErr() { return s.Err() } go func() { h.subscribe(s, f, true) }() return nil }