Skip to content
Snippets Groups Projects

Re roll of the changes

Merged wouters_f requested to merge issue/ai_image-3503049:3503049-ai-all-models-reroll into 1.0.x
Files
5
@@ -2,14 +2,16 @@
namespace Drupal\ai_image\Controller;
use Drupal\ai\AiProviderPluginManager;
use Drupal\Core\Controller\ControllerBase;
use Drupal\key\KeyRepositoryInterface;
use Drupal\ai_image\GetAIImage;
use PhpParser\Error;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\ai\Enum\Bundles;
/**
* Returns responses for AIImg routes.
*/
@@ -29,6 +31,13 @@ class AIImgController extends ControllerBase {
*/
protected $aiImageGenerator;
/**
* The AI provider manager.
*
* @var \Drupal\ai\AiProviderPluginManager
*/
protected $aiProviderManager;
/**
* Constructs an AIImgController object.
*
@@ -37,9 +46,10 @@ class AIImgController extends ControllerBase {
* @param \Drupal\ai_image\GetAIImage $aiImageGenerator
* The AI image generator service.
*/
public function __construct(KeyRepositoryInterface $keyRepository, GetAIImage $aiImageGenerator) {
public function __construct(KeyRepositoryInterface $keyRepository, GetAIImage $aiImageGenerator, AiProviderPluginManager $aiProviderManager) {
$this->keyRepository = $keyRepository;
$this->aiImageGenerator = $aiImageGenerator;
$this->aiProviderManager = $aiProviderManager;
}
/**
@@ -48,7 +58,8 @@ class AIImgController extends ControllerBase {
public static function create(ContainerInterface $container) {
return new static(
$container->get('key.repository'),
$container->get('ai_image.get_image')
$container->get('ai_image.get_image'),
$container->get('ai.provider'),
);
}
@@ -69,20 +80,41 @@ class AIImgController extends ControllerBase {
* Builds the response.
*/
public function getimage(Request $request): JsonResponse {
$imgurl = NULL;
$data = json_decode($request->getContent());
$prompt = implode(', ', [$data->prompt, $data->options->prompt_extra]);
$provider_name = $data->options->source;
$generator = $this->aiImageGenerator;
$imgurl = $generator->generateImageInAiModule($provider_name, $prompt);
if (!$imgurl) {
$imgurl = '/modules/custom/ai_image/icons/error.jpg';
$provider_model = $data->options->source;
$ai_model = '';
$ai_provider = '';
try {
if ($provider_model == '' || $provider_model == '000-AI-IMAGE-DEFAULT') {
if (empty($parts[0])) {
$default_model = $this->aiProviderManager->getSimpleDefaultProviderOptions('text_to_image');
if ($default_model == "") {
throw new Error('no text-to_image_model selected and no default , can not render.');
}
else {
$parts1 = explode('__', $default_model);
$ai_provider = $parts1[0];
$ai_model = $parts1[1];
}
}
}
else {
$parts = explode('__', $provider_model);
$ai_provider = $parts[0];
$ai_model = $parts[1];
}
$imgurl = $this->aiImageGenerator->getImage($ai_provider, $ai_model, $prompt);
} catch (Exception $exception) {
$path = \Drupal::service('extension.list.module')->getPath('ai_image');
$imgurl = '/' . $path . '//icons/error.jpg';
}
return new JsonResponse(
[
'text' => trim($imgurl),
],
]
);
}
}
Loading