Skip to content

Commit 914a207

Browse files
authored
Add package info to SDK payload (#1823)
1 parent f9acbce commit 914a207

File tree

5 files changed

+70
-31
lines changed

5 files changed

+70
-31
lines changed

src/Event.php

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919
* count: int,
2020
* tags: array<string>,
2121
* }
22+
* @phpstan-type SdkPackageEntry array{
23+
* name: string,
24+
* version: string,
25+
* }
2226
*/
2327
final class Event
2428
{
@@ -174,6 +178,16 @@ final class Event
174178
*/
175179
private $sdkVersion = Client::SDK_VERSION;
176180

181+
/**
182+
* @var SdkPackageEntry[] The Sentry SDK packages
183+
*/
184+
private $sdkPackages = [
185+
[
186+
'name' => 'composer:sentry/sentry',
187+
'version' => Client::SDK_VERSION,
188+
],
189+
];
190+
177191
/**
178192
* @var EventType The type of the Event
179193
*/
@@ -276,6 +290,40 @@ public function setSdkVersion(string $sdkVersion): self
276290
return $this;
277291
}
278292

293+
/**
294+
* Append a package to the list of SDK packages.
295+
*
296+
* @param SdkPackageEntry $package The package to append
297+
*
298+
* @return $this
299+
*
300+
* @internal
301+
*/
302+
public function appendSdkPackage(array $package): self
303+
{
304+
$this->sdkPackages[] = $package;
305+
306+
return $this;
307+
}
308+
309+
/**
310+
* Gets the SDK playload that will be sent to Sentry.
311+
*
312+
* @see https://develop.sentry.dev/sdk/data-model/event-payloads/sdk/
313+
*
314+
* @return array{name: string, version: string, packages: SdkPackageEntry[]}
315+
*
316+
* @internal
317+
*/
318+
public function getSdkPayload(): array
319+
{
320+
return [
321+
'name' => $this->sdkIdentifier,
322+
'version' => $this->sdkVersion,
323+
'packages' => $this->sdkPackages,
324+
];
325+
}
326+
279327
/**
280328
* Gets the timestamp of when this event was generated.
281329
*/

src/Serializer/EnvelopItems/EventItem.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,7 @@ public static function toEnvelopeItem(Event $event): string
2828
$payload = [
2929
'timestamp' => $event->getTimestamp(),
3030
'platform' => 'php',
31-
'sdk' => [
32-
'name' => $event->getSdkIdentifier(),
33-
'version' => $event->getSdkVersion(),
34-
],
31+
'sdk' => $event->getSdkPayload(),
3532
];
3633

3734
if ($event->getStartTimestamp() !== null) {

src/Serializer/EnvelopItems/TransactionItem.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,7 @@ public static function toEnvelopeItem(Event $event): string
3535
$payload = [
3636
'timestamp' => $event->getTimestamp(),
3737
'platform' => 'php',
38-
'sdk' => [
39-
'name' => $event->getSdkIdentifier(),
40-
'version' => $event->getSdkVersion(),
41-
],
38+
'sdk' => $event->getSdkPayload(),
4239
];
4340

4441
if ($event->getStartTimestamp() !== null) {

src/Serializer/PayloadSerializer.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,7 @@ public function serialize(Event $event): string
4242
'event_id' => (string) $event->getId(),
4343
'sent_at' => gmdate('Y-m-d\TH:i:s\Z'),
4444
'dsn' => (string) $this->options->getDsn(),
45-
'sdk' => [
46-
'name' => $event->getSdkIdentifier(),
47-
'version' => $event->getSdkVersion(),
48-
],
45+
'sdk' => $event->getSdkPayload(),
4946
];
5047

5148
$dynamicSamplingContext = $event->getSdkMetadata('dynamic_sampling_context');

0 commit comments

Comments
 (0)