diff --git a/bin/csharp-http-client-petstore.sh b/bin/csharp-http-client-petstore.sh new file mode 100644 index 0000000000000000000000000000000000000000..1ccb7e23d2c17f77d1598e4826b949a8e4587256 --- /dev/null +++ b/bin/csharp-http-client-petstore.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +SCRIPT="$0" + +while [ -h "$SCRIPT" ] ; do + ls=$(ls -ld "$SCRIPT") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' > /dev/null; then + SCRIPT="$link" + else + SCRIPT=$(dirname "$SCRIPT")/"$link" + fi +done + +if [ ! -d "${APP_DIR}" ]; then + APP_DIR=$(dirname "$SCRIPT")/.. + APP_DIR=$(cd "${APP_DIR}"; pwd) +fi + +executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar" + +if [ ! -f "$executable" ] +then + mvn clean package +fi + +# if you've executed sbt assembly previously it will use that instead. +export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" +ags="$@ generate -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g csharp-http -o samples/client/petstore/csharp/http" + +java ${JAVA_OPTS} -jar ${executable} ${ags} diff --git a/bin/windows/csharp-http-client-petstore.bat b/bin/windows/csharp-http-client-petstore.bat new file mode 100644 index 0000000000000000000000000000000000000000..20b2116bf2ecb06e64c89313b1c9cf419d1c5665 --- /dev/null +++ b/bin/windows/csharp-http-client-petstore.bat @@ -0,0 +1,10 @@ +set executable=.\modules\openapi-generator-cli\target\openapi-generator-cli.jar + +If Not Exist %executable% ( + mvn clean package +) + +REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties +set ags=generate --artifact-id "csharp-http-petstore-client" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g csharp-http -o samples\client\petstore\csharp\http + +java %JAVA_OPTS% -jar %executable% %ags% diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CsharpHttpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CsharpHttpClientCodegen.java new file mode 100644 index 0000000000000000000000000000000000000000..a7275027c8726ab81fbbd4dfb77896ca8dc0eb95 --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CsharpHttpClientCodegen.java @@ -0,0 +1,46 @@ +package org.openapitools.codegen.languages; + +import org.openapitools.codegen.*; +import io.swagger.models.properties.ArrayProperty; +import io.swagger.models.properties.MapProperty; +import io.swagger.models.properties.Property; +import io.swagger.models.parameters.Parameter; + +import java.io.File; +import java.util.*; + +import org.apache.commons.lang3.StringUtils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class CsharpHttpClientCodegen extends DefaultCodegen implements CodegenConfig { + public static final String PROJECT_NAME = "projectName"; + + static Logger LOGGER = LoggerFactory.getLogger(CsharpHttpClientCodegen.class); + + public CodegenType getTag() { + return CodegenType.CLIENT; + } + + public String getName() { + return "csharp-http"; + } + + public String getHelp() { + return "Generates a csharp-http client."; + } + + public CsharpHttpClientCodegen() { + super(); + + outputFolder = "generated-code" + File.separator + "csharp-http"; + modelTemplateFiles.put("model.mustache", ".zz"); + apiTemplateFiles.put("api.mustache", ".zz"); + embeddedTemplateDir = templateDir = "csharp-http-client"; + apiPackage = File.separator + "Apis"; + modelPackage = File.separator + "Models"; + supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); + // TODO: Fill this out. + } +} diff --git a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig index 67c0f473b506bc5035a33125925c6494961e2991..a4fe70134d80e74b287406dfc53e27348253ee4c 100644 --- a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig +++ b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig @@ -117,4 +117,5 @@ org.openapitools.codegen.languages.TypeScriptNodeClientCodegen org.openapitools.codegen.languages.TypeScriptRxjsClientCodegen org.openapitools.codegen.languages.FsharpGiraffeServerCodegen org.openapitools.codegen.languages.AsciidocDocumentationCodegen +org.openapitools.codegen.languages.CsharpHttpClientCodegen org.openapitools.codegen.languages.FsharpFunctionsServerCodegen diff --git a/modules/openapi-generator/src/main/resources/csharp-http-client/README.mustache b/modules/openapi-generator/src/main/resources/csharp-http-client/README.mustache new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/modules/openapi-generator/src/main/resources/csharp-http-client/api.mustache b/modules/openapi-generator/src/main/resources/csharp-http-client/api.mustache new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/modules/openapi-generator/src/main/resources/csharp-http-client/model.mustache b/modules/openapi-generator/src/main/resources/csharp-http-client/model.mustache new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/http/CsharpHttpClientCodegenModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/http/CsharpHttpClientCodegenModelTest.java new file mode 100644 index 0000000000000000000000000000000000000000..8858fc86e3020b65121b256d1edf8e75362f16b5 --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/http/CsharpHttpClientCodegenModelTest.java @@ -0,0 +1,29 @@ +package org.openapitools.codegen.csharp.http; + +import org.openapitools.codegen.*; +import org.openapitools.codegen.languages.CsharpHttpClientCodegen; +import io.swagger.models.*; +import io.swagger.models.properties.*; + +import org.testng.Assert; +import org.testng.annotations.Test; + +@SuppressWarnings("static-method") +public class CsharpHttpClientCodegenModelTest { + + @Test(description = "convert a simple java model") + public void simpleModelTest() { + final Model model = new ModelImpl() + .description("a sample model") + .property("id", new LongProperty()) + .property("name", new StringProperty()) + .required("id") + .required("name"); + final DefaultCodegen codegen = new CsharpHttpClientCodegen(); + + // TODO: Complete this test. + Assert.fail("Not implemented."); + } + +} + diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/http/CsharpHttpClientCodegenOptionsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/http/CsharpHttpClientCodegenOptionsTest.java new file mode 100644 index 0000000000000000000000000000000000000000..0b7ffd13cf503604623f405cba634321690226f8 --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/http/CsharpHttpClientCodegenOptionsTest.java @@ -0,0 +1,34 @@ +package org.openapitools.codegen.csharp.http; + +import org.openapitools.codegen.AbstractOptionsTest; +import org.openapitools.codegen.CodegenConfig; +import org.openapitools.codegen.languages.CsharpHttpClientCodegen; +import org.openapitools.codegen.options.CsharpHttpClientCodegenOptionsProvider; + +import mockit.Expectations; +import mockit.Tested; + +public class CsharpHttpClientCodegenOptionsTest extends AbstractOptionsTest { + + @Tested + private CsharpHttpClientCodegen codegen; + + public CsharpHttpClientCodegenOptionsTest() { + super(new CsharpHttpClientCodegenOptionsProvider()); + } + + @Override + protected CodegenConfig getCodegenConfig() { + return codegen; + } + + @SuppressWarnings("unused") + @Override + protected void setExpectations() { + // TODO: Complete options + new Expectations(codegen) {{ + + }}; + } +} + diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/http/CsharpHttpClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/http/CsharpHttpClientCodegenTest.java new file mode 100644 index 0000000000000000000000000000000000000000..b946bb9b27e9e665db5c77722381069ab01250e9 --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/http/CsharpHttpClientCodegenTest.java @@ -0,0 +1,19 @@ +package org.openapitools.codegen.csharp.http; + +import org.openapitools.codegen.*; +import org.openapitools.codegen.languages.CsharpHttpClientCodegen; +import io.swagger.models.*; +import io.swagger.parser.SwaggerParser; +import org.testng.Assert; +import org.testng.annotations.Test; + +public class CsharpHttpClientCodegenTest { + + CsharpHttpClientCodegen codegen = new CsharpHttpClientCodegen(); + + @Test + public void shouldSucceed() throws Exception { + // TODO: Complete this test. + Assert.fail("Not implemented."); + } +} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/CsharpHttpClientCodegenOptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/CsharpHttpClientCodegenOptionsProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..88a7a2bc05ee70f06186d92b09dedc50caed2c29 --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/CsharpHttpClientCodegenOptionsProvider.java @@ -0,0 +1,31 @@ +package org.openapitools.codegen.options; + +import org.openapitools.codegen.CodegenConstants; +import org.openapitools.codegen.languages.CsharpHttpClientCodegen; + +import com.google.common.collect.ImmutableMap; + +import java.util.Map; + +public class CsharpHttpClientCodegenOptionsProvider implements OptionsProvider { + public static final String PROJECT_NAME_VALUE = "OpenAPI"; + + @Override + public String getLanguage() { + return "csharp-http"; + } + + @Override + public Map<String, String> createOptions() { + ImmutableMap.Builder<String, String> builder = new ImmutableMap.Builder<String, String>(); + return builder + .put(CsharpHttpClientCodegen.PROJECT_NAME, PROJECT_NAME_VALUE) + .build(); + } + + @Override + public boolean isServer() { + return false; + } +} +