Add SupportedUriSchemes support

This commit is contained in:
Ashita Prasad
2024-12-15 07:37:18 +05:30
parent 676468dc7c
commit 2bb54ec4d6
7 changed files with 25 additions and 14 deletions

View File

@ -1,6 +1,7 @@
import 'package:apidash/consts.dart'; import 'package:apidash/consts.dart';
import 'package:apidash/models/models.dart'; import 'package:apidash/models/models.dart';
import 'package:apidash/utils/utils.dart' show getNewUuid; import 'package:apidash/utils/utils.dart' show getNewUuid;
import 'package:apidash_core/apidash_core.dart';
import 'c/curl.dart'; import 'c/curl.dart';
import 'csharp/http_client.dart'; import 'csharp/http_client.dart';
import 'csharp/rest_sharp.dart'; import 'csharp/rest_sharp.dart';
@ -35,7 +36,7 @@ class Codegen {
String? getCode( String? getCode(
CodegenLanguage codegenLanguage, CodegenLanguage codegenLanguage,
RequestModel requestModel, RequestModel requestModel,
String defaultUriScheme, { SupportedUriSchemes defaultUriScheme, {
String? boundary, String? boundary,
}) { }) {
var httpRequestModel = requestModel.httpRequestModel; var httpRequestModel = requestModel.httpRequestModel;
@ -48,7 +49,7 @@ class Codegen {
url = kDefaultUri; url = kDefaultUri;
} }
if (!url.contains("://") && url.isNotEmpty) { if (!url.contains("://") && url.isNotEmpty) {
url = "$defaultUriScheme://$url"; url = "${defaultUriScheme.name}://$url";
} }
var rM = httpRequestModel.copyWith(url: url); var rM = httpRequestModel.copyWith(url: url);
@ -56,7 +57,7 @@ class Codegen {
case CodegenLanguage.curl: case CodegenLanguage.curl:
return cURLCodeGen().getCode(rM); return cURLCodeGen().getCode(rM);
case CodegenLanguage.har: case CodegenLanguage.har:
return HARCodeGen().getCode(rM, defaultUriScheme, boundary: boundary); return HARCodeGen().getCode(rM, boundary: boundary);
case CodegenLanguage.dartHttp: case CodegenLanguage.dartHttp:
return DartHttpCodeGen().getCode(rM); return DartHttpCodeGen().getCode(rM);
case CodegenLanguage.dartDio: case CodegenLanguage.dartDio:

View File

@ -22,7 +22,7 @@ class SettingsModel {
final bool alwaysShowCollectionPaneScrollbar; final bool alwaysShowCollectionPaneScrollbar;
final Size? size; final Size? size;
final Offset? offset; final Offset? offset;
final String defaultUriScheme; final SupportedUriSchemes defaultUriScheme;
final CodegenLanguage defaultCodeGenLang; final CodegenLanguage defaultCodeGenLang;
final bool saveResponses; final bool saveResponses;
final bool promptBeforeClosing; final bool promptBeforeClosing;
@ -35,7 +35,7 @@ class SettingsModel {
bool? alwaysShowCollectionPaneScrollbar, bool? alwaysShowCollectionPaneScrollbar,
Size? size, Size? size,
Offset? offset, Offset? offset,
String? defaultUriScheme, SupportedUriSchemes? defaultUriScheme,
CodegenLanguage? defaultCodeGenLang, CodegenLanguage? defaultCodeGenLang,
bool? saveResponses, bool? saveResponses,
bool? promptBeforeClosing, bool? promptBeforeClosing,
@ -94,7 +94,16 @@ class SettingsModel {
if (dx != null && dy != null) { if (dx != null && dy != null) {
offset = Offset(dx, dy); 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?; final defaultCodeGenLangStr = data["defaultCodeGenLang"] as String?;
CodegenLanguage? defaultCodeGenLang; CodegenLanguage? defaultCodeGenLang;
if (defaultCodeGenLangStr != null) { if (defaultCodeGenLangStr != null) {
@ -146,7 +155,7 @@ class SettingsModel {
"height": size?.height, "height": size?.height,
"dx": offset?.dx, "dx": offset?.dx,
"dy": offset?.dy, "dy": offset?.dy,
"defaultUriScheme": defaultUriScheme, "defaultUriScheme": defaultUriScheme.name,
"defaultCodeGenLang": defaultCodeGenLang.name, "defaultCodeGenLang": defaultCodeGenLang.name,
"saveResponses": saveResponses, "saveResponses": saveResponses,
"promptBeforeClosing": promptBeforeClosing, "promptBeforeClosing": promptBeforeClosing,

View File

@ -1,3 +1,4 @@
import 'package:apidash_core/apidash_core.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../models/models.dart'; import '../models/models.dart';
@ -24,7 +25,7 @@ class ThemeStateNotifier extends StateNotifier<SettingsModel> {
bool? alwaysShowCollectionPaneScrollbar, bool? alwaysShowCollectionPaneScrollbar,
Size? size, Size? size,
Offset? offset, Offset? offset,
String? defaultUriScheme, SupportedUriSchemes? defaultUriScheme,
CodegenLanguage? defaultCodeGenLang, CodegenLanguage? defaultCodeGenLang,
bool? saveResponses, bool? saveResponses,
bool? promptBeforeClosing, bool? promptBeforeClosing,

View File

@ -78,7 +78,7 @@ Map<String, dynamic> entryToHAR(RequestModel requestModel) {
Map<String, dynamic> requestModelToHARJsonRequest( Map<String, dynamic> requestModelToHARJsonRequest(
HttpRequestModel? requestModel, { HttpRequestModel? requestModel, {
defaultUriScheme = kDefaultUriScheme, SupportedUriSchemes defaultUriScheme = kDefaultUriScheme,
bool exportMode = false, bool exportMode = false,
bool useEnabled = false, bool useEnabled = false,
String? boundary, String? boundary,

View File

@ -13,7 +13,7 @@ enum SupportedUriSchemes { https, http }
final kSupportedUriSchemes = final kSupportedUriSchemes =
SupportedUriSchemes.values.map((i) => i.name).toList(); SupportedUriSchemes.values.map((i) => i.name).toList();
const kDefaultUriScheme = "https"; const kDefaultUriScheme = SupportedUriSchemes.https;
final kLocalhostRegex = RegExp(r'^localhost(:\d+)?(/.*)?$'); final kLocalhostRegex = RegExp(r'^localhost(:\d+)?(/.*)?$');
const kMethodsWithBody = [ const kMethodsWithBody = [

View File

@ -11,7 +11,7 @@ typedef HttpResponse = http.Response;
Future<(HttpResponse?, Duration?, String?)> request( Future<(HttpResponse?, Duration?, String?)> request(
HttpRequestModel requestModel, { HttpRequestModel requestModel, {
String defaultUriScheme = kDefaultUriScheme, SupportedUriSchemes defaultUriScheme = kDefaultUriScheme,
}) async { }) async {
(Uri?, String?) uriRec = getValidRequestUri( (Uri?, String?) uriRec = getValidRequestUri(
requestModel.url, requestModel.url,

View File

@ -5,7 +5,7 @@ import 'http_request_utils.dart';
(String?, bool) getUriScheme(Uri uri) { (String?, bool) getUriScheme(Uri uri) {
if (uri.hasScheme) { if (uri.hasScheme) {
if (kSupportedUriSchemes.contains(uri.scheme)) { if (kSupportedUriSchemes.contains(uri.scheme.toLowerCase())) {
return (uri.scheme, true); return (uri.scheme, true);
} }
return (uri.scheme, false); return (uri.scheme, false);
@ -24,7 +24,7 @@ String stripUrlParams(String url) {
(Uri?, String?) getValidRequestUri( (Uri?, String?) getValidRequestUri(
String? url, List<NameValueModel>? requestParams, String? url, List<NameValueModel>? requestParams,
{String defaultUriScheme = kDefaultUriScheme}) { {SupportedUriSchemes defaultUriScheme = kDefaultUriScheme}) {
url = url?.trim(); url = url?.trim();
if (url == null || url == "") { if (url == null || url == "") {
return (null, "URL is missing!"); return (null, "URL is missing!");
@ -44,7 +44,7 @@ String stripUrlParams(String url) {
return (null, "Unsupported URL Scheme (${urlScheme.$1})"); return (null, "Unsupported URL Scheme (${urlScheme.$1})");
} }
} else { } else {
url = "$defaultUriScheme://$url"; url = "${defaultUriScheme.name}://$url";
} }
uri = Uri.parse(url); uri = Uri.parse(url);