PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 2.13.1
GiveWP – Donation Plugin and Fundraising Platform v2.13.1
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 in GiveWP – Donation Plugin and Fundraising Platform 2.13.1, at src/Tracking/TrackClient.php

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