You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.8 KiB
Dart
73 lines
1.8 KiB
Dart
import 'dart:convert';
|
|
import 'dart:developer';
|
|
|
|
import 'package:fluffychat/pangea/utils/error_handler.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:http/http.dart';
|
|
|
|
import '../config/environment.dart';
|
|
import '../network/requests.dart';
|
|
|
|
class GenerateImageeResponse {
|
|
final String imageUrl;
|
|
final String prompt;
|
|
|
|
GenerateImageeResponse({
|
|
required this.imageUrl,
|
|
required this.prompt,
|
|
});
|
|
|
|
factory GenerateImageeResponse.fromJson(Map<String, dynamic> json) {
|
|
return GenerateImageeResponse(
|
|
imageUrl: json['image_url'],
|
|
prompt: json['prompt'],
|
|
);
|
|
}
|
|
|
|
factory GenerateImageeResponse.error() {
|
|
return GenerateImageeResponse(
|
|
imageUrl: 'https://i.imgur.com/2L2JYqk.png',
|
|
prompt: 'Error',
|
|
);
|
|
}
|
|
}
|
|
|
|
class GenerateImageRequest {
|
|
String prompt;
|
|
|
|
GenerateImageRequest({required this.prompt});
|
|
|
|
Map<String, dynamic> toJson() => {
|
|
'prompt': prompt,
|
|
};
|
|
}
|
|
|
|
class ImageRepo {
|
|
static Future<GenerateImageeResponse> fetchImage(
|
|
GenerateImageRequest request) async {
|
|
final Requests req =
|
|
Requests(baseUrl: Environment.choreoApi); // Set your API base URL
|
|
final requestBody = request.toJson();
|
|
|
|
try {
|
|
final Response res = await req.post(
|
|
url: '/generate-image/', // Endpoint in your FastAPI server
|
|
body: requestBody,
|
|
);
|
|
|
|
if (res.statusCode == 200) {
|
|
final decodedBody = jsonDecode(utf8.decode(res.bodyBytes));
|
|
return GenerateImageeResponse.fromJson(
|
|
decodedBody); // Convert response to ImageModel
|
|
} else {
|
|
throw Exception('Failed to load image');
|
|
}
|
|
} catch (err, stack) {
|
|
debugger(when: kDebugMode);
|
|
ErrorHandler.logError(e: err, s: stack, data: requestBody);
|
|
return GenerateImageeResponse
|
|
.error(); // Return an error model or handle accordingly
|
|
}
|
|
}
|
|
}
|