Beispiel #1
0
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
}