'Unauthorized')); } $result = Affirm_Api::get('validate'); if (is_wp_error($result)) { wp_send_json_error(array('message' => $result->get_error_message())); } wp_send_json_success(array( 'message' => 'Connected successfully', 'imageCount' => isset($result['imageCount']) ? $result['imageCount'] : 0, )); } /** * AJAX: Generate a signed URL for an image (used by embed code modal) */ public function ajax_generate_signed_url() { check_ajax_referer('affirm_admin_nonce', 'nonce'); if (!current_user_can('manage_options')) { wp_send_json_error(array('message' => 'Unauthorized')); } $image_id = isset($_POST['image_id']) ? sanitize_text_field(wp_unslash($_POST['image_id'])) : ''; if (!$image_id) { wp_send_json_error(array('message' => 'Image ID required')); } $ttl = isset($_POST['ttl']) ? absint($_POST['ttl']) : 0; $result = Affirm_Api::get("sign/{$image_id}", array('ttl' => $ttl)); if (is_wp_error($result)) { wp_send_json_error(array('message' => $result->get_error_message())); } wp_send_json_success(array( 'url' => isset($result['url']) ? $result['url'] : '', 'expiresAt' => isset($result['expiresAt']) ? $result['expiresAt'] : 0, )); } }