mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-05-25 11:22:23 +00:00
Fixed post requests
This commit is contained in:
parent
0a35fcefc5
commit
3b26af0a7c
1 changed files with 225 additions and 107 deletions
|
@ -20,7 +20,8 @@ Future<http.Response> getRequest({
|
||||||
return http.get(
|
return http.get(
|
||||||
Uri.parse("${server.connectionMethod}://${server.domain}${server.path ?? ""}${server.port != null ? ':${server.port}' : ""}/control$urlPath"),
|
Uri.parse("${server.connectionMethod}://${server.domain}${server.path ?? ""}${server.port != null ? ':${server.port}' : ""}/control$urlPath"),
|
||||||
headers: {
|
headers: {
|
||||||
'Authorization': 'Basic ${server.authToken}'
|
'Authorization': 'Basic ${server.authToken}',
|
||||||
|
'Content-Type': 'application/json'
|
||||||
},
|
},
|
||||||
).timeout(const Duration(seconds: 10));
|
).timeout(const Duration(seconds: 10));
|
||||||
}
|
}
|
||||||
|
@ -34,61 +35,73 @@ Future<http.Response> postRequest({
|
||||||
return http.post(
|
return http.post(
|
||||||
Uri.parse("${server.connectionMethod}://${server.domain}${server.path ?? ""}${server.port != null ? ':${server.port}' : ""}/control$urlPath"),
|
Uri.parse("${server.connectionMethod}://${server.domain}${server.path ?? ""}${server.port != null ? ':${server.port}' : ""}/control$urlPath"),
|
||||||
headers: {
|
headers: {
|
||||||
'Authorization': 'Basic ${server.authToken}'
|
"Authorization": "Basic ${server.authToken}",
|
||||||
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: (body != null ? jsonEncode(body) : null) ?? stringBody
|
body: jsonEncode(body)
|
||||||
).timeout(const Duration(seconds: 10));
|
).timeout(const Duration(seconds: 10));
|
||||||
}
|
}
|
||||||
|
|
||||||
Future login(Server server) async {
|
Future<Map<String, dynamic>> apiRequest({
|
||||||
|
required Server server,
|
||||||
|
required String method,
|
||||||
|
required String urlPath,
|
||||||
|
Map<String, dynamic>? body,
|
||||||
|
bool? withAuth,
|
||||||
|
}) async {
|
||||||
try {
|
try {
|
||||||
final result = await postRequest(
|
HttpClient httpClient = HttpClient();
|
||||||
urlPath: '/login',
|
if (method == 'get') {
|
||||||
server: server,
|
HttpClientRequest request = await httpClient.getUrl(Uri.parse("${server.connectionMethod}://${server.domain}${server.path ?? ""}${server.port != null ? ':${server.port}' : ""}/control$urlPath"));
|
||||||
body: {
|
HttpClientResponse response = await request.close();
|
||||||
"name": server.user,
|
String reply = await response.transform(utf8.decoder).join();
|
||||||
"password": server.password
|
httpClient.close();
|
||||||
|
if (response.statusCode == 200) {
|
||||||
|
return {
|
||||||
|
'hasResponse': true,
|
||||||
|
'error': false,
|
||||||
|
'statusCode': response.statusCode,
|
||||||
|
'body': reply
|
||||||
|
};
|
||||||
}
|
}
|
||||||
);
|
else {
|
||||||
|
return {
|
||||||
if (result.statusCode == 200) {
|
'hasResponse': true,
|
||||||
return {'result': 'success'};
|
'error': true,
|
||||||
|
'statusCode': response.statusCode,
|
||||||
|
'body': reply
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (result.statusCode == 400) {
|
else if (method == 'post') {
|
||||||
return {
|
HttpClientRequest request = await httpClient.postUrl(Uri.parse("${server.connectionMethod}://${server.domain}${server.path ?? ""}${server.port != null ? ':${server.port}' : ""}/control$urlPath"));
|
||||||
'result': 'invalid_username_password',
|
request.headers.set('content-type', 'application/json');
|
||||||
'log': AppLog(
|
if (withAuth != null && withAuth == true) {
|
||||||
type: 'login',
|
request.headers.set('authorization', 'Basic ${server.authToken}');
|
||||||
dateTime: DateTime.now(),
|
}
|
||||||
message: 'invalid_username_password',
|
request.add(utf8.encode(json.encode(body)));
|
||||||
statusCode: result.statusCode,
|
HttpClientResponse response = await request.close();
|
||||||
resBody: result.body
|
String reply = await response.transform(utf8.decoder).join();
|
||||||
)
|
httpClient.close();
|
||||||
};
|
if (response.statusCode == 200) {
|
||||||
}
|
return {
|
||||||
else if (result.statusCode == 429) {
|
'hasResponse': true,
|
||||||
return {
|
'error': false,
|
||||||
'result': 'many_attempts',
|
'statusCode': response.statusCode,
|
||||||
'log': AppLog(
|
'body': reply
|
||||||
type: 'login',
|
};
|
||||||
dateTime: DateTime.now(),
|
}
|
||||||
message: 'many_attempts',
|
else {
|
||||||
statusCode: result.statusCode,
|
return {
|
||||||
resBody: result.body
|
'hasResponse': true,
|
||||||
)
|
'error': true,
|
||||||
};
|
'statusCode': response.statusCode,
|
||||||
|
'body': reply
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return {
|
throw Exception('Method is required');
|
||||||
'result': 'error',
|
|
||||||
'log': AppLog(
|
|
||||||
type: 'login',
|
|
||||||
dateTime: DateTime.now(),
|
|
||||||
message: 'error_code_not_expected',
|
|
||||||
statusCode: result.statusCode,
|
|
||||||
resBody: result.body
|
|
||||||
)
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
} on SocketException {
|
} on SocketException {
|
||||||
return {
|
return {
|
||||||
|
@ -130,6 +143,63 @@ Future login(Server server) async {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future login(Server server) async {
|
||||||
|
final result = await apiRequest(
|
||||||
|
server: server,
|
||||||
|
method: 'post',
|
||||||
|
urlPath: '/login',
|
||||||
|
body: {
|
||||||
|
"name": server.user,
|
||||||
|
"password": server.password
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
if (result['hasResponse'] == true) {
|
||||||
|
if (result['statusCode'] == 200) {
|
||||||
|
return {'result': 'success'};
|
||||||
|
}
|
||||||
|
else if (result['statusCode'] == 400) {
|
||||||
|
return {
|
||||||
|
'result': 'invalid_username_password',
|
||||||
|
'log': AppLog(
|
||||||
|
type: 'login',
|
||||||
|
dateTime: DateTime.now(),
|
||||||
|
message: 'invalid_username_password',
|
||||||
|
statusCode: result['statusCode'],
|
||||||
|
resBody: result['body']
|
||||||
|
)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else if (result['statusCode'] == 429) {
|
||||||
|
return {
|
||||||
|
'result': 'many_attempts',
|
||||||
|
'log': AppLog(
|
||||||
|
type: 'login',
|
||||||
|
dateTime: DateTime.now(),
|
||||||
|
message: 'many_attempts',
|
||||||
|
statusCode: result['statusCode'],
|
||||||
|
resBody: result['body']
|
||||||
|
)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return {
|
||||||
|
'result': 'error',
|
||||||
|
'log': AppLog(
|
||||||
|
type: 'login',
|
||||||
|
dateTime: DateTime.now(),
|
||||||
|
message: 'error_code_not_expected',
|
||||||
|
statusCode: result['statusCode'],
|
||||||
|
resBody: result['body']
|
||||||
|
)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Future getServerStatus(Server server) async {
|
Future getServerStatus(Server server) async {
|
||||||
try {
|
try {
|
||||||
final result = await Future.wait([
|
final result = await Future.wait([
|
||||||
|
@ -178,98 +248,146 @@ Future getServerStatus(Server server) async {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future updateFiltering(Server server, bool enable) async {
|
Future updateFiltering(Server server, bool enable) async {
|
||||||
try {
|
final result = await apiRequest(
|
||||||
final result = await postRequest(
|
urlPath: '/filtering/config',
|
||||||
urlPath: '/filtering/config',
|
method: 'post',
|
||||||
server: server,
|
server: server,
|
||||||
body: {
|
body: {
|
||||||
'enabled': enable
|
'enabled': enable
|
||||||
}
|
},
|
||||||
);
|
withAuth: true
|
||||||
|
);
|
||||||
|
|
||||||
if (result.statusCode == 200) {
|
if (result['hasResponse'] == true) {
|
||||||
|
if (result['statusCode'] == 200) {
|
||||||
return {'result': 'success'};
|
return {'result': 'success'};
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return {'result': 'error'};
|
return {
|
||||||
|
'result': 'error',
|
||||||
|
'log': AppLog(
|
||||||
|
type: 'login',
|
||||||
|
dateTime: DateTime.now(),
|
||||||
|
message: 'error_code_not_expected',
|
||||||
|
statusCode: result['statusCode'],
|
||||||
|
resBody: result['body']
|
||||||
|
)
|
||||||
|
};
|
||||||
}
|
}
|
||||||
} on SocketException {
|
}
|
||||||
return {'result': 'no_connection'};
|
else {
|
||||||
} on TimeoutException {
|
return result;
|
||||||
return {'result': 'no_connection'};
|
|
||||||
} on HandshakeException {
|
|
||||||
return {'result': 'ssl_error'};
|
|
||||||
} catch (e) {
|
|
||||||
return {'result': 'error'};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future updateSafeSearch(Server server, bool enable) async {
|
Future updateSafeSearch(Server server, bool enable) async {
|
||||||
try {
|
final result = enable == true
|
||||||
final result = enable == true
|
? await apiRequest(
|
||||||
? await postRequest(urlPath: '/safesearch/enable', server: server)
|
urlPath: '/safesearch/enable',
|
||||||
: await postRequest(urlPath: '/safesearch/disable', server: server);
|
method: 'post',
|
||||||
|
server: server,
|
||||||
|
withAuth: true
|
||||||
|
)
|
||||||
|
: await apiRequest(
|
||||||
|
urlPath: '/safesearch/disable',
|
||||||
|
method: 'post',
|
||||||
|
server: server,
|
||||||
|
withAuth: true
|
||||||
|
);
|
||||||
|
|
||||||
if (result.statusCode == 200) {
|
if (result['hasResponse'] == true && result['hasResponse'] == true) {
|
||||||
|
if (result['statusCode'] == 200 && result['statusCode'] == 200) {
|
||||||
return {'result': 'success'};
|
return {'result': 'success'};
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return {'result': 'error'};
|
return {
|
||||||
|
'result': 'error',
|
||||||
|
'log': AppLog(
|
||||||
|
type: 'login',
|
||||||
|
dateTime: DateTime.now(),
|
||||||
|
message: 'error_code_not_expected',
|
||||||
|
statusCode: result['statusCode'],
|
||||||
|
resBody: result['body']
|
||||||
|
)
|
||||||
|
};
|
||||||
}
|
}
|
||||||
} on SocketException {
|
}
|
||||||
return {'result': 'no_connection'};
|
else {
|
||||||
} on TimeoutException {
|
return result;
|
||||||
return {'result': 'no_connection'};
|
|
||||||
} on HandshakeException {
|
|
||||||
return {'result': 'ssl_error'};
|
|
||||||
} catch (e) {
|
|
||||||
return {'result': 'error'};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future updateSafeBrowsing(Server server, bool enable) async {
|
Future updateSafeBrowsing(Server server, bool enable) async {
|
||||||
try {
|
final result = enable == true
|
||||||
final result = enable == true
|
? await apiRequest(
|
||||||
? await postRequest(urlPath: '/safebrowsing/enable', server: server)
|
urlPath: '/safebrowsing/enable',
|
||||||
: await postRequest(urlPath: '/safebrowsing/disable', server: server);
|
method: 'post',
|
||||||
|
server: server,
|
||||||
|
withAuth: true
|
||||||
|
)
|
||||||
|
: await apiRequest(
|
||||||
|
urlPath: '/safebrowsing/disable',
|
||||||
|
method: 'post',
|
||||||
|
server: server,
|
||||||
|
withAuth: true
|
||||||
|
);
|
||||||
|
|
||||||
if (result.statusCode == 200) {
|
if (result['hasResponse'] == true && result['hasResponse'] == true) {
|
||||||
|
if (result['statusCode'] == 200 && result['statusCode'] == 200) {
|
||||||
return {'result': 'success'};
|
return {'result': 'success'};
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return {'result': 'error'};
|
return {
|
||||||
|
'result': 'error',
|
||||||
|
'log': AppLog(
|
||||||
|
type: 'login',
|
||||||
|
dateTime: DateTime.now(),
|
||||||
|
message: 'error_code_not_expected',
|
||||||
|
statusCode: result['statusCode'],
|
||||||
|
resBody: result['body']
|
||||||
|
)
|
||||||
|
};
|
||||||
}
|
}
|
||||||
} on SocketException {
|
}
|
||||||
return {'result': 'no_connection'};
|
else {
|
||||||
} on TimeoutException {
|
return result;
|
||||||
return {'result': 'no_connection'};
|
|
||||||
} on HandshakeException {
|
|
||||||
return {'result': 'ssl_error'};
|
|
||||||
} catch (e) {
|
|
||||||
return {'result': 'error'};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future updateParentalControl(Server server, bool enable) async {
|
Future updateParentalControl(Server server, bool enable) async {
|
||||||
try {
|
final result = enable == true
|
||||||
final result = enable == true
|
? await apiRequest(
|
||||||
? await postRequest(urlPath: '/parental/enable', server: server)
|
urlPath: '/parental/enable',
|
||||||
: await postRequest(urlPath: '/parental/disable', server: server);
|
method: 'post',
|
||||||
|
server: server,
|
||||||
|
withAuth: true
|
||||||
|
)
|
||||||
|
: await apiRequest(
|
||||||
|
urlPath: '/parental/disable',
|
||||||
|
method: 'post',
|
||||||
|
server: server,
|
||||||
|
withAuth: true
|
||||||
|
);
|
||||||
|
|
||||||
if (result.statusCode == 200) {
|
if (result['hasResponse'] == true && result['hasResponse'] == true) {
|
||||||
|
if (result['statusCode'] == 200 && result['statusCode'] == 200) {
|
||||||
return {'result': 'success'};
|
return {'result': 'success'};
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return {'result': 'error'};
|
return {
|
||||||
|
'result': 'error',
|
||||||
|
'log': AppLog(
|
||||||
|
type: 'login',
|
||||||
|
dateTime: DateTime.now(),
|
||||||
|
message: 'error_code_not_expected',
|
||||||
|
statusCode: result['statusCode'],
|
||||||
|
resBody: result['body']
|
||||||
|
)
|
||||||
|
};
|
||||||
}
|
}
|
||||||
} on SocketException {
|
}
|
||||||
return {'result': 'no_connection'};
|
else {
|
||||||
} on TimeoutException {
|
return result;
|
||||||
return {'result': 'no_connection'};
|
|
||||||
} on HandshakeException {
|
|
||||||
return {'result': 'ssl_error'};
|
|
||||||
} catch (e) {
|
|
||||||
return {'result': 'error'};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue