40 lines
1.1 KiB
Dart
40 lines
1.1 KiB
Dart
import 'dart:async';
|
|
import 'dart:convert';
|
|
|
|
import 'package:didvan/services/storage/storage.dart';
|
|
import 'package:http/http.dart' as http;
|
|
import 'package:http/http.dart';
|
|
|
|
class AiApiService {
|
|
static const String baseUrl = 'https://api.didvan.app/ai';
|
|
static final _client = http.Client();
|
|
|
|
static Future<Request> initial(
|
|
{required final String url,
|
|
required final String message,
|
|
final int? chatId}) async {
|
|
final headers = {
|
|
"Content-Type": "application/json",
|
|
"Authorization": "Bearer ${await StorageService.getValue(key: 'token')}"
|
|
};
|
|
|
|
var request = http.Request('POST', Uri.parse(baseUrl + url))
|
|
..headers.addAll(headers);
|
|
|
|
var body = {'prompt': message};
|
|
if (chatId != null) {
|
|
body.addAll({'chatId': chatId.toString()});
|
|
}
|
|
request.body = jsonEncode(body);
|
|
return request;
|
|
}
|
|
|
|
static Future<ByteStream> getResponse(Request request) async {
|
|
final res = _client.send(request).timeout(
|
|
const Duration(seconds: 15),
|
|
);
|
|
final http.StreamedResponse response = await res;
|
|
return response.stream;
|
|
}
|
|
}
|