CheckBox and Filtering

This commit is contained in:
DenserMeerkat
2023-12-15 04:08:12 +05:30
parent 5d5d7928db
commit ce8a7dc944
15 changed files with 201 additions and 45 deletions

View File

@ -77,7 +77,11 @@ import okhttp3.MediaType.Companion.toMediaType""";
url = "$defaultUriScheme://$url"; url = "$defaultUriScheme://$url";
} }
var rec = getValidRequestUri(url, requestModel.requestParams); var rec = getValidRequestUri(
url,
requestModel.requestParams,
requestModel.enabledParams,
);
Uri? uri = rec.$1; Uri? uri = rec.$1;
if (uri != null) { if (uri != null) {

View File

@ -71,7 +71,11 @@ print(data.decode("utf-8"))
} }
result += kTemplateStart; result += kTemplateStart;
var rec = getValidRequestUri(url, requestModel.requestParams); var rec = getValidRequestUri(
url,
requestModel.requestParams,
requestModel.enabledParams,
);
Uri? uri = rec.$1; Uri? uri = rec.$1;
if (uri != null) { if (uri != null) {

View File

@ -75,7 +75,11 @@ print('Response Body:', response.text)
url = "$defaultUriScheme://$url"; url = "$defaultUriScheme://$url";
} }
var rec = getValidRequestUri(url, requestModel.requestParams); var rec = getValidRequestUri(
url,
requestModel.requestParams,
requestModel.enabledParams,
);
Uri? uri = rec.$1; Uri? uri = rec.$1;
if (uri != null) { if (uri != null) {
var templateStartUrl = jj.Template(kTemplateStart); var templateStartUrl = jj.Template(kTemplateStart);

View File

@ -1,3 +1,4 @@
import 'package:apidash/utils/convert_utils.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:apidash/consts.dart'; import 'package:apidash/consts.dart';
import 'package:apidash/utils/utils.dart' show mapToRows, rowsToMap; import 'package:apidash/utils/utils.dart' show mapToRows, rowsToMap;
@ -15,6 +16,8 @@ class RequestModel {
this.requestTabIndex = 0, this.requestTabIndex = 0,
this.requestHeaders, this.requestHeaders,
this.requestParams, this.requestParams,
this.enabledHeaders,
this.enabledParams,
this.requestBodyContentType = ContentType.json, this.requestBodyContentType = ContentType.json,
this.requestBody, this.requestBody,
this.responseStatus, this.responseStatus,
@ -30,14 +33,18 @@ class RequestModel {
final int requestTabIndex; final int requestTabIndex;
final List<NameValueModel>? requestHeaders; final List<NameValueModel>? requestHeaders;
final List<NameValueModel>? requestParams; final List<NameValueModel>? requestParams;
final List<bool>? enabledHeaders;
final List<bool>? enabledParams;
final ContentType requestBodyContentType; final ContentType requestBodyContentType;
final String? requestBody; final String? requestBody;
final int? responseStatus; final int? responseStatus;
final String? message; final String? message;
final ResponseModel? responseModel; final ResponseModel? responseModel;
Map<String, String> get headersMap => rowsToMap(requestHeaders) ?? {}; Map<String, String> get headersMap =>
Map<String, String> get paramsMap => rowsToMap(requestParams) ?? {}; rowsToMap(getEnabledRows(requestHeaders, enabledHeaders)) ?? {};
Map<String, String> get paramsMap =>
rowsToMap(getEnabledRows(requestParams, enabledParams)) ?? {};
RequestModel duplicate({ RequestModel duplicate({
required String id, required String id,
@ -50,6 +57,8 @@ class RequestModel {
description: description, description: description,
requestHeaders: requestHeaders != null ? [...requestHeaders!] : null, requestHeaders: requestHeaders != null ? [...requestHeaders!] : null,
requestParams: requestParams != null ? [...requestParams!] : null, requestParams: requestParams != null ? [...requestParams!] : null,
enabledHeaders: enabledHeaders != null ? [...enabledHeaders!] : null,
enabledParams: enabledParams != null ? [...enabledParams!] : null,
requestBodyContentType: requestBodyContentType, requestBodyContentType: requestBodyContentType,
requestBody: requestBody, requestBody: requestBody,
); );
@ -64,6 +73,8 @@ class RequestModel {
int? requestTabIndex, int? requestTabIndex,
List<NameValueModel>? requestHeaders, List<NameValueModel>? requestHeaders,
List<NameValueModel>? requestParams, List<NameValueModel>? requestParams,
List<bool>? enabledHeaders,
List<bool>? enabledParams,
ContentType? requestBodyContentType, ContentType? requestBodyContentType,
String? requestBody, String? requestBody,
int? responseStatus, int? responseStatus,
@ -72,6 +83,8 @@ class RequestModel {
}) { }) {
var headers = requestHeaders ?? this.requestHeaders; var headers = requestHeaders ?? this.requestHeaders;
var params = requestParams ?? this.requestParams; var params = requestParams ?? this.requestParams;
var eHeaders = enabledHeaders ?? this.enabledHeaders;
var eParams = enabledParams ?? this.enabledParams;
return RequestModel( return RequestModel(
id: id ?? this.id, id: id ?? this.id,
method: method ?? this.method, method: method ?? this.method,
@ -81,6 +94,8 @@ class RequestModel {
requestTabIndex: requestTabIndex ?? this.requestTabIndex, requestTabIndex: requestTabIndex ?? this.requestTabIndex,
requestHeaders: headers != null ? [...headers] : null, requestHeaders: headers != null ? [...headers] : null,
requestParams: params != null ? [...params] : null, requestParams: params != null ? [...params] : null,
enabledHeaders: eHeaders != null ? [...eHeaders] : null,
enabledParams: eParams != null ? [...eParams] : null,
requestBodyContentType: requestBodyContentType:
requestBodyContentType ?? this.requestBodyContentType, requestBodyContentType ?? this.requestBodyContentType,
requestBody: requestBody ?? this.requestBody, requestBody: requestBody ?? this.requestBody,
@ -106,6 +121,8 @@ class RequestModel {
final description = data["description"] as String?; final description = data["description"] as String?;
final requestHeaders = data["requestHeaders"]; final requestHeaders = data["requestHeaders"];
final requestParams = data["requestParams"]; final requestParams = data["requestParams"];
final enabledHeaders = data["enabledHeaders"] as List<bool>?;
final enabledParams = data["enabledParams"] as List<bool>?;
try { try {
requestBodyContentType = requestBodyContentType =
ContentType.values.byName(data["requestBodyContentType"] as String); ContentType.values.byName(data["requestBodyContentType"] as String);
@ -136,6 +153,8 @@ class RequestModel {
requestParams: requestParams != null requestParams: requestParams != null
? mapToRows(Map<String, String>.from(requestParams)) ? mapToRows(Map<String, String>.from(requestParams))
: null, : null,
enabledHeaders: enabledHeaders,
enabledParams: enabledParams,
requestBodyContentType: requestBodyContentType, requestBodyContentType: requestBodyContentType,
requestBody: requestBody, requestBody: requestBody,
responseStatus: responseStatus, responseStatus: responseStatus,
@ -153,6 +172,8 @@ class RequestModel {
"description": description, "description": description,
"requestHeaders": rowsToMap(requestHeaders), "requestHeaders": rowsToMap(requestHeaders),
"requestParams": rowsToMap(requestParams), "requestParams": rowsToMap(requestParams),
"enabledHeaders": enabledHeaders,
"enabledParams": enabledParams,
"requestBodyContentType": requestBodyContentType.name, "requestBodyContentType": requestBodyContentType.name,
"requestBody": requestBody, "requestBody": requestBody,
"responseStatus": includeResponse ? responseStatus : null, "responseStatus": includeResponse ? responseStatus : null,
@ -171,7 +192,9 @@ class RequestModel {
"Request Description: $description", "Request Description: $description",
"Request Tab Index: ${requestTabIndex.toString()}", "Request Tab Index: ${requestTabIndex.toString()}",
"Request Headers: ${requestHeaders.toString()}", "Request Headers: ${requestHeaders.toString()}",
"Enabled Headers: ${enabledHeaders.toString()}",
"Request Params: ${requestParams.toString()}", "Request Params: ${requestParams.toString()}",
"Enabled Params: ${enabledParams.toString()}",
"Request Body Content Type: ${requestBodyContentType.toString()}", "Request Body Content Type: ${requestBodyContentType.toString()}",
"Request Body: ${requestBody.toString()}", "Request Body: ${requestBody.toString()}",
"Response Status: $responseStatus", "Response Status: $responseStatus",
@ -192,6 +215,8 @@ class RequestModel {
other.requestTabIndex == requestTabIndex && other.requestTabIndex == requestTabIndex &&
listEquals(other.requestHeaders, requestHeaders) && listEquals(other.requestHeaders, requestHeaders) &&
listEquals(other.requestParams, requestParams) && listEquals(other.requestParams, requestParams) &&
listEquals(other.enabledHeaders, enabledHeaders) &&
listEquals(other.enabledParams, enabledParams) &&
other.requestBodyContentType == requestBodyContentType && other.requestBodyContentType == requestBodyContentType &&
other.requestBody == requestBody && other.requestBody == requestBody &&
other.responseStatus == responseStatus && other.responseStatus == responseStatus &&
@ -211,6 +236,8 @@ class RequestModel {
requestTabIndex, requestTabIndex,
requestHeaders, requestHeaders,
requestParams, requestParams,
enabledHeaders,
enabledParams,
requestBodyContentType, requestBodyContentType,
requestBody, requestBody,
responseStatus, responseStatus,

View File

@ -123,6 +123,8 @@ class CollectionStateNotifier
int? requestTabIndex, int? requestTabIndex,
List<NameValueModel>? requestHeaders, List<NameValueModel>? requestHeaders,
List<NameValueModel>? requestParams, List<NameValueModel>? requestParams,
List<bool>? enabledHeaders,
List<bool>? enabledParams,
ContentType? requestBodyContentType, ContentType? requestBodyContentType,
String? requestBody, String? requestBody,
int? responseStatus, int? responseStatus,
@ -137,12 +139,13 @@ class CollectionStateNotifier
requestTabIndex: requestTabIndex, requestTabIndex: requestTabIndex,
requestHeaders: requestHeaders, requestHeaders: requestHeaders,
requestParams: requestParams, requestParams: requestParams,
enabledHeaders: enabledHeaders,
enabledParams: enabledParams,
requestBodyContentType: requestBodyContentType, requestBodyContentType: requestBodyContentType,
requestBody: requestBody, requestBody: requestBody,
responseStatus: responseStatus, responseStatus: responseStatus,
message: message, message: message,
responseModel: responseModel); responseModel: responseModel);
//print(newModel);
var map = {...state!}; var map = {...state!};
map[id] = newModel; map[id] = newModel;
state = map; state = map;
@ -175,7 +178,6 @@ class CollectionStateNotifier
responseModel: responseModel, responseModel: responseModel,
); );
} }
//print(newRequestModel);
ref.read(sentRequestIdStateProvider.notifier).state = null; ref.read(sentRequestIdStateProvider.notifier).state = null;
var map = {...state!}; var map = {...state!};
map[id] = newRequestModel; map[id] = newRequestModel;

View File

@ -16,6 +16,7 @@ class EditRequestHeaders extends ConsumerStatefulWidget {
class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> { class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
late List<NameValueModel> rows; late List<NameValueModel> rows;
late List<bool> enabledRows;
final random = Random.secure(); final random = Random.secure();
late int seed; late int seed;
@ -26,9 +27,11 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
} }
void _onFieldChange(String activeId) { void _onFieldChange(String activeId) {
ref ref.read(collectionStateNotifierProvider.notifier).update(
.read(collectionStateNotifierProvider.notifier) activeId,
.update(activeId, requestHeaders: rows); requestHeaders: rows,
enabledHeaders: enabledRows,
);
} }
@override @override
@ -42,10 +45,30 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
kNameValueEmptyModel, kNameValueEmptyModel,
] ]
: rH; : rH;
enabledRows = ref.read(activeRequestModelProvider)?.enabledHeaders ??
List.filled(rows.length, true, growable: true);
DaviModel<NameValueModel> model = DaviModel<NameValueModel>( DaviModel<NameValueModel> model = DaviModel<NameValueModel>(
rows: rows, rows: rows,
columns: [ columns: [
DaviColumn(
name: 'Checkbox',
width: 36,
cellBuilder: (_, row) {
int idx = row.index;
return CheckBox(
keyId: "$activeId-$idx-headers-c-$seed",
value: enabledRows[idx],
onChanged: (value) {
setState(() {
enabledRows[idx] = value!;
});
_onFieldChange(activeId!);
},
colorScheme: Theme.of(context).colorScheme,
);
},
),
DaviColumn( DaviColumn(
name: 'Header Name', name: 'Header Name',
grow: 1, grow: 1,
@ -106,9 +129,13 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
rows = [ rows = [
kNameValueEmptyModel, kNameValueEmptyModel,
]; ];
enabledRows = [true];
}); });
} else { } else {
setState(() {
enabledRows.removeAt(row.index);
rows.removeAt(row.index); rows.removeAt(row.index);
});
} }
_onFieldChange(activeId!); _onFieldChange(activeId!);
}, },
@ -142,7 +169,10 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
padding: const EdgeInsets.only(bottom: 30), padding: const EdgeInsets.only(bottom: 30),
child: ElevatedButton.icon( child: ElevatedButton.icon(
onPressed: () { onPressed: () {
setState(() {
rows.add(kNameValueEmptyModel); rows.add(kNameValueEmptyModel);
enabledRows.add(true);
});
_onFieldChange(activeId!); _onFieldChange(activeId!);
}, },
icon: const Icon(Icons.add), icon: const Icon(Icons.add),

View File

@ -17,6 +17,7 @@ class EditRequestURLParams extends ConsumerStatefulWidget {
class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> { class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
late List<NameValueModel> rows; late List<NameValueModel> rows;
late List<bool> enabledRows;
final random = Random.secure(); final random = Random.secure();
late int seed; late int seed;
@ -27,9 +28,11 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
} }
void _onFieldChange(String activeId) { void _onFieldChange(String activeId) {
ref ref.read(collectionStateNotifierProvider.notifier).update(
.read(collectionStateNotifierProvider.notifier) activeId,
.update(activeId, requestParams: rows); requestParams: rows,
enabledParams: enabledRows,
);
} }
@override @override
@ -43,10 +46,31 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
kNameValueEmptyModel, kNameValueEmptyModel,
] ]
: rP; : rP;
enabledRows = ref.read(activeRequestModelProvider)?.enabledParams ??
List.filled(rows.length, true, growable: true);
DaviModel<NameValueModel> model = DaviModel<NameValueModel>( DaviModel<NameValueModel> model = DaviModel<NameValueModel>(
rows: rows, rows: rows,
columns: [ columns: [
DaviColumn(
name: 'Checkbox',
width: 36,
cellBuilder: (_, row) {
int idx = row.index;
return CheckBox(
keyId: "$activeId-$idx-params-c-$seed",
value: enabledRows[idx],
onChanged: (value) {
setState(() {
enabledRows[idx] = value!;
});
_onFieldChange(activeId!);
},
colorScheme: Theme.of(context).colorScheme,
);
},
),
DaviColumn( DaviColumn(
name: 'URL Parameter', name: 'URL Parameter',
grow: 1, grow: 1,
@ -107,9 +131,13 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
rows = [ rows = [
kNameValueEmptyModel, kNameValueEmptyModel,
]; ];
enabledRows = [true];
}); });
} else { } else {
setState(() {
enabledRows.removeAt(row.index);
rows.removeAt(row.index); rows.removeAt(row.index);
});
} }
_onFieldChange(activeId!); _onFieldChange(activeId!);
}, },
@ -143,7 +171,10 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
padding: const EdgeInsets.only(bottom: 30), padding: const EdgeInsets.only(bottom: 30),
child: ElevatedButton.icon( child: ElevatedButton.icon(
onPressed: () { onPressed: () {
setState(() {
rows.add(kNameValueEmptyModel); rows.add(kNameValueEmptyModel);
enabledRows.add(true);
});
_onFieldChange(activeId!); _onFieldChange(activeId!);
}, },
icon: const Icon(Icons.add), icon: const Icon(Icons.add),

View File

@ -13,6 +13,7 @@ Future<(http.Response?, Duration?, String?)> request(
(Uri?, String?) uriRec = getValidRequestUri( (Uri?, String?) uriRec = getValidRequestUri(
requestModel.url, requestModel.url,
requestModel.requestParams, requestModel.requestParams,
requestModel.enabledParams,
defaultUriScheme: defaultUriScheme, defaultUriScheme: defaultUriScheme,
); );
if (uriRec.$1 != null) { if (uriRec.$1 != null) {

View File

@ -109,3 +109,11 @@ Uint8List jsonMapToBytes(Map<String, dynamic>? map) {
return bytes; return bytes;
} }
} }
List<NameValueModel> getEnabledRows(
List<NameValueModel>? rows, List<bool>? enabledList) {
if (rows == null || enabledList == null) {
return rows ?? [];
}
return rows.where((element) => enabledList[rows.indexOf(element)]).toList();
}

View File

@ -81,6 +81,7 @@ Map<String, dynamic> requestModelToHARJsonRequest(
var rec = getValidRequestUri( var rec = getValidRequestUri(
requestModel.url, requestModel.url,
requestModel.requestParams, requestModel.requestParams,
requestModel.enabledParams,
defaultUriScheme: defaultUriScheme, defaultUriScheme: defaultUriScheme,
); );

View File

@ -4,7 +4,7 @@ import 'package:collection/collection.dart' show mergeMaps;
import 'package:http_parser/http_parser.dart'; import 'package:http_parser/http_parser.dart';
import 'package:xml/xml.dart'; import 'package:xml/xml.dart';
import '../models/models.dart'; import '../models/models.dart';
import 'convert_utils.dart' show rowsToMap; import 'convert_utils.dart' show getEnabledRows, rowsToMap;
import '../consts.dart'; import '../consts.dart';
String getRequestTitleFromUrl(String? url) { String getRequestTitleFromUrl(String? url) {
@ -63,7 +63,7 @@ String stripUrlParams(String url) {
} }
(Uri?, String?) getValidRequestUri( (Uri?, String?) getValidRequestUri(
String? url, List<NameValueModel>? requestParams, String? url, List<NameValueModel>? requestParams, List<bool>? enabledParams,
{String defaultUriScheme = kDefaultUriScheme}) { {String defaultUriScheme = kDefaultUriScheme}) {
url = url?.trim(); url = url?.trim();
if (url == null || url == "") { if (url == null || url == "") {
@ -88,7 +88,8 @@ String stripUrlParams(String url) {
uri = uri.removeFragment(); uri = uri.removeFragment();
} }
Map<String, String>? queryParams = rowsToMap(requestParams); Map<String, String>? queryParams =
rowsToMap(getEnabledRows(requestParams, enabledParams));
if (queryParams != null) { if (queryParams != null) {
if (uri.hasQuery) { if (uri.hasQuery) {
Map<String, String> urlQueryParams = uri.queryParameters; Map<String, String> urlQueryParams = uri.queryParameters;

41
lib/widgets/checkbox.dart Normal file
View File

@ -0,0 +1,41 @@
import 'package:flutter/material.dart';
class CheckBox extends StatelessWidget {
final String keyId;
final bool value;
final ValueChanged<bool?> onChanged;
final ColorScheme? colorScheme;
const CheckBox({
super.key,
required this.keyId,
required this.value,
required this.onChanged,
this.colorScheme,
});
@override
Widget build(BuildContext context) {
var colorScheme = this.colorScheme ?? Theme.of(context).colorScheme;
return Checkbox(
key: Key(keyId),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(3),
),
side: BorderSide(
color: colorScheme.surfaceVariant,
width: 1.5,
),
splashRadius: 0,
value: value,
onChanged: onChanged,
checkColor: colorScheme.onPrimary,
fillColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.selected)) {
return colorScheme.primary;
}
return null;
},
));
}
}

View File

@ -8,6 +8,7 @@ export 'error_message.dart';
export 'dropdowns.dart'; export 'dropdowns.dart';
export 'splitviews.dart'; export 'splitviews.dart';
export 'texts.dart'; export 'texts.dart';
export 'checkbox.dart';
export 'textfields.dart'; export 'textfields.dart';
export 'headerfield.dart'; export 'headerfield.dart';
export 'menus.dart'; export 'menus.dart';

View File

@ -189,10 +189,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: collection name: collection
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.18.0" version: "1.17.2"
convert: convert:
dependency: transitive dependency: transitive
description: description:
@ -629,10 +629,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.10.0" version: "1.9.1"
mime: mime:
dependency: transitive dependency: transitive
description: description:
@ -986,10 +986,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: stack_trace name: stack_trace
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.11.1" version: "1.11.0"
state_notifier: state_notifier:
dependency: transitive dependency: transitive
description: description:
@ -1002,10 +1002,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: stream_channel name: stream_channel
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.2" version: "2.1.1"
stream_transform: stream_transform:
dependency: transitive dependency: transitive
description: description:
@ -1034,26 +1034,26 @@ packages:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: test name: test
sha256: a1f7595805820fcc05e5c52e3a231aedd0b72972cb333e8c738a8b1239448b6f sha256: "13b41f318e2a5751c3169137103b60c584297353d4b1761b66029bae6411fe46"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.24.9" version: "1.24.3"
test_api: test_api:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.6.1" version: "0.6.0"
test_core: test_core:
dependency: transitive dependency: transitive
description: description:
name: test_core name: test_core
sha256: a757b14fc47507060a162cc2530d9a4a2f92f5100a952c7443b5cad5ef5b106a sha256: "99806e9e6d95c7b059b7a0fc08f07fc53fabe54a829497f0d9676299f1e8637e"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.5.9" version: "0.5.3"
textwrap: textwrap:
dependency: transitive dependency: transitive
description: description:
@ -1178,10 +1178,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: web name: web
sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.3.0" version: "0.1.4-beta"
web_socket_channel: web_socket_channel:
dependency: transitive dependency: transitive
description: description:
@ -1248,5 +1248,5 @@ packages:
source: hosted source: hosted
version: "3.1.2" version: "3.1.2"
sdks: sdks:
dart: ">=3.2.0-194.0.dev <4.0.0" dart: ">=3.1.0 <4.0.0"
flutter: ">=3.13.0" flutter: ">=3.13.0"

View File

@ -182,15 +182,16 @@ void main() {
host: 'api.foss42.com', host: 'api.foss42.com',
path: 'country/data', path: 'country/data',
queryParameters: {'code': 'US'}); queryParameters: {'code': 'US'});
expect(getValidRequestUri(url1, [kvRow1]), (uri1Expected, null)); expect(getValidRequestUri(url1, [kvRow1], null), (uri1Expected, null));
}); });
test('Testing getValidRequestUri for null url value', () { test('Testing getValidRequestUri for null url value', () {
const kvRow2 = NameValueModel(name: "code", value: "US"); const kvRow2 = NameValueModel(name: "code", value: "US");
expect(getValidRequestUri(null, [kvRow2]), (null, "URL is missing!")); expect(
getValidRequestUri(null, [kvRow2], null), (null, "URL is missing!"));
}); });
test('Testing getValidRequestUri for empty url value', () { test('Testing getValidRequestUri for empty url value', () {
const kvRow3 = NameValueModel(name: "", value: ""); const kvRow3 = NameValueModel(name: "", value: "");
expect(getValidRequestUri("", [kvRow3]), (null, "URL is missing!")); expect(getValidRequestUri("", [kvRow3], null), (null, "URL is missing!"));
}); });
test('Testing getValidRequestUri when https is not provided in url', () { test('Testing getValidRequestUri when https is not provided in url', () {
String url4 = "api.foss42.com/country/data"; String url4 = "api.foss42.com/country/data";
@ -200,7 +201,7 @@ void main() {
host: 'api.foss42.com', host: 'api.foss42.com',
path: 'country/data', path: 'country/data',
queryParameters: {'code': 'US'}); queryParameters: {'code': 'US'});
expect(getValidRequestUri(url4, [kvRow4]), (uri4Expected, null)); expect(getValidRequestUri(url4, [kvRow4], null), (uri4Expected, null));
}); });
test('Testing getValidRequestUri when url has fragment', () { test('Testing getValidRequestUri when url has fragment', () {
String url5 = "https://dart.dev/guides/libraries/library-tour#numbers"; String url5 = "https://dart.dev/guides/libraries/library-tour#numbers";
@ -208,11 +209,11 @@ void main() {
scheme: 'https', scheme: 'https',
host: 'dart.dev', host: 'dart.dev',
path: '/guides/libraries/library-tour'); path: '/guides/libraries/library-tour');
expect(getValidRequestUri(url5, null), (uri5Expected, null)); expect(getValidRequestUri(url5, null, null), (uri5Expected, null));
}); });
test('Testing getValidRequestUri when uri scheme is not supported', () { test('Testing getValidRequestUri when uri scheme is not supported', () {
String url5 = "mailto:someone@example.com"; String url5 = "mailto:someone@example.com";
expect(getValidRequestUri(url5, null), expect(getValidRequestUri(url5, null, null),
(null, "Unsupported URL Scheme (mailto)")); (null, "Unsupported URL Scheme (mailto)"));
}); });
test('Testing getValidRequestUri when query params in both url and kvrow', test('Testing getValidRequestUri when query params in both url and kvrow',
@ -224,7 +225,7 @@ void main() {
host: 'api.foss42.com', host: 'api.foss42.com',
path: 'country/data', path: 'country/data',
queryParameters: {'code': 'US'}); queryParameters: {'code': 'US'});
expect(getValidRequestUri(url6, [kvRow6]), (uri6Expected, null)); expect(getValidRequestUri(url6, [kvRow6], null), (uri6Expected, null));
}); });
test('Testing getValidRequestUri when kvrow is null', () { test('Testing getValidRequestUri when kvrow is null', () {
String url7 = "api.foss42.com/country/data?code=US"; String url7 = "api.foss42.com/country/data?code=US";
@ -233,7 +234,7 @@ void main() {
host: 'api.foss42.com', host: 'api.foss42.com',
path: 'country/data', path: 'country/data',
queryParameters: {'code': 'US'}); queryParameters: {'code': 'US'});
expect(getValidRequestUri(url7, null), (uri7Expected, null)); expect(getValidRequestUri(url7, null, null), (uri7Expected, null));
}); });
}); });