/**
* 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;
}
Shop - eshop.lk
Free Delivery on Orders Above Rs 8,000
Shop Now
Hi! Click one of our members below to chat on WhatsApp
The team typically replies in a few minutes.