84 lines
2.2 KiB
Dart
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;
|
|
}
|
|
}
|