403Webshell
Server IP : 52.25.153.185  /  Your IP : 216.73.217.131
Web Server : Apache
System : Linux ip-172-26-6-158 5.10.0-35-cloud-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64
User : daemon ( 1)
PHP Version : 8.1.10
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /bitnami/wordpress/wp-content/plugins/fluentformpro/src/classes/Chat/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /bitnami/wordpress/wp-content/plugins/fluentformpro/src/classes/Chat/ChatApi.php
<?php

namespace FluentFormPro\classes\Chat;

defined('ABSPATH') or die;

use FluentForm\App\Models\FormMeta;
use FluentForm\App\Services\FormBuilder\ShortCodeParser;
use FluentForm\Framework\Helpers\ArrayHelper;

/**
 *  Handling Chat Field Module.
 *
 * @since 5.1.5
 */
class ChatApi
{
    protected $url = 'https://api.openai.com/v1/chat/completions';
    protected $key;

    public function __construct($key = '_fluentform_openai_settings')
    {
        $this->key = $key;
    }

    /**
     * Maybe Extract code from a response that might contain markdown code blocks
     *
     * @param string $content The content to parse
     * @return string The extracted code or original content if no code block found
     */
    public function maybeExtractCodeFromResponse($content)
    {
        // Check if the content contains HTML code blocks
        if (preg_match('/```html\s*(.+?)\s*```/s', $content, $matches)) {
            // Return only the code part
            return trim($matches[1]);
        }

        // Also check for other code blocks
        if (preg_match('/```\w*\s*(.+?)\s*```/s', $content, $matches)) {
            return trim($matches[1]);
        }

        return $content;
    }

 

    public function makeRequest($args = [], $token = '')
    {
        if (!$token) {
            $token = ArrayHelper::get(get_option($this->key), 'access_token');
        }

        $headers = [
            'Authorization' => 'Bearer ' . $token,
            'Content-Type'  => 'application/json',
        ];

        $bodyArgs = [
            "model"    => "gpt-3.5-turbo",
            "messages" => [
                $args ?: [
                    "role"    => "system",
                    "content" => "You are a helpful assistant."
                ]
            ]
        ];

        add_filter('http_request_timeout', function($timeout) {
            return 60; // Set timeout to 60 seconds
        });

        $request = wp_remote_post($this->url, [
            'headers' => $headers,
            'body'    => json_encode($bodyArgs)
        ]);

        if (did_filter('http_request_timeout')) {
            add_filter('http_request_timeout', function($timeout) {
                return 5; // Set timeout to original 5 seconds
            });
        }

        if (is_wp_error($request)) {
            $message = $request->get_error_message();
            return new \WP_Error(423, $message);
        }

        $body = json_decode(wp_remote_retrieve_body($request), true);
        $code = wp_remote_retrieve_response_code($request);

        if ($code !== 200) {
            $error = __('Something went wrong.', 'fluentformpro');
            if (isset($body['error']['message'])) {
                // phpcs:ignore WordPress.WP.I18n.NonSingularStringLiteralText -- Dynamic string from API/config
                $error = __($body['error']['message'], 'fluentformpro');
            }
            return new \WP_Error(423, $error);
        }

        return $body;
    }

    public function isAuthenticated($token)
    {
        $result = $this->makeRequest([], $token);
        if (is_wp_error($result)) {
            return $result;
        }
        return isset($result['id']);
    }

    public function isApiEnabled()
    {
        $settings = get_option($this->key);
        if (!$settings || empty($settings['status'])) {
            $settings = [
                'access_token' => '',
                'status' => false,
            ];
        }
        return ArrayHelper::isTrue($settings, 'status');
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit