_integrationID = $integrationID; $this->_formID = $formID; } public static function registerAjax() { add_action('wp_ajax_bitforms_twilio_authorization', [__CLASS__, 'checkAuthorization']); } public static function checkAuthorization() { if (isset($_REQUEST['_ajax_nonce']) && wp_verify_nonce(sanitize_text_field(wp_unslash($_REQUEST['_ajax_nonce'])), 'bitforms_save')) { GlobalHelper::requirePostMethod(); try { $tokenRequestParams = GlobalHelper::formatRequestData(); } catch (\InvalidArgumentException $e) { wp_send_json_error($e->getMessage(), 400); } if ( empty($tokenRequestParams->sid) || empty($tokenRequestParams->token) || empty($tokenRequestParams->from_num) ) { wp_send_json_error( __( 'Requested parameter is empty', 'bit-form' ), 400 ); } $header = [ 'Authorization' => 'Basic ' . base64_encode("$tokenRequestParams->sid:$tokenRequestParams->token"), 'Accept' => '*/*', 'verify' => false ]; $apiEndpoint = self::$apiBaseUri . '/Accounts'; $apiResponse = HttpHelper::get($apiEndpoint, null, $header); $xml = simplexml_load_string($apiResponse); $json = wp_json_encode($xml); $response = json_decode($json, true); if (array_key_exists('RestException', $response)) { wp_send_json_error( 'Unauthorize', 400 ); } else { wp_send_json_success($apiResponse, 200); } } } public function execute(IntegrationHandler $integrationHandler, $integrationData, $fieldValues, $entryID, $logID) { $integrationDetails = $integrationData->integration_details; if (is_string($integrationDetails)) { $integrationDetails = json_decode($integrationDetails); } $fieldMap = $integrationDetails->field_map; $sid = $integrationDetails->sid; $token = $integrationDetails->token; $from_num = $integrationDetails->from_num; if ( empty($sid) || empty($token) || empty($from_num) || empty($fieldMap) ) { $error = new WP_Error('REQ_FIELD_EMPTY', __('SID, Auth Token,From Number and mapping fields are required for rapidmail api', 'bit-form')); return $error; } $recordApiHelper = new RecordApiHelper($integrationDetails, $sid, $token, $from_num, $logID, $this->_formID, $entryID); $twilioResponse = $recordApiHelper->executeRecordApi( $this->_integrationID, $fieldValues, $fieldMap ); return $twilioResponse; } }