( req: Request, res: Response )
| 25 | } |
| 26 | |
| 27 | export const generateImage = async ( |
| 28 | req: Request, |
| 29 | res: Response |
| 30 | ): Promise<void> => { |
| 31 | const { prompt, size } = req.body |
| 32 | |
| 33 | if (!prompt || prompt === '') { |
| 34 | ResponseHandler.badRequest(res, '', 'Prompt is required.') |
| 35 | } |
| 36 | |
| 37 | let imageSize |
| 38 | |
| 39 | switch (size) { |
| 40 | case 'Small': |
| 41 | imageSize = CreateImageRequestSizeEnum._256x256 |
| 42 | break |
| 43 | case 'Medium': |
| 44 | imageSize = CreateImageRequestSizeEnum._512x512 |
| 45 | break |
| 46 | case 'Large': |
| 47 | imageSize = CreateImageRequestSizeEnum._1024x1024 |
| 48 | break |
| 49 | |
| 50 | default: |
| 51 | imageSize = CreateImageRequestSizeEnum._256x256 |
| 52 | break |
| 53 | } |
| 54 | |
| 55 | try { |
| 56 | const aiResponse = await openai.createImage({ |
| 57 | prompt, |
| 58 | n: 1, |
| 59 | size: imageSize, |
| 60 | }) |
| 61 | |
| 62 | const image = aiResponse.data.data[0].url |
| 63 | |
| 64 | if (!image) { |
| 65 | ResponseHandler.serverError( |
| 66 | res, |
| 67 | '', |
| 68 | 'Something went wrong while generating image' |
| 69 | ) |
| 70 | } |
| 71 | |
| 72 | const uploadedImage = await cloudinary.uploader.upload(image || '') |
| 73 | |
| 74 | const imageUrl = uploadedImage.url.replace(/^http:/, 'https:') |
| 75 | |
| 76 | await createImage({ |
| 77 | imageUrl, |
| 78 | prompt, |
| 79 | }) |
| 80 | |
| 81 | ResponseHandler.created(res, { imageUrl }) |
| 82 | } catch (error: unknown) { |
| 83 | // console.log('Error :', error) |
| 84 | ResponseHandler.serverError(res, error) |
nothing calls this directly
no test coverage detected