diff --git a/lib/codegen/codegen.dart b/lib/codegen/codegen.dart index e8e9432a..ae224eaa 100644 --- a/lib/codegen/codegen.dart +++ b/lib/codegen/codegen.dart @@ -1,6 +1,7 @@ import 'package:apidash/consts.dart'; import 'package:apidash/models/models.dart'; import 'package:apidash/utils/utils.dart' show getNewUuid; +import 'package:apidash_core/apidash_core.dart'; import 'c/curl.dart'; import 'csharp/http_client.dart'; import 'csharp/rest_sharp.dart'; @@ -35,7 +36,7 @@ class Codegen { String? getCode( CodegenLanguage codegenLanguage, RequestModel requestModel, - String defaultUriScheme, { + SupportedUriSchemes defaultUriScheme, { String? boundary, }) { var httpRequestModel = requestModel.httpRequestModel; @@ -48,7 +49,7 @@ class Codegen { url = kDefaultUri; } if (!url.contains("://") && url.isNotEmpty) { - url = "$defaultUriScheme://$url"; + url = "${defaultUriScheme.name}://$url"; } var rM = httpRequestModel.copyWith(url: url); @@ -56,7 +57,7 @@ class Codegen { case CodegenLanguage.curl: return cURLCodeGen().getCode(rM); case CodegenLanguage.har: - return HARCodeGen().getCode(rM, defaultUriScheme, boundary: boundary); + return HARCodeGen().getCode(rM, boundary: boundary); case CodegenLanguage.dartHttp: return DartHttpCodeGen().getCode(rM); case CodegenLanguage.dartDio: diff --git a/lib/models/settings_model.dart b/lib/models/settings_model.dart index c2237a07..b2f443ca 100644 --- a/lib/models/settings_model.dart +++ b/lib/models/settings_model.dart @@ -22,7 +22,7 @@ class SettingsModel { final bool alwaysShowCollectionPaneScrollbar; final Size? size; final Offset? offset; - final String defaultUriScheme; + final SupportedUriSchemes defaultUriScheme; final CodegenLanguage defaultCodeGenLang; final bool saveResponses; final bool promptBeforeClosing; @@ -35,7 +35,7 @@ class SettingsModel { bool? alwaysShowCollectionPaneScrollbar, Size? size, Offset? offset, - String? defaultUriScheme, + SupportedUriSchemes? defaultUriScheme, CodegenLanguage? defaultCodeGenLang, bool? saveResponses, bool? promptBeforeClosing, @@ -94,7 +94,16 @@ class SettingsModel { if (dx != null && dy != null) { offset = Offset(dx, dy); } - final defaultUriScheme = data["defaultUriScheme"] as String?; + final defaultUriSchemeStr = data["defaultUriScheme"] as String?; + SupportedUriSchemes? defaultUriScheme; + if (defaultUriSchemeStr != null) { + try { + defaultUriScheme = + SupportedUriSchemes.values.byName(defaultUriSchemeStr); + } catch (e) { + // pass + } + } final defaultCodeGenLangStr = data["defaultCodeGenLang"] as String?; CodegenLanguage? defaultCodeGenLang; if (defaultCodeGenLangStr != null) { @@ -146,7 +155,7 @@ class SettingsModel { "height": size?.height, "dx": offset?.dx, "dy": offset?.dy, - "defaultUriScheme": defaultUriScheme, + "defaultUriScheme": defaultUriScheme.name, "defaultCodeGenLang": defaultCodeGenLang.name, "saveResponses": saveResponses, "promptBeforeClosing": promptBeforeClosing, diff --git a/lib/providers/settings_providers.dart b/lib/providers/settings_providers.dart index 43256ab3..f6b4392f 100644 --- a/lib/providers/settings_providers.dart +++ b/lib/providers/settings_providers.dart @@ -1,3 +1,4 @@ +import 'package:apidash_core/apidash_core.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../models/models.dart'; @@ -24,7 +25,7 @@ class ThemeStateNotifier extends StateNotifier { bool? alwaysShowCollectionPaneScrollbar, Size? size, Offset? offset, - String? defaultUriScheme, + SupportedUriSchemes? defaultUriScheme, CodegenLanguage? defaultCodeGenLang, bool? saveResponses, bool? promptBeforeClosing, diff --git a/lib/utils/har_utils.dart b/lib/utils/har_utils.dart index 5f74f819..31c466ce 100644 --- a/lib/utils/har_utils.dart +++ b/lib/utils/har_utils.dart @@ -78,7 +78,7 @@ Map entryToHAR(RequestModel requestModel) { Map requestModelToHARJsonRequest( HttpRequestModel? requestModel, { - defaultUriScheme = kDefaultUriScheme, + SupportedUriSchemes defaultUriScheme = kDefaultUriScheme, bool exportMode = false, bool useEnabled = false, String? boundary, diff --git a/packages/apidash_core/lib/consts.dart b/packages/apidash_core/lib/consts.dart index 93a7acea..44253288 100644 --- a/packages/apidash_core/lib/consts.dart +++ b/packages/apidash_core/lib/consts.dart @@ -13,7 +13,7 @@ enum SupportedUriSchemes { https, http } final kSupportedUriSchemes = SupportedUriSchemes.values.map((i) => i.name).toList(); -const kDefaultUriScheme = "https"; +const kDefaultUriScheme = SupportedUriSchemes.https; final kLocalhostRegex = RegExp(r'^localhost(:\d+)?(/.*)?$'); const kMethodsWithBody = [ diff --git a/packages/apidash_core/lib/services/http_service.dart b/packages/apidash_core/lib/services/http_service.dart index e410628e..d36f2b8b 100644 --- a/packages/apidash_core/lib/services/http_service.dart +++ b/packages/apidash_core/lib/services/http_service.dart @@ -11,7 +11,7 @@ typedef HttpResponse = http.Response; Future<(HttpResponse?, Duration?, String?)> request( HttpRequestModel requestModel, { - String defaultUriScheme = kDefaultUriScheme, + SupportedUriSchemes defaultUriScheme = kDefaultUriScheme, }) async { (Uri?, String?) uriRec = getValidRequestUri( requestModel.url, diff --git a/packages/apidash_core/lib/utils/uri_utils.dart b/packages/apidash_core/lib/utils/uri_utils.dart index 8776926d..b111a2e0 100644 --- a/packages/apidash_core/lib/utils/uri_utils.dart +++ b/packages/apidash_core/lib/utils/uri_utils.dart @@ -5,7 +5,7 @@ import 'http_request_utils.dart'; (String?, bool) getUriScheme(Uri uri) { if (uri.hasScheme) { - if (kSupportedUriSchemes.contains(uri.scheme)) { + if (kSupportedUriSchemes.contains(uri.scheme.toLowerCase())) { return (uri.scheme, true); } return (uri.scheme, false); @@ -24,7 +24,7 @@ String stripUrlParams(String url) { (Uri?, String?) getValidRequestUri( String? url, List? requestParams, - {String defaultUriScheme = kDefaultUriScheme}) { + {SupportedUriSchemes defaultUriScheme = kDefaultUriScheme}) { url = url?.trim(); if (url == null || url == "") { return (null, "URL is missing!"); @@ -44,7 +44,7 @@ String stripUrlParams(String url) { return (null, "Unsupported URL Scheme (${urlScheme.$1})"); } } else { - url = "$defaultUriScheme://$url"; + url = "${defaultUriScheme.name}://$url"; } uri = Uri.parse(url);