import 'dart:convert'; import 'package:flutter/foundation.dart'; import 'package:isekai_wiki/global.dart'; import 'package:isekai_wiki/utils/api_utils.dart'; import 'package:http/http.dart' as http; class HttpResponseCodeError extends Error { int? statusCode; HttpResponseCodeError(this.statusCode); @override String toString() { return "Http error: $statusCode"; } } class BaseApi { static Future> _getHeaders() async { Map headers = {}; if (!kIsWeb) { headers["X-IsekaiWikiApp-Version"] = Global.packageInfo?.version ?? "unknow"; headers["User-Agent"] = await ApiUtils.getUserAgent(); } return headers; } static Future get(Uri uri, {Map? search}) async { var res = await http.get(uri, headers: await _getHeaders()); if (res.statusCode != 200) { throw HttpResponseCodeError(res.statusCode); } return res.body; } static Future getJson(Uri uri) async { var resText = await get(uri); var resData = jsonDecode(resText); if (resData is Map) { return resData; } else { return {}; } } }