Skip to content

Commit aba4479

Browse files
authored
Merge pull request #61 from purecloudlabs/python-fix-regex-pattern
Python SDK: Fix Regex patterns
2 parents cde453e + af73f81 commit aba4479

1 file changed

Lines changed: 41 additions & 0 deletions

File tree

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PureCloudPythonClientCodegen.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,47 @@ public void postProcessParameter(CodegenParameter parameter) {
157157
parameter.dataType = "Empty";
158158
}
159159
}
160+
// DEVTOOLING-1755: Fix Regex Patterns
161+
// Python now requires double backslash in regex patterns.
162+
// Although openapi-generator preserves double backslash when processing the Platform API Swagger specification,
163+
// the double backslash is transformed into a single backslash when the pattern property value is inserted via the mustache template.
164+
// Modify openapi-generator to change double backslash to quadruple backslash so that proper value is used in Python SDK source code.
165+
fixPatternParameter(parameter);
166+
}
167+
168+
// DEVTOOLING-1755: Fix Regex Patterns
169+
public void fixPatternParameter(CodegenParameter parameter){
170+
if(parameter.pattern != null) {
171+
parameter.pattern = parameter.pattern.replace("\\", "\\\\");
172+
if(parameter.vendorExtensions != null && parameter.vendorExtensions.get("x-regex") != null) {
173+
String veRegex = String.valueOf(parameter.vendorExtensions.get("x-regex"));
174+
if(veRegex != null) {
175+
veRegex = veRegex.replace("\\", "\\\\");
176+
parameter.vendorExtensions.put("x-regex", veRegex);
177+
}
178+
}
179+
}
180+
}
181+
182+
@Override
183+
public void postProcessModelProperty(CodegenModel model, CodegenProperty property) {
184+
super.postProcessModelProperty(model, property);
185+
// DEVTOOLING-1755: Fix Regex Patterns
186+
fixPatternModelProperty(property);
187+
}
188+
189+
// DEVTOOLING-1755: Fix Regex Patterns
190+
public void fixPatternModelProperty(CodegenProperty property){
191+
if(property.pattern != null) {
192+
property.pattern = property.pattern.replace("\\", "\\\\");
193+
if(property.vendorExtensions != null && property.vendorExtensions.get("x-regex") != null) {
194+
String veRegex = String.valueOf(property.vendorExtensions.get("x-regex"));
195+
if(veRegex != null) {
196+
veRegex = veRegex.replace("\\", "\\\\");
197+
property.vendorExtensions.put("x-regex", veRegex);
198+
}
199+
}
200+
}
160201
}
161202

162203
private boolean isEmpty(String jsonSchema) {

0 commit comments

Comments
 (0)