diff --git a/README.md b/README.md index ca2b551..ae46a08 100755 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ ### Gradle ```groovy -implementation 'structure.Structure:Structure:0.1.1' +implementation 'structure.Structure:Structure:0.2.2' ``` @@ -47,10 +47,10 @@ public class Application { .build(); EnrichCompanyRequest req = new EnrichCompanyRequest() {{ - countryCode = "corrupti"; + countryCode = "MA"; headquarters = "provident"; - id = "distinctio"; - name = "quibusdam"; + id = "bd9d8d69-a674-4e0f-867c-c8796ed151a0"; + name = "Estelle Will"; }} EnrichCompanyResponse res = sdk.companies.enrich(req); diff --git a/RELEASES.md b/RELEASES.md index 7892fac..67f3413 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -44,4 +44,28 @@ Based on: - OpenAPI Doc 1.0 https://prod.speakeasyapi.dev/v1/apis/Structure/version/1.0.0/schema/download - Speakeasy CLI 1.19.7 (2.17.9) https://github.com/speakeasy-api/speakeasy ### Releases -- [Maven Central v0.1.1] https://central.sonatype.com/artifact/structure/Structure/0.1.1 - . \ No newline at end of file +- [Maven Central v0.1.1] https://central.sonatype.com/artifact/structure/Structure/0.1.1 - . + +## 2023-04-14 01:21:20 +### Changes +Based on: +- OpenAPI Doc 1.0 https://prod.speakeasyapi.dev/v1/apis/Structure/version/1.0.0/schema/download +- Speakeasy CLI 1.20.0 (2.18.0) https://github.com/speakeasy-api/speakeasy +### Releases +- [Maven Central v0.2.0] https://central.sonatype.com/artifact/structure/Structure/0.2.0 - . + +## 2023-04-18 01:21:04 +### Changes +Based on: +- OpenAPI Doc 1.0 https://prod.speakeasyapi.dev/v1/apis/Structure/version/1.0.0/schema/download +- Speakeasy CLI 1.20.1 (2.18.1) https://github.com/speakeasy-api/speakeasy +### Releases +- [Maven Central v0.2.1] https://central.sonatype.com/artifact/structure/Structure/0.2.1 - . + +## 2023-04-19 01:23:19 +### Changes +Based on: +- OpenAPI Doc 1.0 https://prod.speakeasyapi.dev/v1/apis/Structure/version/1.0.0/schema/download +- Speakeasy CLI 1.20.2 (2.18.2) https://github.com/speakeasy-api/speakeasy +### Releases +- [Maven Central v0.2.2] https://central.sonatype.com/artifact/structure/Structure/0.2.2 - . \ No newline at end of file diff --git a/USAGE.md b/USAGE.md index da8167d..74063f0 100755 --- a/USAGE.md +++ b/USAGE.md @@ -17,10 +17,10 @@ public class Application { .build(); EnrichCompanyRequest req = new EnrichCompanyRequest() {{ - countryCode = "corrupti"; + countryCode = "MA"; headquarters = "provident"; - id = "distinctio"; - name = "quibusdam"; + id = "bd9d8d69-a674-4e0f-867c-c8796ed151a0"; + name = "Estelle Will"; }} EnrichCompanyResponse res = sdk.companies.enrich(req); diff --git a/gen.yaml b/gen.yaml index 50b7323..73a88c2 100644 --- a/gen.yaml +++ b/gen.yaml @@ -2,15 +2,14 @@ configVersion: 1.0.0 management: docChecksum: 806f4efd39380ded206093b8704f66ee docVersion: "1.0" - speakeasyVersion: 1.19.7 - generationVersion: 2.17.9 + speakeasyVersion: 1.20.2 + generationVersion: 2.18.2 generation: telemetryEnabled: false sdkClassName: SDK - sdkFlattening: false singleTagPerOp: false java: - version: 0.1.1 + version: 0.2.2 artifactID: Structure companyEmail: info@mycompany.com companyName: My Company diff --git a/lib/build.gradle b/lib/build.gradle index 95e54eb..4149991 100755 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -41,7 +41,7 @@ publishing { maven(MavenPublication) { groupId = 'structure' artifactId = 'Structure' - version = '0.1.1' + version = '0.2.2' from components.java diff --git a/lib/src/main/java/structure/Structure/SDK.java b/lib/src/main/java/structure/Structure/SDK.java index 39c8611..01abe00 100755 --- a/lib/src/main/java/structure/Structure/SDK.java +++ b/lib/src/main/java/structure/Structure/SDK.java @@ -40,8 +40,8 @@ public class SDK { private structure.Structure.models.shared.Security _security; private String _serverUrl; private String _language = "java"; - private String _sdkVersion = "0.1.1"; - private String _genVersion = "2.17.9"; + private String _sdkVersion = "0.2.2"; + private String _genVersion = "2.18.2"; /** * The Builder class allows the configuration of a new instance of the SDK. */ diff --git a/lib/src/main/java/structure/Structure/utils/PathParamsMetadata.java b/lib/src/main/java/structure/Structure/utils/PathParamsMetadata.java index 59b155b..e9c9f23 100755 --- a/lib/src/main/java/structure/Structure/utils/PathParamsMetadata.java +++ b/lib/src/main/java/structure/Structure/utils/PathParamsMetadata.java @@ -10,6 +10,7 @@ public class PathParamsMetadata extends Metadata { public String style = "simple"; public boolean explode; public String name; + public String serialization; // pathParam:style=simple,explode=false,name=apiID public static PathParamsMetadata parse(Field field) throws IllegalArgumentException, IllegalAccessException { diff --git a/lib/src/main/java/structure/Structure/utils/Utils.java b/lib/src/main/java/structure/Structure/utils/Utils.java index 3458eff..64b2d48 100755 --- a/lib/src/main/java/structure/Structure/utils/Utils.java +++ b/lib/src/main/java/structure/Structure/utils/Utils.java @@ -6,6 +6,8 @@ import java.io.IOException; import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -17,6 +19,9 @@ import org.apache.http.NameValuePair; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + public final class Utils { public static String generateURL(String baseURL, String path) throws IllegalArgumentException, IllegalAccessException { @@ -29,7 +34,7 @@ public static String generateURL(String baseURL, String path) public static String generateURL(Class type, String baseURL, String path, T params, Map>> globals) - throws IllegalArgumentException, IllegalAccessException { + throws IllegalArgumentException, IllegalAccessException, JsonProcessingException { if (baseURL != null && baseURL.endsWith("/")) { baseURL = baseURL.split("/")[0]; } @@ -50,68 +55,73 @@ public static String generateURL(Class type, String baseUR continue; } - switch (pathParamsMetadata.style) { - case "simple": - switch (Types.getType(value.getClass())) { - case ARRAY: - Object[] array = (Object[]) value; - if (array.length == 0) { - continue; - } - - pathParams.put(pathParamsMetadata.name, - String.join(",", - Arrays.asList(array).stream().map(v -> Utils.valToString(v)) - .collect(Collectors.toList()))); - break; - case MAP: - Map map = (Map) value; - if (map.size() == 0) { - continue; - } - - pathParams.put(pathParamsMetadata.name, - String.join(",", map.entrySet().stream().map(e -> { - if (pathParamsMetadata.explode) { - return String.format("%s=%s", Utils.valToString(e.getKey()), - Utils.valToString(e.getValue())); - } else { - return String.format("%s,%s", Utils.valToString(e.getKey()), - Utils.valToString(e.getValue())); - } - }).collect(Collectors.toList()))); - break; - case OBJECT: - List values = new ArrayList(); - - Field[] valueFields = value.getClass().getFields(); - for (Field valueField : valueFields) { - PathParamsMetadata valuePathParamsMetadata = PathParamsMetadata.parse(valueField); - if (valuePathParamsMetadata == null) { + if (pathParamsMetadata.serialization != null && !pathParamsMetadata.serialization.isBlank()) { + Map serialized = parseSerializedParams(pathParamsMetadata, value); + pathParams.putAll(serialized); + } else { + switch (pathParamsMetadata.style) { + case "simple": + switch (Types.getType(value.getClass())) { + case ARRAY: + Object[] array = (Object[]) value; + if (array.length == 0) { continue; } - Object val = valueField.get(value); - - if (val == null) { + pathParams.put(pathParamsMetadata.name, + String.join(",", + Arrays.asList(array).stream().map(v -> Utils.valToString(v)) + .collect(Collectors.toList()))); + break; + case MAP: + Map map = (Map) value; + if (map.size() == 0) { continue; } - if (pathParamsMetadata.explode) { - values.add(String.format("%s=%s", valuePathParamsMetadata.name, - Utils.valToString(val))); - } else { - values.add(String.format("%s,%s", valuePathParamsMetadata.name, - Utils.valToString(val))); + pathParams.put(pathParamsMetadata.name, + String.join(",", map.entrySet().stream().map(e -> { + if (pathParamsMetadata.explode) { + return String.format("%s=%s", Utils.valToString(e.getKey()), + Utils.valToString(e.getValue())); + } else { + return String.format("%s,%s", Utils.valToString(e.getKey()), + Utils.valToString(e.getValue())); + } + }).collect(Collectors.toList()))); + break; + case OBJECT: + List values = new ArrayList(); + + Field[] valueFields = value.getClass().getFields(); + for (Field valueField : valueFields) { + PathParamsMetadata valuePathParamsMetadata = PathParamsMetadata.parse(valueField); + if (valuePathParamsMetadata == null) { + continue; + } + + Object val = valueField.get(value); + + if (val == null) { + continue; + } + + if (pathParamsMetadata.explode) { + values.add(String.format("%s=%s", valuePathParamsMetadata.name, + Utils.valToString(val))); + } else { + values.add(String.format("%s,%s", valuePathParamsMetadata.name, + Utils.valToString(val))); + } } - } - pathParams.put(pathParamsMetadata.name, String.join(",", values)); - break; - default: - pathParams.put(pathParamsMetadata.name, Utils.valToString(value)); - break; - } + pathParams.put(pathParamsMetadata.name, String.join(",", values)); + break; + default: + pathParams.put(pathParamsMetadata.name, Utils.valToString(value)); + break; + } + } } } @@ -330,6 +340,22 @@ public static Object popualteGlobal(Object value, String fieldName, String param return value; } + private static Map parseSerializedParams(PathParamsMetadata pathParamsMetadata, Object value) + throws JsonProcessingException { + Map params = new HashMap<>(); + + switch (pathParamsMetadata.serialization) { + case "json": + ObjectMapper mapper = JSON.getMapper(); + String json = mapper.writeValueAsString(value); + + params.put(pathParamsMetadata.name, URLEncoder.encode(json, StandardCharsets.UTF_8)); + break; + } + + return params; + } + private Utils() { } } \ No newline at end of file