sentry-native icon indicating copy to clipboard operation
sentry-native copied to clipboard

Extend Envelope API to get item count, specific items

Open mitchellh opened this issue 1 year ago • 4 comments

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...

mitchellh avatar Aug 29 '24 22:08 mitchellh

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

mitchellh avatar Aug 30 '24 01:08 mitchellh

Hey @mitchellh thanks for the suggestion. We think this makes sense and we'll likely open this API up for the next release.

kahest avatar Aug 30 '24 10:08 kahest

Hi @mitchellh , are you still interested in these API functionalities? If so, I'll open up a PR.

JoshuaMoelans avatar Nov 18 '24 11:11 JoshuaMoelans

Hi @JoshuaMoelans, my immediate need for it went away.

mitchellh avatar Nov 18 '24 15:11 mitchellh