PluginProbe
WCPOS – Point of Sale (POS) plugin for WooCommerce / 1.10.27
WCPOS – Point of Sale (POS) plugin for WooCommerce v1.10.27
1.10.27 1.10.26 1.10.25 1.10.24 1.10.23 1.10.22 1.10.21 1.10.20 1.10.19 1.10.18 1.10.17 1.10.16 1.10.15 1.10.13 1.10.14 1.10.12 1.10.11 1.10.10 1.10.9 1.10.8 untagged-3d9b7ccddc54df87c672 1.10.7 1.10.6 1.10.5 1.10.3 All 171 releases
woocommerce-pos / vendor_prefixed / sentry / sentry / src / Serializer / PayloadSerializer.php

PayloadSerializer.php in WCPOS – Point of Sale (POS) plugin for WooCommerce 1.10.27, at vendor_prefixed/sentry/sentry/src/Serializer/PayloadSerializer.php

91 lines 3.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare (strict_types=1);
4 namespace WCPOS\Vendor\Sentry\Serializer;
5
6 use WCPOS\Vendor\Sentry\Event;
7 use WCPOS\Vendor\Sentry\EventType;
8 use WCPOS\Vendor\Sentry\Options;
9 use WCPOS\Vendor\Sentry\Serializer\EnvelopItems\AttachmentItem;
10 use WCPOS\Vendor\Sentry\Serializer\EnvelopItems\CheckInItem;
11 use WCPOS\Vendor\Sentry\Serializer\EnvelopItems\ClientReportItem;
12 use WCPOS\Vendor\Sentry\Serializer\EnvelopItems\EventItem;
13 use WCPOS\Vendor\Sentry\Serializer\EnvelopItems\LogsItem;
14 use WCPOS\Vendor\Sentry\Serializer\EnvelopItems\MetricsItem;
15 use WCPOS\Vendor\Sentry\Serializer\EnvelopItems\ProfileItem;
16 use WCPOS\Vendor\Sentry\Serializer\EnvelopItems\TransactionItem;
17 use WCPOS\Vendor\Sentry\Tracing\DynamicSamplingContext;
18 use WCPOS\Vendor\Sentry\Util\JSON;
19 /**
20 * This is a simple implementation of a serializer that takes in input an event
21 * object and returns a serialized string ready to be sent off to Sentry.
22 *
23 * @internal
24 */
25 final class PayloadSerializer implements PayloadSerializerInterface
26 {
27 /**
28 * @var Options The SDK client options
29 */
30 private $options;
31 public function __construct(Options $options)
32 {
33 $this->options = $options;
34 }
35 /**
36 * {@inheritdoc}
37 */
38 public function serialize(Event $event) : string
39 {
40 $envelopeHeader = null;
41 if ($event->getType() !== EventType::clientReport()) {
42 // @see https://develop.sentry.dev/sdk/envelopes/#envelope-headers
43 $envelopeHeader = ['sent_at' => \gmdate('Y-m-d\\TH:i:s\\Z'), 'dsn' => (string) $this->options->getDsn(), 'sdk' => $event->getSdkPayload()];
44 if ($event->getType()->requiresEventId()) {
45 $envelopeHeader['event_id'] = (string) $event->getId();
46 }
47 $dynamicSamplingContext = $event->getSdkMetadata('dynamic_sampling_context');
48 if ($dynamicSamplingContext instanceof DynamicSamplingContext) {
49 $entries = $dynamicSamplingContext->getEntries();
50 if (!empty($entries)) {
51 $envelopeHeader['trace'] = $entries;
52 }
53 }
54 }
55 $items = [];
56 switch ($event->getType()) {
57 case EventType::event():
58 $items[] = EventItem::toEnvelopeItem($event);
59 foreach ($event->getAttachments() as $attachment) {
60 $items[] = AttachmentItem::toAttachmentItem($attachment);
61 }
62 break;
63 case EventType::transaction():
64 $items[] = TransactionItem::toEnvelopeItem($event);
65 if ($event->getSdkMetadata('profile') !== null) {
66 $items[] = ProfileItem::toEnvelopeItem($event);
67 }
68 foreach ($event->getAttachments() as $attachment) {
69 $items[] = AttachmentItem::toAttachmentItem($attachment);
70 }
71 break;
72 case EventType::checkIn():
73 $items[] = CheckInItem::toEnvelopeItem($event);
74 break;
75 case EventType::logs():
76 $items[] = LogsItem::toEnvelopeItem($event);
77 break;
78 case EventType::metrics():
79 $items[] = MetricsItem::toEnvelopeItem($event);
80 break;
81 case EventType::clientReport():
82 $items[] = ClientReportItem::toEnvelopeItem($event);
83 break;
84 }
85 if ($envelopeHeader === null) {
86 return \sprintf("{}\n%s", \implode("\n", \array_filter($items)));
87 }
88 return \sprintf("%s\n%s", JSON::encode($envelopeHeader), \implode("\n", \array_filter($items)));
89 }
90 }
91