Extend Envelope API to get item count, specific items
In my use case, I'd like to filter envelopes in my transport depending on what is included in them (specifically, I only care about crashes). The envelope API as is is too limited to do this but I can see the envelope structure internally already easily has access to all the information I need. What I'd like to propose:
SENTRY_API size_t sentry_envelope_get_items_count(
const sentry_envelope_t *envelope);
SENTRY_API sentry_value_t sentry_envelope_get_item_event(
const sentry_envelope_t *envelope,
size_t index,
);
SENTRY_API sentry_value_t sentry_envelope_get_item_headers(
const sentry_envelope_t *envelope,
size_t index,
);
I'd also be happy with making a new opaque sentry_envelope_item_t and building an API around that...
I just noticed the internal API has something very close to what I'd love to have exposed publicly:
// these for now are only needed for tests
#ifdef SENTRY_UNITTEST
size_t sentry__envelope_get_item_count(const sentry_envelope_t *envelope);
const sentry_envelope_item_t *sentry__envelope_get_item(
const sentry_envelope_t *envelope, size_t idx);
sentry_value_t sentry__envelope_item_get_header(
const sentry_envelope_item_t *item, const char *key);
const char *sentry__envelope_item_get_payload(
const sentry_envelope_item_t *item, size_t *payload_len_out);
#endif
Hey @mitchellh thanks for the suggestion. We think this makes sense and we'll likely open this API up for the next release.
Hi @mitchellh , are you still interested in these API functionalities? If so, I'll open up a PR.
Hi @JoshuaMoelans, my immediate need for it went away.