Catch http error response

This commit is contained in:
kodjomoustapha
2023-10-25 19:02:57 +01:00
parent 6eac32b58c
commit c07bcd6032
16 changed files with 511 additions and 361 deletions

View File

@@ -3,33 +3,28 @@ import 'package:bridge_lib/bridge_lib.dart';
searchManga(MManga manga) async {
final headers = getHeader(manga.baseUrl);
String res = "".toString();
MHttpResponse response = MHttpResponse();
if (!useNewQueryEndpoint(manga.source)) {
final url = "${manga.apiUrl}/series/search";
final body = {"term": manga.query};
final data = {"url": url, "headers": headers, "body": body};
res = await MBridge.http('POST', json.encode(data));
if (res.isEmpty) {
return manga;
}
response = await MBridge.http('POST', json.encode(data));
} else {
final newEndpointUrl =
"${manga.apiUrl}/query/?page=${manga.page}&query_string=${manga.query}&series_status=All&order=desc&orderBy=total_views&perPage=12&tags_ids=[]&series_type=Comic";
final newEndpointData = {"url": newEndpointUrl, "headers": headers};
res = await MBridge.http('GET', json.encode(newEndpointData));
if (res.isEmpty) {
return manga;
}
response = await MBridge.http('GET', json.encode(newEndpointData));
}
return MMangaRes(res, manga);
if (response.hasError) {
return response;
}
return mMangaRes(response, manga);
}
getPopularManga(MManga manga) async {
final headers = getHeader(manga.baseUrl);
String res = "".toString();
MHttpResponse response = MHttpResponse();
if (!useNewQueryEndpoint(manga.source)) {
final url = "${manga.apiUrl}/series/querysearch";
print(url);
@@ -47,8 +42,7 @@ getPopularManga(MManga manga) async {
"sourceId": manga.sourceId,
"body": body
};
res = await MBridge.http('POST', json.encode(data));
response = await MBridge.http('POST', json.encode(data));
} else {
final newEndpointUrl =
"${manga.apiUrl}/query/?page=${manga.page}&query_string=&series_status=All&order=desc&orderBy=total_views&perPage=12&tags_ids=[]&series_type=Comic";
@@ -58,17 +52,14 @@ getPopularManga(MManga manga) async {
"headers": headers,
"sourceId": manga.sourceId
};
res = await MBridge.http('GET', json.encode(newEndpointData));
response = await MBridge.http('GET', json.encode(newEndpointData));
}
if (res.isEmpty) {
return manga;
}
return MMangaRes(res, manga);
return mMangaRes(response, manga);
}
getLatestUpdatesManga(MManga manga) async {
final headers = getHeader(manga.baseUrl);
String res = "".toString();
MHttpResponse response = MHttpResponse();
if (!useNewQueryEndpoint(manga.source)) {
final url = "${manga.apiUrl}/series/querysearch";
final body = {
@@ -84,20 +75,16 @@ getLatestUpdatesManga(MManga manga) async {
"sourceId": manga.sourceId,
"body": body
};
res = await MBridge.http('POST', json.encode(data));
response = await MBridge.http('POST', json.encode(data));
} else {
final newEndpointUrl =
"${manga.apiUrl}/query/?page=${manga.page}&query_string=&series_status=All&order=desc&orderBy=latest&perPage=12&tags_ids=[]&series_type=Comic";
final newEndpointData = {"url": newEndpointUrl, "headers": headers};
res = await MBridge.http('GET', json.encode(newEndpointData));
print(res);
response = await MBridge.http('GET', json.encode(newEndpointData));
}
if (res.isEmpty) {
return manga;
}
return MMangaRes(res, manga);
return mMangaRes(response, manga);
}
getMangaDetail(MManga manga) async {
@@ -105,11 +92,11 @@ getMangaDetail(MManga manga) async {
final headers = getHeader(manga.baseUrl);
final url = "${manga.apiUrl}/series/$currentSlug";
final data = {"url": url, "headers": headers};
final res = await MBridge.http('GET', json.encode(data));
if (res.isEmpty) {
return manga;
final response = await MBridge.http('GET', json.encode(data));
if (response.hasError) {
return response;
}
print("${manga.apiUrl}/series/$currentSlug");
String res = response.body;
manga.author = MBridge.getMapValue(res, "author");
manga.description = MBridge.getMapValue(res, "description");
@@ -159,18 +146,24 @@ getMangaDetail(MManga manga) async {
}
getChapterPages(MManga manga) async {
String res = "".toString();
MHttpResponse response = MHttpResponse();
final headers = getHeader(manga.baseUrl);
String res = "".toString();
if (!useslugStrategy(manga.source)) {
String chapterId = MBridge.substringAfter(manga.link, '#');
final url = "${manga.apiUrl}/series/chapter/$chapterId";
final data = {"url": url, "headers": headers};
res = await MBridge.http('GET', json.encode(data));
response = await MBridge.http('GET', json.encode(data));
res = response.body;
} else {
final url = "${manga.baseUrl}${manga.link}";
final data = {"url": url, "headers": headers};
res = await MBridge.http('GET', json.encode(data));
response = await MBridge.http('GET', json.encode(data));
if (response.hasError) {
return response;
}
res = response.body;
List<String> pageUrls = [];
var imagesRes = MBridge.querySelectorAll(res,
selector: "div.min-h-screen > div.container > p.items-center",
@@ -183,9 +176,8 @@ getChapterPages(MManga manga) async {
return pageUrls.where((e) => e.isNotEmpty).toList();
}
if (res.isEmpty) {
return [];
if (response.hasError) {
return response;
}
final pages = MBridge.jsonPathToList(res, r"$.content.images[*]", 0);
List<String> pageUrls = [];
@@ -220,11 +212,11 @@ bool useslugStrategy(String sourceName) {
return sources.contains(sourceName);
}
MManga MMangaRes(String res, MManga manga) {
MManga mMangaRes(MHttpResponse response, MManga manga) {
String res = response.body;
List<String> names = [];
List<String> urls = [];
List<String> images = [];
if (res.startsWith("{")) {
for (var a in json.decode(res)["data"]) {
String thumbnail = a["thumbnail"];