/** * Ajax Callback: Verify Gemini Key (Using GET models) */ public function verify_gemini_key() { check_ajax_referer( 'eshop_bulk_review_nonce', 'security' ); // Trim any accidental leading/trailing spaces or invisible characters $api_key = isset( $_POST['api_key'] ) ? trim( sanitize_text_field( $_POST['api_key'] ) ) : ''; if ( empty( $api_key ) ) { wp_send_json_error( array( 'message' => 'Empty key' ) ); } // Test using the lightweight GET models endpoint $endpoint = 'https://generativelanguage.googleapis.com/v1beta/models?key=' . urlencode( $api_key ); $response = wp_remote_get( $endpoint, array( 'timeout' => 15, 'sslverify' => false, // Prevents cURL SSL verification failures on local/shared servers ) ); if ( ! is_wp_error( $response ) && wp_remote_retrieve_response_code( $response ) === 200 ) { update_option( 'eshop_gemini_api_key', $api_key ); wp_send_json_success(); } wp_send_json_error(); } /** * AI Review Generation with Gemini */ private function generate_srilankan_review_with_gemini( $product_title, $context, $api_key ) { $api_key = trim( $api_key ); if ( empty( $api_key ) ) { return false; } // Updated endpoint using gemini-2.5-flash $endpoint = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=' . urlencode( $api_key ); switch ( $context ) { case 'female': $rules = "1. 'name': MUST be a realistic Sri Lankan FEMALE name (e.g. Nipuni Perera, Dilani Silva).\n2. 'review': Female review on product quality, material, or packaging in English or Singlish."; break; case 'electronic': $rules = "1. 'name': Realistic Sri Lankan name.\n2. 'review': Tech review MUST be in mixed Singlish / Sinhala / English."; break; case 'gents': $rules = "1. 'name': MUST be a realistic Sri Lankan MALE name (e.g. Kasun Perera, Pathum Silva).\n2. 'review': Male review in English or Singlish."; break; default: $rules = "1. 'name': Realistic Sri Lankan full name.\n2. 'review': Buyer review in English, Sinhala, or Singlish."; break; } $prompt = "Generate a verified buyer review for an e-commerce item named '{$product_title}'.\n{$rules}\nReturn strictly JSON with keys 'name' and 'review'."; $body = array( 'contents' => array( array( 'parts' => array( array( 'text' => $prompt ) ) ) ), 'generationConfig' => array( 'response_mime_type' => 'application/json' ) ); $response = wp_remote_post( $endpoint, array( 'headers' => array( 'Content-Type' => 'application/json' ), 'body' => wp_json_encode( $body ), 'timeout' => 15, 'sslverify' => false, ) ); if ( is_wp_error( $response ) ) { return false; } $data = json_decode( wp_remote_retrieve_body( $response ), true ); if ( isset( $data['candidates'][0]['content']['parts'][0]['text'] ) ) { return json_decode( $data['candidates'][0]['content']['parts'][0]['text'], true ); } return false; } Beauty & Personal Care - eshop.lk

Free Delivery on Orders Above Rs 8,000

Shop Now