PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.1.0
GiveWP – Donation Plugin and Fundraising Platform v4.1.0
4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 All 253 releases
give / src / Tracking / TrackClient.php
TrackClient.php
88 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Give\Tracking;
4
5 use Give\Tracking\Contracts\TrackData;
6 use Give\Tracking\Enum\EventType;
7 use Give\Tracking\Repositories\TelemetryAccessDetails;
8 use WP_Error;
9
10 /**
11 * Class TrackClient
12 *
13 * This class has responsibility to send tracking information
14 *
15 * @package Give\Tracking
16 *
17 * @since 2.10.0
18 */
19 class TrackClient
20 {
21 const SERVER_URL = 'https://telemetry.givewp.com/api/v1/track-plugin-usage';
22
23 /**
24 * @var TelemetryAccessDetails
25 */
26 private $telemetryAccessDetails;
27
28 /**
29 * TrackClient constructor.
30 *
31 * @param TelemetryAccessDetails $telemetryAccessDetails
32 */
33 public function __construct(TelemetryAccessDetails $telemetryAccessDetails)
34 {
35 $this->telemetryAccessDetails = $telemetryAccessDetails;
36 }
37
38 /**
39 * Send a track event.
40 *
41 * @since 2.10.0
42 *
43 * @param EventType $eventType
44 * @param TrackData $trackData
45 * @param array $requestArgs
46 *
47 * @return array|WP_Error
48 */
49 public function post(EventType $eventType, TrackData $trackData, $requestArgs = [])
50 {
51 $id = $eventType->getValue();
52 $data = $trackData->get();
53
54 if ( ! $id || ! $data) {
55 return new WP_Error('invalid-telemetry-request', 'Pass valid track id and tracked data to TrackClient');
56 }
57
58 $default_request_args = [
59 'headers' => [
60 'content-type:' => 'application/json',
61 'Authorization' => 'Bearer ' . $this->telemetryAccessDetails->getAccessTokenOptionValue(),
62 ],
63 'timeout' => 8,
64 'httpversion' => '1.1',
65 'blocking' => false,
66 'user-agent' => 'GIVE/' . GIVE_VERSION . ' ' . get_bloginfo('url'),
67 'body' => wp_json_encode($data),
68 'data_format' => 'body',
69 ];
70
71 return wp_remote_post($this->getApiUrl($id), wp_parse_args($requestArgs, $default_request_args));
72 }
73
74 /**
75 * Get api url.
76 *
77 * @since 2.10.0
78 *
79 * @param string $trackId
80 *
81 * @return string
82 */
83 public function getApiUrl($trackId)
84 {
85 return self::SERVER_URL . '/' . $trackId;
86 }
87 }
88