PluginProbe
Translate and Go multilingual – Automatic AI translation – wpLingua / trunk
Translate and Go multilingual – Automatic AI translation – wpLingua vtrunk
2.16.5 2.16.4 2.16.3 2.16.2 2.16.1 2.16.0 2.15.2 2.15.1 2.15.0 2.14.3 2.14.2 2.14.1 2.14.0 2.13.1 2.13.0 2.12.3 2.12.2 2.12.1 trunk 1.0.3 1.0.4 1.0.5 1.1.0 1.1.1 1.2.0 All 110 releases
wplingua / inc / api / request-api-key.php

request-api-key.php in Translate and Go multilingual – Automatic AI translation – wpLingua trunk, at inc/api/request-api-key.php

184 lines 4.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 // If this file is called directly, abort.
4 if ( ! defined( 'WPINC' ) ) {
5 die;
6 }
7
8
9 /**
10 * Request an API key for wpLingua API
11 *
12 * Return an error message with error code
13 * or a confirmation for the API key creation
14 *
15 * API terms : https://wplingua.com/terms/
16 *
17 * ---------------------------------------------------
18 * Data sent :
19 * ---------------------------------------------------
20 * - request : 'register'
21 * - mail_address : A email address
22 * - language_original : A language ID
23 * - languages_target : An array of languages ID
24 * - accept_eula : Boolean
25 *
26 * ---------------------------------------------------
27 * Data received if successful :
28 * ---------------------------------------------------
29 * - register : true
30 *
31 * ---------------------------------------------------
32 * Data received in case of failure
33 * ---------------------------------------------------
34 * - error : true
35 * - code : An integer
36 * - message : Error description
37 *
38 * @param array $data
39 * @return array API validation or error after API key registration
40 */
41 function wplng_api_call_request_api_key( $data ) {
42
43 /**
44 * Sanitize and check data
45 */
46
47 // Check if needed data is present
48
49 if ( empty( $data['request'] )
50 || $data['request'] !== 'register'
51 || empty( $data['mail_address'] )
52 || empty( $data['website'] )
53 || empty( $data['language_original'] )
54 || empty( $data['languages_target'] )
55 || empty( $data['accept_eula'] )
56 || $data['accept_eula'] !== true
57 ) {
58 return array(
59 'error' => true,
60 'message' => __( 'Error - Invalid data.', 'wplingua' ),
61 );
62 }
63
64 // Sanitize and check mail address
65
66 $mail_address = sanitize_email( $data['mail_address'] );
67
68 if ( ! is_email( $mail_address ) ) {
69 return array(
70 'error' => true,
71 'message' => __( 'Error - Invalid data (email address).', 'wplingua' ),
72 );
73 }
74
75 // Sanitize and check website URL
76
77 $website = sanitize_url( $data['website'] );
78
79 if ( $website !== $data['website'] ) {
80 return array(
81 'error' => true,
82 'message' => __( 'Error - Invalid data (website URL).', 'wplingua' ),
83 );
84 }
85
86 // Sanitize and check original and target language
87
88 $language_original = sanitize_key( $data['language_original'] );
89 $languages_target = sanitize_key( $data['languages_target'] );
90
91 if ( ! wplng_is_valid_language_id( $language_original )
92 || ! wplng_is_valid_language_id( $languages_target )
93 || ( $language_original === $languages_target )
94 ) {
95 return array(
96 'error' => true,
97 'message' => __( 'Error - Invalid data (languages).', 'wplingua' ),
98 );
99 }
100
101 /**
102 * Get the API call
103 */
104
105 $request = wp_remote_post(
106 WPLNG_API_URL . '/account/',
107 array(
108 'method' => 'POST',
109 'timeout' => 5,
110 'sslverify' => WPLNG_API_SSLVERIFY,
111 'body' => array(
112 'request' => 'register',
113 'version' => WPLNG_API_VERSION,
114 'website' => $website,
115 'mail_address' => $mail_address,
116 'language_original' => $language_original,
117 'languages_target' => array( $languages_target ),
118 'accept_eula' => true,
119 ),
120 )
121 );
122
123 /**
124 * Check if the API call worked
125 */
126
127 if ( is_wp_error( $request )
128 || wp_remote_retrieve_response_code( $request ) !== 200
129 ) {
130 return array(
131 'error' => true,
132 'message' => __( 'Error - The API could not be called.', 'wplingua' ),
133 );
134 }
135
136 /**
137 * Check and sanitize the API response
138 */
139
140 $response_checked = array();
141 $response = json_decode(
142 wp_remote_retrieve_body( $request ),
143 true
144 );
145
146 if ( isset( $response['register'] )
147 && ( true === $response['register'] )
148 ) {
149
150 // API returning confirmation of key creation
151
152 $response_checked = array(
153 'register' => true,
154 );
155
156 } elseif ( ! empty( $response['error'] )
157 && ( true === $response['error'] )
158 && isset( $response['code'] )
159 && is_int( $response['code'] )
160 && ! empty( $response['message'] )
161 && is_string( $response['message'] )
162 ) {
163
164 // API returning a valid error
165
166 $response_checked = array(
167 'error' => true,
168 'message' => sanitize_text_field( $response['message'] ),
169 );
170
171 } else {
172
173 // API returned an unexpected response
174
175 $response_checked = array(
176 'error' => true,
177 'message' => __( 'Error - API response not valid.', 'wplingua' ),
178 );
179
180 }
181
182 return $response_checked;
183 }
184