1- // ignore_for_file: lines_longer_than_80_chars
1+ // ignore_for_file: lines_longer_than_80_chars, unnecessary_lambdas
22
33import 'package:contentstack/constant.dart' ;
44import 'package:contentstack/src/enums/include.dart' ;
@@ -8,6 +8,11 @@ import 'package:contentstack/src/enums/include_type.dart';
88class EntryQueryable {
99 Map <String , Object ?> parameter = < String , Object ? > {};
1010
11+ //sanitize
12+ String sanitizeInput (String input) {
13+ return input.replaceAll (RegExp (r'[^a-zA-Z0-9-_.]' ), '' );
14+ }
15+
1116 ///
1217 /// This method adds key and value to an Entry.
1318 /// [key] The key as string which needs to be added to an Entry
@@ -43,10 +48,7 @@ class EntryQueryable {
4348 ///
4449 void except (List <String > fieldUid) {
4550 if (fieldUid.isNotEmpty) {
46- final List referenceArray = [];
47- for (final item in fieldUid) {
48- referenceArray.add (item);
49- }
51+ final List <String > referenceArray = fieldUid.map ((item) => sanitizeInput (item)).toList ();
5052 parameter['except[BASE][]' ] = referenceArray.toString ();
5153 }
5254 }
@@ -171,15 +173,15 @@ class EntryQueryable {
171173 case IncludeType .None :
172174 if (referenceFieldUid.runtimeType == List ) {
173175 for (var uid in referenceFieldUid) {
174- referenceArray.add (uid);
176+ referenceArray.add (sanitizeInput ( uid) );
175177 }
176178 } else if (referenceFieldUid.runtimeType == String ) {
177- referenceArray.add (referenceFieldUid);
179+ referenceArray.add (sanitizeInput ( referenceFieldUid) );
178180 }
179181
180182 if (includeReferenceField.fieldUidList.isNotEmpty) {
181183 for (final item in includeReferenceField.fieldUidList) {
182- referenceArray.add (item);
184+ referenceArray.add (sanitizeInput ( item) );
183185 }
184186 }
185187 parameter['include[]' ] = referenceArray.toString ();
@@ -188,7 +190,7 @@ class EntryQueryable {
188190 final Map <String , dynamic > referenceOnlyParam = < String , dynamic > {};
189191 if (includeReferenceField.fieldUidList.isNotEmpty) {
190192 for (final item in includeReferenceField.fieldUidList) {
191- referenceArray.add (item);
193+ referenceArray.add (sanitizeInput ( item) );
192194 }
193195 }
194196 referenceOnlyParam[referenceFieldUid] = referenceArray;
@@ -199,7 +201,7 @@ class EntryQueryable {
199201 final Map <String , dynamic > referenceOnlyParam = < String , dynamic > {};
200202 if (includeReferenceField.fieldUidList.isNotEmpty) {
201203 for (final item in includeReferenceField.fieldUidList) {
202- referenceArray.add (item);
204+ referenceArray.add (sanitizeInput ( item) );
203205 }
204206 }
205207 referenceOnlyParam[referenceFieldUid] = referenceArray;
@@ -262,10 +264,7 @@ class EntryQueryable {
262264 ///
263265 void only (List <String > fieldUid) {
264266 if (fieldUid.isNotEmpty) {
265- final List referenceArray = [];
266- for (final item in fieldUid) {
267- referenceArray.add (item);
268- }
267+ final List <String > referenceArray = fieldUid.map ((item) => sanitizeInput (item)).toList ();
269268 parameter['only[BASE][]' ] = referenceArray.toString ();
270269 }
271270 }
0 commit comments