import 'dart:convert'; import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/links.dart'; import 'package:SEFER/main.dart'; import 'package:get/get.dart'; import 'package:http/http.dart' as http; import 'package:SEFER/env/env.dart'; import '../../constant/api_key.dart'; import 'gemeni.dart'; import 'llama_ai.dart'; import 'upload_image.dart'; class CRUD { Future get({ required String link, Map? payload, }) async { var url = Uri.parse( link, ); var response = await http.post( url, body: payload, headers: { "Content-Type": "application/x-www-form-urlencoded", 'Authorization': 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials.toString()))}', }, ); // print("-----request----" + response.request.toString()); // print("-----headers-----" + response.headers.toString()); // print("-----payload-----" + payload.toString()); // if (response.statusCode == 200) { // print(response.body); var jsonData = jsonDecode(response.body); if (jsonData['status'] == 'success') { // print(jsonData); return response.body; } return jsonData['status']; } // } Future getAgoraToken({ required String channelName, required String uid, }) async { var uid = box.read(BoxName.phone) ?? box.read(BoxName.phoneDriver); var res = await http.get( Uri.parse( 'https://repulsive-pig-rugby-shirt.cyclic.app/token?channelName=$channelName'), headers: {'Authorization': 'Bearer ${AK.agoraAppCertificate}'}); if (res.statusCode == 200) { var response = jsonDecode(res.body); print(await response); return response['token']; } else { print(res.reasonPhrase); } } Future getLlama({ required String link, required String payload, required String prompt, }) async { var url = Uri.parse( link, ); var headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer LL-X5lJ0Px9CzKK0HTuVZ3u2u4v3tGWkImLTG7okGRk4t25zrsLqJ0qNoUzZ2x4ciPy' // 'Authorization': 'Bearer ${Env.llamaKey}' }; var data = json.encode({ "model": "Llama-3-70b-Inst-FW", // "model": "llama-13b-chat", "messages": [ { "role": "user", "content": "Extract the desired information from the following passage as json decoded like $prompt just in this:\n\n$payload" } ], "temperature": 0.9 }); var response = await http.post( url, body: data, headers: headers, ); if (response.statusCode == 200) { return response.body; } return response.statusCode; } Future allMethodForAI(String prompt, linkPHP, imagePath) async { await ImageController().choosImage(linkPHP, imagePath); Future.delayed(const Duration(seconds: 2)); var extractedString = await arabicTextExtractByVisionAndAI(imagePath: imagePath); // print('extractedString'); var json = jsonDecode(extractedString); // print(extractedString); // print(json); var textValues = getAllTextValuesWithLineNumbers(json); // List textValues = getAllTextValues(json); print('extractedData'); print(textValues); await AI().geminiAiExtraction(prompt, textValues); } Map>> getAllTextValuesWithLineNumbers( Map json) { Map>> output = {}; int lineNumber = 1; if (json.containsKey('regions')) { List regions = json['regions']; for (Map region in regions) { if (region.containsKey('lines')) { List lines = region['lines']; List> linesWithText = []; for (Map line in lines) { if (line.containsKey('words')) { List words = line['words']; String lineText = ""; for (Map word in words) { if (word.containsKey('text')) { lineText += word['text'] + " "; } } lineText = lineText.trim(); linesWithText.add( {"line_number": lineNumber.toString(), "text": lineText}); lineNumber++; } } output["region_${region.hashCode}"] = linesWithText; } } } return output; } // List getAllTextValues(Map json) { // List textValues = []; // if (json.containsKey('regions')) { // List regions = json['regions']; // for (Map region in regions) { // if (region.containsKey('lines')) { // List lines = region['lines']; // for (Map line in lines) { // if (line.containsKey('words')) { // List words = line['words']; // for (Map word in words) { // if (word.containsKey('text')) { // textValues.add(word['text']); // } // } // } // } // } // } // } // return textValues; // } Future arabicTextExtractByVisionAndAI({ required String imagePath, }) async { var headers = { 'Content-Type': 'application/json', 'Ocp-Apim-Subscription-Key': '21010e54b50f41a4904708c526e102df' }; // var url = Uri.parse( // 'https://ocrhamza.cognitiveservices.azure.com/vision/v2.1/ocr?language=ar', // ); String imagePathFull = '${AppLink.server}card_image/$imagePath-${box.read(BoxName.driverID)}.jpg'; var request = http.Request( 'POST', Uri.parse( 'https://ocrhamza.cognitiveservices.azure.com/vision/v2.1/ocr?language=ar')); request.body = json.encode({"url": imagePathFull}); request.headers.addAll(headers); http.StreamedResponse response = await request.send(); if (response.statusCode == 200) { // print(await response.stream.bytesToString()); return await response.stream.bytesToString(); } else { print(response.reasonPhrase); } } Future getChatGPT({ required String link, required String payload, }) async { var url = Uri.parse( link, ); var headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer ${Env.chatGPTkeySeferNew}' }; var data = json.encode({ "model": "gpt-3.5-turbo", "messages": [ { "role": "user", "content": "Extract the desired information from the following passage as json decoded like vin,make,made,year,expiration_date,color,owner,registration_date just in this:\n\n$payload" } ], "temperature": 0.9 }); var response = await http.post( url, body: data, headers: headers, ); if (response.statusCode == 200) { return response.body; } return response.statusCode; } Future postStripe({ required String link, Map? payload, }) async { // String? secretKey = await storage.read(key: BoxName.secretKey); var url = Uri.parse( link, ); var response = await http.post( url, body: payload, headers: { "Content-Type": "application/x-www-form-urlencoded", 'Authorization': 'Bearer ${AK.secretKey}', }, ); if (response.statusCode == 200) { print(response); return response.body; } else { print('eeeeeeeeerrrrorrrr ${response.statusCode}'); print(response.body); } } Future post({ required String link, Map? payload, }) async { // String? basicAuthCredentials = // await storage.read(key: BoxName.basicAuthCredentials); var url = Uri.parse( link, ); var response = await http.post( url, body: payload, headers: { "Content-Type": "application/x-www-form-urlencoded", 'Authorization': 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', }, ); print(response.request); print(payload); var jsonData = jsonDecode(response.body); print(jsonData); if (response.statusCode == 200) { if (jsonData['status'] == 'success') { return response.body; } else { return (jsonData['status']); } } else { return response.statusCode; } } Future postPayMob({ required String link, Map? payload, }) async { // String? basicAuthCredentials = // await storage.read(key: BoxName.basicAuthCredentials); var url = Uri.parse( link, ); var response = await http.post(url, body: payload, headers: {'Content-Type': 'application/json'}); print(response.request); print(payload); var jsonData = jsonDecode(response.body); // print(jsonData); if (response.statusCode == 200) { if (jsonData['status'] == 'success') { return response.body; } else { return (jsonData['status']); } } else { return response.statusCode; } } sendEmail( String link, Map? payload, ) async { var headers = { "Content-Type": "application/x-www-form-urlencoded", 'Authorization': 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', }; var request = http.Request('POST', Uri.parse(link)); request.bodyFields = payload!; request.headers.addAll(headers); http.StreamedResponse response = await request.send(); // print(request.body); // print(response); if (response.statusCode == 200) { print(await response.stream.bytesToString()); } else { print(response.reasonPhrase); } } Future postFromDialogue({ required String link, Map? payload, }) async { // String? basicAuthCredentials = // await storage.read(key: BoxName.basicAuthCredentials); var url = Uri.parse( link, ); var response = await http.post( url, body: payload, headers: { "Content-Type": "application/x-www-form-urlencoded", 'Authorization': 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', }, ); //print(response.request); //print('body========================='); //print(response.body); if (response.body.isNotEmpty) { var jsonData = jsonDecode(response.body); if (response.statusCode == 200) { if (jsonData['status'] == 'success') { Get.back(); // Get.snackbar( // jsonData['status'], // jsonData['message'], // ); return response.body; } } return (jsonData['status']); } } Future sendVerificationRequest(String phoneNumber) async { final accountSid = AK.accountSIDTwillo; final authToken = AK.authTokenTwillo; final verifySid = AK.twilloRecoveryCode; final Uri verificationUri = Uri.parse( 'https://verify.twilio.com/v2/Services/$verifySid/Verifications'); // Send the verification request final response = await http.post( verificationUri, headers: { 'Authorization': 'Basic ' + base64Encode(utf8.encode('$accountSid:$authToken')), 'Content-Type': 'application/x-www-form-urlencoded', }, body: { 'To': phoneNumber, 'Channel': 'sms', }, ); if (response.statusCode == 201) { print('Verification request sent'); } else { print('Failed to send verification request'); } // Prompt the user to enter the OTP final otpCode = "123456"; // Replace with user input // Check the verification code final checkUri = Uri.parse( 'https://verify.twilio.com/v2/Services/$verifySid/VerificationCheck'); final checkResponse = await http.post( checkUri, headers: { 'Authorization': 'Basic ' + base64Encode(utf8.encode('$accountSid:$authToken')), 'Content-Type': 'application/x-www-form-urlencoded', }, body: { 'To': phoneNumber, 'Code': otpCode, }, ); if (checkResponse.statusCode == 201) { print('Verification successful'); } else { print('Verification failed'); } } Future getGoogleApi({ required String link, Map? payload, }) async { var url = Uri.parse( link, ); var response = await http.post( url, body: payload, ); print(response.request); var jsonData = jsonDecode(response.body); // //print(jsonData); if (jsonData['status'] == 'OK') { return jsonData; } return (jsonData['status']); } Future update({ required String endpoint, required Map data, required String id, }) async { // String? basicAuthCredentials = // await storage.read(key: BoxName.basicAuthCredentials); var url = Uri.parse('$endpoint/$id'); var response = await http.put( url, body: json.encode(data), headers: { 'Authorization': 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', }, ); return json.decode(response.body); } Future delete({ required String endpoint, required String id, }) async { // String? basicAuthCredentials = // await storage.read(key: BoxName.basicAuthCredentials); var url = Uri.parse('$endpoint/$id'); var response = await http.delete( url, headers: { 'Authorization': 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', }, ); return json.decode(response.body); } }