PluginProbe
Email Log / 2.1.0
Email Log v2.1.0
2.63 2.4.8 2.4.9 2.6 2.61 2.62 trunk 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.8.1 0.9 0.9.1 0.9.2 1.1 1.5 1.5.1 1.5.2 1.5.3 1.5.4 All 61 releases
email-log / include / Addon / API / EDDAPI.php

EDDAPI.php in Email Log 2.1.0, at include/Addon/API/EDDAPI.php

127 lines 3.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php namespace EmailLog\Addon\API;
2
3 defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
4
5 /**
6 * Wrapper for EDD API
7 *
8 * @since 2.0.0
9 */
10 class EDDAPI {
11
12 /**
13 * Store URL.
14 * EDD and EDD SL plugins should be installed there.
15 *
16 * @var string
17 */
18 protected $store_url;
19
20 /**
21 * EDDAPI constructor.
22 * If store url is not passed it is read from config.
23 *
24 * @param string|null $store_url Store URL.
25 */
26 public function __construct( $store_url = null ) {
27 if ( null === $store_url ) {
28 $email_log = email_log();
29 $store_url = $email_log->get_store_url();
30 }
31
32 $this->store_url = $store_url;
33 }
34
35 /**
36 * Activate License.
37 *
38 * @param string $license_key License Key.
39 * @param string $addon_name Add-on Name.
40 *
41 * @return object API Response JSON Object.
42 */
43 public function activate_license( $license_key, $addon_name ) {
44 $params = array(
45 'edd_action' => 'activate_license',
46 'license' => $license_key,
47 'item_name' => urlencode( $addon_name ),
48 'url' => home_url(),
49 );
50
51 return $this->call_edd_api( $params );
52 }
53
54 /**
55 * Deactivate License.
56 *
57 * @param string $license_key License Key.
58 * @param string $addon_name Add-on Name.
59 *
60 * @return object API Response JSON Object.
61 */
62 public function deactivate_license( $license_key, $addon_name ) {
63 $params = array(
64 'edd_action' => 'deactivate_license',
65 'license' => $license_key,
66 'item_name' => urlencode( $addon_name ),
67 'url' => home_url(),
68 );
69
70 return $this->call_edd_api( $params );
71 }
72
73 /**
74 * Get version information.
75 *
76 * @param string $license_key License Key.
77 * @param string $addon_name Add-on Name.
78 *
79 * @return object API Response JSON Object.
80 */
81 public function get_version( $license_key, $addon_name ) {
82 $params = array(
83 'edd_action' => 'get_version',
84 'license' => $license_key,
85 'item_name' => $addon_name,
86 'url' => home_url(),
87 );
88
89 return $this->call_edd_api( $params );
90 }
91
92 /**
93 * Call the EDD API.
94 *
95 * @param array $params Parameters for request.
96 *
97 * @return object API Response in JSON.
98 * @throws \Exception If there is any error while making the request.
99 *
100 * TODO: Make the errors more user friendly and provide links to support.
101 */
102 protected function call_edd_api( $params ) {
103 $response = wp_remote_post( $this->store_url, array(
104 'timeout' => 15,
105 'body' => $params,
106 ) );
107
108 if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
109
110 if ( is_wp_error( $response ) ) {
111 throw new \Exception( $response->get_error_message() );
112 }
113
114 throw new \Exception( __( 'Unknown error occurred while trying to contact Email Log store. Please try again after sometime. If the problem persists contact support.', 'email-log' ) );
115 }
116
117 $body = wp_remote_retrieve_body( $response );
118 $data = json_decode( $body );
119
120 if ( empty( $data ) ) {
121 throw new \Exception( __( 'Unable to parse the response Email Log store response. Please try again after sometime. If the problem persists contact support.', 'email-log' ) );
122 }
123
124 return $data;
125 }
126 }
127