Skip to content

Commit

Permalink
display suggestions for placeholder segments (#2156)
Browse files Browse the repository at this point in the history
  • Loading branch information
thewahome authored Oct 6, 2022
1 parent eee431c commit e9c2e8c
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 4 deletions.
17 changes: 14 additions & 3 deletions src/app/utils/query-parameter-sanitization.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,19 +54,23 @@ function isKeyValuePair(str: string): boolean {
return KEY_VALUE_REGEX.test(str);
}

export function isPropertyName(str: string): boolean {
function isPropertyName(str: string): boolean {
return PROPERTY_NAME_REGEX.test(str);
}

export function isAllAlpha(str: string): boolean {
function isAllAlpha(str: string): boolean {
return ALL_ALPHA_REGEX.test(str);
}

function isPlaceHolderSegment(segment: string) {
return segment.startsWith('{') && segment.endsWith('}')
}

/**
* Redact variable segments of query parameters
* @param queryParameter e.g. $top=5, $search="pizza", $filter=startswith(displayName, 'J')
*/
export function sanitizeQueryParameter(queryParameter: string): string {
function sanitizeQueryParameter(queryParameter: string): string {
// return if not key-value pair
if (!queryParameter.includes('=')) {
return queryParameter;
Expand Down Expand Up @@ -482,3 +486,10 @@ function sanitizeFilterQueryOptionValue(queryParameterValue: string): string {
}
return sanitizedQueryString.trim();
}

export {
isPropertyName,
isAllAlpha,
isPlaceHolderSegment,
sanitizeQueryParameter
}
6 changes: 5 additions & 1 deletion src/app/utils/query-url-sanitization.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import { IQuery } from '../../types/query-runner';
import {
isAllAlpha,
isPlaceHolderSegment,
sanitizeQueryParameter
} from './query-parameter-sanitization';
import { parseSampleUrl } from './sample-url-generation';
Expand Down Expand Up @@ -79,7 +80,6 @@ function sanitizedQueryUrl(url: string): string {
return `${match.substring(0, match.indexOf(':'))}:<value>`;
}
);

// Split requestUrl into segments that can be sanitized individually
const urlSegments = resourceUrl.split('/');
urlSegments.forEach((segment, index) => {
Expand Down Expand Up @@ -134,6 +134,10 @@ function sanitizePathSegment(previousSegment: string, segment: string): string {
return `${segment.substring(0, openingBracketIndex)}(${sanitizedText})`;
}

if (isPlaceHolderSegment(segment)) {
return segment;
}

if (!isAllAlpha(previousSegment) && !isDeprecation(previousSegment)) {
previousSegment = 'unknown';
}
Expand Down

0 comments on commit e9c2e8c

Please sign in to comment.