aboutsummaryrefslogtreecommitdiff
path: root/src/server/ApiManagers/FireflyManager.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/ApiManagers/FireflyManager.ts')
-rw-r--r--src/server/ApiManagers/FireflyManager.ts73
1 files changed, 72 insertions, 1 deletions
diff --git a/src/server/ApiManagers/FireflyManager.ts b/src/server/ApiManagers/FireflyManager.ts
index d757a23fe..73cf94206 100644
--- a/src/server/ApiManagers/FireflyManager.ts
+++ b/src/server/ApiManagers/FireflyManager.ts
@@ -1,4 +1,4 @@
-import { Dropbox, files } from 'dropbox';
+import { Dropbox } from 'dropbox';
import * as fs from 'fs';
import * as multipart from 'parse-multipart-data';
import * as path from 'path';
@@ -19,6 +19,63 @@ export default class FireflyManager extends ApiManager {
console.error('Error:', error);
return undefined;
});
+
+ askFireflyOld = (prompt: string = 'a realistic illustration of a cat coding', uploadId: string, strength: number) => {
+ const fetched = this.getBearerToken().then(response =>
+ response?.json().then((data: { access_token: string }) => {
+ const body: any = {
+ prompt: prompt,
+ structure: {
+ strength: strength,
+ imageReference: {
+ source: {
+ uploadId: uploadId,
+ },
+ },
+ },
+ };
+ return fetch('https://firefly-api.adobe.io/v3/images/generate', {
+ method: 'POST',
+ headers: [
+ ['Content-Type', 'application/json'],
+ ['Accept', 'application/json'],
+ ['x-api-key', process.env._CLIENT_FIREFLY_CLIENT_ID ?? ''],
+ ['Authorization', `Bearer ${data.access_token}`],
+ ],
+ body: JSON.stringify(body),
+ })
+ .then(response => response.json().then(json => JSON.stringify((json.outputs?.[0] as { image: { url: string } })?.image)))
+ .catch(error => {
+ console.error('Error:', error);
+ return '';
+ });
+ })
+ );
+ return fetched;
+ };
+
+ uploadImageToFirefly = (image: Blob) => {
+ const fetched = this.getBearerToken().then(response =>
+ response?.json().then((data: { access_token: string }) =>
+ fetch('https://firefly-api.adobe.io/v3/uploads', {
+ method: 'POST',
+ headers: [
+ ['Content-Type', image.type],
+ ['x-api-key', process.env._CLIENT_FIREFLY_CLIENT_ID ?? ''],
+ ['Authorization', `Bearer ${data.access_token}`],
+ ],
+ body: image,
+ })
+ .then(response => response.json())
+ .then(data => data.uploadId) // Extract the uploadId from the response
+ .catch(error => {
+ console.error('Error:', error);
+ return '';
+ })
+ )
+ );
+ return fetched;
+ };
generateImage = (prompt: string = 'a realistic illustration of a cat coding') => {
const fetched = this.getBearerToken().then(response =>
response?.json().then((data: { access_token: string }) =>
@@ -165,6 +222,20 @@ export default class FireflyManager extends ApiManager {
protected initialize(register: Registration): void {
register({
method: Method.POST,
+ subscription: '/oldQueryFireflyImage',
+ secureHandler: async ({ req, res }) => {
+ const { prompt, imageBlob, strength = 0.5 } = req.body;
+ const uploadId = imageBlob ? await this.uploadImageToFirefly(imageBlob) : null;
+ this.askFireflyOld(prompt, uploadId, strength).then(fire =>
+ DashUploadUtils.UploadImage(JSON.parse(fire ?? '').url).then(info => {
+ if (info instanceof Error) _invalid(res, info.message);
+ else _success(res, info);
+ })
+ );
+ },
+ });
+ register({
+ method: Method.POST,
subscription: '/queryFireflyImage',
secureHandler: ({ req, res }) =>
this.generateImage(req.body.prompt).then(url =>