From a86175d2adca959b26bd4e716d8f5ebee34f67ef Mon Sep 17 00:00:00 2001 From: Ankit Mahato Date: Thu, 4 May 2023 12:25:41 +0530 Subject: [PATCH] Dynamic default uri scheme --- lib/codegen/dart/pkg_http.dart | 7 +++++-- lib/providers/collection_providers.dart | 6 ++++-- .../home_page/editor_pane/details_card/code_pane.dart | 4 +++- lib/services/http_service.dart | 8 ++++++-- lib/utils/http_utils.dart | 8 ++++++-- 5 files changed, 24 insertions(+), 9 deletions(-) diff --git a/lib/codegen/dart/pkg_http.dart b/lib/codegen/dart/pkg_http.dart index fd1b6345..0efee7bc 100644 --- a/lib/codegen/dart/pkg_http.dart +++ b/lib/codegen/dart/pkg_http.dart @@ -67,7 +67,10 @@ void main() async { } """; - String? getCode(RequestModel requestModel) { + String? getCode( + RequestModel requestModel, + String defaultUriScheme, + ) { try { String result = ""; bool hasHeaders = false; @@ -75,7 +78,7 @@ void main() async { String url = requestModel.url; if (!url.contains("://") && url.isNotEmpty) { - url = "$kDefaultUriScheme://$url"; + url = "$defaultUriScheme://$url"; } var templateUrl = jj.Template(kTemplateUrl); result += templateUrl.render({"url": url}); diff --git a/lib/providers/collection_providers.dart b/lib/providers/collection_providers.dart index 75d5c54e..ebb31940 100644 --- a/lib/providers/collection_providers.dart +++ b/lib/providers/collection_providers.dart @@ -1,10 +1,10 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:apidash/providers/providers.dart'; import 'package:apidash/models/models.dart'; import 'package:apidash/services/services.dart' show hiveHandler, HiveHandler, request; import 'package:apidash/utils/utils.dart' show uuid; import 'package:apidash/consts.dart'; -import 'ui_providers.dart'; final activeRequestModelProvider = StateProvider((ref) { final activeId = ref.watch(activeIdStateProvider); @@ -125,9 +125,11 @@ class CollectionStateNotifier extends StateNotifier?> { Future sendRequest(String id) async { ref.read(sentRequestIdStateProvider.notifier).update((state) => id); ref.read(codePaneVisibleStateProvider.notifier).update((state) => false); + final defaultUriScheme = + ref.read(settingsProvider.select((value) => value.defaultUriScheme)); final idx = idxOfId(id); RequestModel requestModel = getRequestModel(id); - var responseRec = await request(requestModel); + var responseRec = await request(requestModel, defaultUriScheme); late final RequestModel newRequestModel; if (responseRec.$0 == null) { newRequestModel = requestModel.copyWith( diff --git a/lib/screens/home_page/editor_pane/details_card/code_pane.dart b/lib/screens/home_page/editor_pane/details_card/code_pane.dart index bbd42a6e..4317e3b4 100644 --- a/lib/screens/home_page/editor_pane/details_card/code_pane.dart +++ b/lib/screens/home_page/editor_pane/details_card/code_pane.dart @@ -23,7 +23,9 @@ class _CodePaneState extends ConsumerState { @override Widget build(BuildContext context) { final activeRequestModel = ref.watch(activeRequestModelProvider); - final code = dartHttpCodeGen.getCode(activeRequestModel!); + final defaultUriScheme = + ref.watch(settingsProvider.select((value) => value.defaultUriScheme)); + final code = dartHttpCodeGen.getCode(activeRequestModel!, defaultUriScheme); if (code == null) { return const ErrorMessage( message: "An error was encountered while generating code. $kRaiseIssue", diff --git a/lib/services/http_service.dart b/lib/services/http_service.dart index b705ae03..030c76d3 100644 --- a/lib/services/http_service.dart +++ b/lib/services/http_service.dart @@ -6,9 +6,13 @@ import 'package:apidash/utils/utils.dart'; import 'package:apidash/models/models.dart'; import 'package:apidash/consts.dart'; -Future<(http.Response?, Duration?, String?)> request(RequestModel requestModel) async { +Future<(http.Response?, Duration?, String?)> request( + RequestModel requestModel, + String defaultUriScheme, +) async { (Uri?, String?) uriRec = getValidRequestUri(requestModel.url, - requestModel.requestParams); + requestModel.requestParams, + defaultUriScheme); if(uriRec.$0 != null){ Uri requestUrl = uriRec.$0!; Map headers = rowsToMap(requestModel.requestHeaders) ?? {}; diff --git a/lib/utils/http_utils.dart b/lib/utils/http_utils.dart index 6a6eac2d..b1d21665 100644 --- a/lib/utils/http_utils.dart +++ b/lib/utils/http_utils.dart @@ -53,7 +53,11 @@ MediaType? getMediaTypeFromHeaders(Map? headers) { return (null, false); } -(Uri?, String?) getValidRequestUri(String? url, List? requestParams) { +(Uri?, String?) getValidRequestUri( + String? url, + List? requestParams, + String defaultUriScheme +) { url = url?.trim(); if(url == null || url == ""){ return (null, "URL is missing!"); @@ -70,7 +74,7 @@ MediaType? getMediaTypeFromHeaders(Map? headers) { } } else { - url = "$kDefaultUriScheme://$url"; + url = "$defaultUriScheme://$url"; } uri = Uri.parse(url);