Dynamic default uri scheme

This commit is contained in:
Ankit Mahato
2023-05-04 12:25:41 +05:30
parent be0ed29a6d
commit a86175d2ad
5 changed files with 24 additions and 9 deletions

View File

@ -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});

View File

@ -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<RequestModel?>((ref) {
final activeId = ref.watch(activeIdStateProvider);
@ -125,9 +125,11 @@ class CollectionStateNotifier extends StateNotifier<List<RequestModel>?> {
Future<void> 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(

View File

@ -23,7 +23,9 @@ class _CodePaneState extends ConsumerState<CodePane> {
@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",

View File

@ -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<String, String> headers = rowsToMap(requestModel.requestHeaders) ?? {};

View File

@ -53,7 +53,11 @@ MediaType? getMediaTypeFromHeaders(Map? headers) {
return (null, false);
}
(Uri?, String?) getValidRequestUri(String? url, List<KVRow>? requestParams) {
(Uri?, String?) getValidRequestUri(
String? url,
List<KVRow>? 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);