Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
### Gradle

```groovy
implementation 'structure.Structure:Structure:0.1.1'
implementation 'structure.Structure:Structure:0.2.2'
```
<!-- End SDK Installation -->

Expand Down Expand Up @@ -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);
Expand Down
26 changes: 25 additions & 1 deletion RELEASES.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 - .
- [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 - .
6 changes: 3 additions & 3 deletions USAGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
7 changes: 3 additions & 4 deletions gen.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion lib/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ publishing {
maven(MavenPublication) {
groupId = 'structure'
artifactId = 'Structure'
version = '0.1.1'
version = '0.2.2'

from components.java

Expand Down
4 changes: 2 additions & 2 deletions lib/src/main/java/structure/Structure/SDK.java
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
136 changes: 81 additions & 55 deletions lib/src/main/java/structure/Structure/utils/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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 {
Expand All @@ -29,7 +34,7 @@ public static String generateURL(String baseURL, String path)

public static <T extends Object> String generateURL(Class<T> type, String baseURL, String path, T params,
Map<String, Map<String, Map<String, Object>>> globals)
throws IllegalArgumentException, IllegalAccessException {
throws IllegalArgumentException, IllegalAccessException, JsonProcessingException {
if (baseURL != null && baseURL.endsWith("/")) {
baseURL = baseURL.split("/")[0];
}
Expand All @@ -50,68 +55,73 @@ public static <T extends Object> String generateURL(Class<T> 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<String> values = new ArrayList<String>();

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<String, String> 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<String> values = new ArrayList<String>();

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;
}
}
}
}

Expand Down Expand Up @@ -330,6 +340,22 @@ public static Object popualteGlobal(Object value, String fieldName, String param
return value;
}

private static Map<String, String> parseSerializedParams(PathParamsMetadata pathParamsMetadata, Object value)
throws JsonProcessingException {
Map<String, String> 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() {
}
}