From bea16937caf51a32a3e72d65e8ee8920d3371afa Mon Sep 17 00:00:00 2001 From: thc202 Date: Thu, 4 May 2017 23:31:47 +0100 Subject: [PATCH] Update Python API generator for Python 3 Change PythonAPIGenerator to use the six library, for compatibility with Python 2 and 3. Also, tweak it to not add unnecessary empty lines at the end of the generated files. For/from zaproxy/zap-api-python#4 - Fix for Python 3 --- .../zap/extension/api/PythonAPIGenerator.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/org/zaproxy/zap/extension/api/PythonAPIGenerator.java b/src/org/zaproxy/zap/extension/api/PythonAPIGenerator.java index 8433fbbbbbd..95b88362cde 100644 --- a/src/org/zaproxy/zap/extension/api/PythonAPIGenerator.java +++ b/src/org/zaproxy/zap/extension/api/PythonAPIGenerator.java @@ -92,6 +92,7 @@ public void generatePythonFiles(List implementors) throws IOExce private void generatePythonElement(ApiElement element, String component, String type, Writer out) throws IOException { + out.write("\n\n"); boolean hasParams = (element.getMandatoryParamNames() != null && element.getMandatoryParamNames().size() > 0) || (element.getOptionalParamNames() != null && @@ -191,7 +192,7 @@ private void generatePythonElement(ApiElement element, String component, if (type.equals(OTHER_ENDPOINT)) { out.write(" return ("); } else { - out.write(" return next("); + out.write(" return six.next(six.itervalues("); } out.write("self.zap." + method + "(self.zap." + baseUrl + " + '" + component + "/" + type + "/" + element.getName() + "/'"); @@ -202,16 +203,15 @@ private void generatePythonElement(ApiElement element, String component, out.write(reqParams.toString()); out.write(")"); if (!type.equals(OTHER_ENDPOINT)) { - out.write(".itervalues())"); + out.write("))"); } else { out.write(")"); } } else if (!type.equals(OTHER_ENDPOINT)) { - out.write(").itervalues())"); + out.write(")))"); } else { out.write(")"); } - out.write("\n\n"); } @@ -221,10 +221,10 @@ protected void generateAPIFiles(ApiImplementor imp) throws IOException { System.out.println("Generating " + file.toAbsolutePath()); try (BufferedWriter out = Files.newBufferedWriter(file, StandardCharsets.UTF_8)) { out.write(HEADER); + out.write("import six\n\n"); out.write("class " + safeName(imp.getPrefix()) + "(object):\n\n"); out.write(" def __init__(self, zap):\n"); - out.write(" self.zap = zap\n"); - out.write("\n"); + out.write(" self.zap = zap"); for (ApiElement view : imp.getApiViews()) { this.generatePythonElement(view, imp.getPrefix(), VIEW_ENDPOINT, out);