Skip to content

Commit 77ea0bd

Browse files
committed
ref(core): Use helpers with session envelopes
This patch converts the sessions logic in `packages/core/src/request.ts` to use the recently introduced envelope helpers. ref: #4587
1 parent fb5d4e6 commit 77ea0bd

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

packages/core/src/request.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import {
22
Event,
3-
EventEnvelope,
4-
EventItem,
53
SdkInfo,
64
SentryRequest,
75
SentryRequestType,
86
Session,
97
SessionAggregates,
8+
SessionEnvelope,
9+
SessionItem,
1010
} from '@sentry/types';
1111
import { createEnvelope, dsnToString, normalize, serializeEnvelope } from '@sentry/utils';
1212

@@ -40,19 +40,20 @@ function enhanceEventWithSdkInfo(event: Event, sdkInfo?: SdkInfo): Event {
4040
/** Creates a SentryRequest from a Session. */
4141
export function sessionToSentryRequest(session: Session | SessionAggregates, api: APIDetails): SentryRequest {
4242
const sdkInfo = getSdkMetadataForEnvelopeHeader(api);
43-
const envelopeHeaders = JSON.stringify({
43+
const envelopeHeaders = {
4444
sent_at: new Date().toISOString(),
4545
...(sdkInfo && { sdk: sdkInfo }),
4646
...(!!api.tunnel && { dsn: dsnToString(api.dsn) }),
47-
});
48-
// I know this is hacky but we don't want to add `session` to request type since it's never rate limited
49-
const type: SentryRequestType = 'aggregates' in session ? ('sessions' as SentryRequestType) : 'session';
50-
const itemHeaders = JSON.stringify({
51-
type,
52-
});
47+
};
48+
49+
// I know this is hacky but we don't want to add `sessions` to request type since it's never rate limited
50+
const type = 'aggregates' in session ? ('sessions' as SentryRequestType) : 'session';
5351

52+
// Have to cast type because envelope items do not accept a `SentryRequestType`
53+
const envelopeItem = [{ type } as { type: 'session' | 'sessions' }, session] as SessionItem;
54+
const envelope = createEnvelope<SessionEnvelope>(envelopeHeaders, [envelopeItem]);
5455
return {
55-
body: `${envelopeHeaders}\n${itemHeaders}\n${JSON.stringify(session)}`,
56+
body: serializeEnvelope(envelope),
5657
type,
5758
url: getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel),
5859
};

0 commit comments

Comments
 (0)