Added boolean parameters to uri validation

Summary: Booleans must also be validated. These are denoted by {!boolParam}, as in they have a '!' symbol in front.

Reviewed By: danielbuechele

Differential Revision: D16802996

fbshipit-source-id: c03b858f0872dea0610e1d28aa9b48936f1117a6
This commit is contained in:
Benjamin Elo
2019-08-14 05:24:39 -07:00
committed by Facebook Github Bot
parent c40a88b117
commit fc01f5536e
2 changed files with 17 additions and 1 deletions

View File

@@ -10,6 +10,7 @@ import {Button, FlexColumn, Input, Sheet, styled, Glyph, colors} from 'flipper';
import { import {
replaceRequiredParametersWithValues, replaceRequiredParametersWithValues,
parameterIsNumberType, parameterIsNumberType,
parameterIsBooleanType,
validateParameter, validateParameter,
liveEdit, liveEdit,
} from '../util/uri'; } from '../util/uri';
@@ -113,6 +114,13 @@ export default (props: Props) => {
!validateParameter(values[idx], paramater) ? ( !validateParameter(values[idx], paramater) ? (
<ErrorLabel>Parameter must be a number</ErrorLabel> <ErrorLabel>Parameter must be a number</ErrorLabel>
) : null} ) : null}
{values[idx] &&
parameterIsBooleanType(paramater) &&
!validateParameter(values[idx], paramater) ? (
<ErrorLabel>
Parameter must be either 'true' or 'false'
</ErrorLabel>
) : null}
</div> </div>
))} ))}
<URIContainer>{liveEdit(uri, values)}</URIContainer> <URIContainer>{liveEdit(uri, values)}</URIContainer>

View File

@@ -11,7 +11,10 @@ import querystring from 'querystring';
export const validateParameter = (value: string, parameter: string) => { export const validateParameter = (value: string, parameter: string) => {
return ( return (
value && value &&
(parameterIsNumberType(parameter) ? !isNaN(parseInt(value, 10)) : true) (parameterIsNumberType(parameter) ? !isNaN(parseInt(value, 10)) : true) &&
(parameterIsBooleanType(parameter)
? value === 'true' || value === 'false'
: true)
); );
}; };
@@ -40,6 +43,11 @@ export const parameterIsNumberType = (parameter: string) => {
return regExp.test(parameter); return regExp.test(parameter);
}; };
export const parameterIsBooleanType = (parameter: string) => {
const regExp = /^{(!|\?!)/g;
return regExp.test(parameter);
};
export const replaceRequiredParametersWithValues = ( export const replaceRequiredParametersWithValues = (
uri: string, uri: string,
values: Array<string>, values: Array<string>,