THATMobile/alice/lib/model/alice_http_call.dart
2026-02-26 10:39:42 +07:00

84 lines
2.2 KiB
Dart

import 'package:alice/model/alice_http_error.dart';
import 'package:alice/model/alice_http_request.dart';
import 'package:alice/model/alice_http_response.dart';
import 'dart:convert';
class AliceHttpCall {
final int id;
late DateTime createdTime;
String client = "";
bool loading = true;
bool secure = false;
String method = "";
String endpoint = "";
String server = "";
String uri = "";
int duration = 0;
AliceHttpRequest? request;
AliceHttpResponse? response;
AliceHttpError? error;
AliceHttpCall(this.id) {
loading = true;
createdTime = DateTime.now();
}
void setResponse(AliceHttpResponse response) {
this.response = response;
loading = false;
}
String getCurlCommand() {
var compressed = false;
var curlCmd = "curl";
curlCmd += " -X $method";
final headers = request!.headers;
headers.forEach((key, dynamic value) {
if ("Accept-Encoding" == key && "gzip" == value) {
compressed = true;
}
curlCmd += " -H '$key: $value'";
});
String requestBody = request!.body.toString();
if (requestBody != '' && requestBody.trim() != "{}") {
try {
requestBody = json.encode(request!.body);
} catch (e) {
requestBody = request!.body.toString();
}
curlCmd += " --data \'${requestBody.replaceAll("\n", "\\n")}'";
}
final queryParamMap = request!.queryParameters;
int paramCount = queryParamMap.keys.length;
var queryParams = "";
if (paramCount > 0) {
queryParams += "?";
queryParamMap.forEach((key, dynamic value) {
queryParams += '$key=$value';
paramCount -= 1;
if (paramCount > 0) {
queryParams += "&";
}
});
}
// If server already has http(s) don't add it again
if (server.contains("http://") || server.contains("https://")) {
// ignore: join_return_with_assignment
curlCmd += "${compressed ? " --compressed " : " "}${"'$server$endpoint$queryParams'"}";
} else {
// ignore: join_return_with_assignment
print(server);
print(endpoint);
curlCmd +=
"${compressed ? " --compressed " : " "}'$uri'"; //{"'${secure ? 'https://' : 'http://'}$server$endpoint$queryParams'"}
}
return curlCmd;
}
}