func (m *MessageHandler) prepareForStorage(o *blob.Blob) error { if o.Type != github.EvtPullRequest || o.HasAttribute(LabelsAttribute) { return nil } number := o.Data.Get("number").MustInt() log.Debugf("fetching labels for %s #%d", m.repo.PrettyName(), number) l, _, err := m.client.Issues.ListLabelsByIssue(m.repo.User, m.repo.Repo, number, &gh.ListOptions{}) if err != nil { return fmt.Errorf("retrieve labels for issue %d: %v", number, err) } // TODO This is terrible var b bytes.Buffer var d []interface{} if err := json.NewEncoder(&b).Encode(l); err != nil { return fmt.Errorf("serializing labels: %v", err) } if err := json.Unmarshal(b.Bytes(), &d); err != nil { return fmt.Errorf("unserializing labels: %v", err) } o.Push(LabelsAttribute, d) return nil }