Skip to content

Commit c581aff

Browse files
authored
chore: adding support of PUT method (#573)
1 parent 60be17d commit c581aff

21 files changed

+137
-38
lines changed

src/main/java/com/twilio/oai/api/ApiResourceBuilder.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ protected ApiResourceBuilder(IApiActionTemplate template, List<CodegenOperation>
5959
public ApiResourceBuilder updateOperations(Resolver<CodegenParameter> codegenParameterIResolver) {
6060
this.codegenOperationList.forEach(codegenOperation -> {
6161
updateNestedContent(codegenOperation);
62+
updateHttpMethod(codegenOperation);
6263
codegenOperation.allParams.forEach(param -> addModel(modelTree, param.baseType, param.dataType));
6364

6465
codegenOperation.allParams.forEach(param -> resolveParam(codegenParameterIResolver, param));
@@ -91,6 +92,10 @@ public ApiResourceBuilder updateOperations(Resolver<CodegenParameter> codegenPar
9192
return this;
9293
}
9394

95+
public void updateHttpMethod(CodegenOperation co) {
96+
97+
}
98+
9499
protected void resolveParam(final Resolver<CodegenParameter> codegenParameterIResolver,
95100
final CodegenParameter param) {
96101
codegenParameterIResolver.resolve(param, this);

src/main/java/com/twilio/oai/api/CsharpApiResourceBuilder.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.twilio.oai.StringHelper;
55
import com.twilio.oai.common.ApplicationConstants;
66
import com.twilio.oai.common.EnumConstants;
7+
import com.twilio.oai.common.EnumConstants.CsharpHttpMethod;
78
import com.twilio.oai.common.Utility;
89
import com.twilio.oai.resolver.Resolver;
910
import com.twilio.oai.resolver.csharp.OperationStore;
@@ -28,6 +29,7 @@
2829
import java.util.Set;
2930
import java.util.stream.Collectors;
3031

32+
import static com.twilio.oai.common.ApplicationConstants.HTTP_METHOD;
3133
import static com.twilio.oai.common.ApplicationConstants.PATH_SEPARATOR_PLACEHOLDER;
3234

3335
public class CsharpApiResourceBuilder extends ApiResourceBuilder {
@@ -84,6 +86,23 @@ public ApiResourceBuilder updateOperations(Resolver<CodegenParameter> codegenPar
8486

8587
return this;
8688
}
89+
@Override
90+
public void updateHttpMethod(CodegenOperation co) {
91+
switch (co.httpMethod) {
92+
case "GET":
93+
co.vendorExtensions.put(HTTP_METHOD, CsharpHttpMethod.GET.getValue());
94+
break;
95+
case "POST":
96+
co.vendorExtensions.put(HTTP_METHOD, CsharpHttpMethod.POST.getValue());
97+
break;
98+
case "PUT":
99+
co.vendorExtensions.put(HTTP_METHOD, CsharpHttpMethod.PUT.getValue());
100+
break;
101+
case "DELETE":
102+
co.vendorExtensions.put(HTTP_METHOD, CsharpHttpMethod.DELETE.getValue());
103+
break;
104+
}
105+
}
87106

88107
private void resolveIngressModel(CodegenOperation codegenOperation) {
89108
// Required params are used in parameters in C#, Check Params.mustache.

src/main/java/com/twilio/oai/api/JavaApiResourceBuilder.java

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.twilio.oai.JsonRequestBodyResolver;
77
import com.twilio.oai.StringHelper;
88
import com.twilio.oai.common.EnumConstants;
9+
import com.twilio.oai.common.EnumConstants.JavaHttpMethod;
910
import com.twilio.oai.common.Utility;
1011
import com.twilio.oai.resolver.Resolver;
1112
import com.twilio.oai.resolver.java.JavaConventionResolver;
@@ -16,11 +17,32 @@
1617
import org.openapitools.codegen.CodegenProperty;
1718
import org.openapitools.codegen.IJsonSchemaValidationProperties;
1819

19-
import java.util.*;
20+
import java.util.ArrayList;
21+
import java.util.Arrays;
22+
import java.util.Collections;
23+
import java.util.HashMap;
24+
import java.util.HashSet;
25+
import java.util.List;
26+
import java.util.Locale;
27+
import java.util.Map;
28+
import java.util.Objects;
29+
import java.util.Optional;
30+
import java.util.Set;
31+
import java.util.TreeSet;
2032
import java.util.function.Predicate;
2133
import java.util.stream.Collectors;
2234

23-
import static com.twilio.oai.common.ApplicationConstants.*;
35+
import static com.twilio.oai.common.ApplicationConstants.ACCOUNT_SID_VEND_EXT;
36+
import static com.twilio.oai.common.ApplicationConstants.ARRAY;
37+
import static com.twilio.oai.common.ApplicationConstants.ENUM_VARS;
38+
import static com.twilio.oai.common.ApplicationConstants.HTTP_METHOD;
39+
import static com.twilio.oai.common.ApplicationConstants.LIST_END;
40+
import static com.twilio.oai.common.ApplicationConstants.LIST_START;
41+
import static com.twilio.oai.common.ApplicationConstants.PATH_SEPARATOR_PLACEHOLDER;
42+
import static com.twilio.oai.common.ApplicationConstants.REF_ENUM_EXTENSION_NAME;
43+
import static com.twilio.oai.common.ApplicationConstants.STRING;
44+
import static com.twilio.oai.common.ApplicationConstants.SUCCESS;
45+
import static com.twilio.oai.common.ApplicationConstants.TWILIO_EXTENSION_NAME;
2446
import static com.twilio.oai.template.AbstractApiActionTemplate.NESTED_MODELS;
2547
import static com.twilio.oai.template.JavaApiActionTemplate.API_TEMPLATE;
2648

@@ -77,6 +99,7 @@ public ApiResourceBuilder updateOperations(Resolver<CodegenParameter> codegenPar
7799
JsonRequestBodyResolver jsonRequestBodyResolver = new JsonRequestBodyResolver(this, codegenPropertyIResolver);
78100
this.codegenOperationList.forEach(co -> {
79101
updateNestedContent(co);
102+
updateHttpMethod(co);
80103
List<String> filePathArray = new ArrayList<>(Arrays.asList(co.baseName.split(PATH_SEPARATOR_PLACEHOLDER)));
81104
String resourceName = filePathArray.remove(filePathArray.size()-1);
82105

@@ -147,6 +170,24 @@ public ApiResourceBuilder updateOperations(Resolver<CodegenParameter> codegenPar
147170
return this;
148171
}
149172

173+
@Override
174+
public void updateHttpMethod(CodegenOperation co) {
175+
switch (co.httpMethod) {
176+
case "GET":
177+
co.vendorExtensions.put(HTTP_METHOD, JavaHttpMethod.GET.getValue());
178+
break;
179+
case "POST":
180+
co.vendorExtensions.put(HTTP_METHOD, JavaHttpMethod.POST.getValue());
181+
break;
182+
case "PUT":
183+
co.vendorExtensions.put(HTTP_METHOD, JavaHttpMethod.PUT.getValue());
184+
break;
185+
case "DELETE":
186+
co.vendorExtensions.put(HTTP_METHOD, JavaHttpMethod.DELETE.getValue());
187+
break;
188+
}
189+
}
190+
150191
private void updateHeaderParamsList(CodegenParameter cp) {
151192
List<CodegenProperty> codegenProperties = new ArrayList<>();
152193
if (cp.isEnum && cp.isHeaderParam) {

src/main/java/com/twilio/oai/api/NodeApiResourceBuilder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.openapitools.codegen.CodegenParameter;
1818
import org.openapitools.codegen.CodegenProperty;
1919

20+
import static com.twilio.oai.common.ApplicationConstants.HTTP_METHOD;
2021
import static com.twilio.oai.common.ApplicationConstants.STRING;
2122

2223
public class NodeApiResourceBuilder extends FluentApiResourceBuilder {

src/main/java/com/twilio/oai/api/PythonApiResourceBuilder.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.twilio.oai.DirectoryStructureService;
44
import com.twilio.oai.StringHelper;
55
import com.twilio.oai.common.ApplicationConstants;
6+
import com.twilio.oai.common.EnumConstants;
67
import com.twilio.oai.common.Utility;
78
import com.twilio.oai.resolver.Resolver;
89
import com.twilio.oai.resolver.python.PythonCodegenModelResolver;
@@ -19,6 +20,7 @@
1920
import org.openapitools.codegen.CodegenParameter;
2021
import org.openapitools.codegen.CodegenProperty;
2122

23+
import static com.twilio.oai.common.ApplicationConstants.HTTP_METHOD;
2224
import static com.twilio.oai.common.ApplicationConstants.PATH_SEPARATOR_PLACEHOLDER;
2325
import static com.twilio.oai.common.ApplicationConstants.STRING;
2426

@@ -65,6 +67,11 @@ public ApiResourceBuilder updateOperations(final Resolver<CodegenParameter> code
6567
return this;
6668
}
6769

70+
@Override
71+
public void updateHttpMethod(CodegenOperation co) {
72+
co.vendorExtensions.put(HTTP_METHOD, co.httpMethod);
73+
}
74+
6875
/**
6976
* Processes the response body and its models to resolve nested response models.
7077
* Returns the resource builder with resolved response body.

src/main/java/com/twilio/oai/common/ApplicationConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public class ApplicationConstants {
4848
public static final String RESOURCE = "Resource";
4949
public static final String DOT = ".";
5050
public static final String ACCOUNT_SID_VEND_EXT = "x-is-account-sid";
51+
public static final String HTTP_METHOD = "x-http-method";
5152
public static final String DEPENDENT_PROPERTIES = "dependentProperties";
5253

5354
public static final String PREFIXED_COLLAPSIBLE_MAP = "prefixed-collapsible-map";

src/main/java/com/twilio/oai/common/EnumConstants.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,28 @@ public enum PhpDataTypes implements LanguageDataType {
9898

9999
private final String value;
100100
}
101+
102+
@Getter
103+
@RequiredArgsConstructor
104+
public enum JavaHttpMethod {
105+
GET("HttpMethod.GET"),
106+
POST("HttpMethod.POST"),
107+
PUT("HttpMethod.PUT"),
108+
DELETE("HttpMethod.DELETE"),
109+
HEAD("HttpMethod.HEAD"),
110+
OPTIONS("HttpMethod.OPTIONS");
111+
112+
private final String value;
113+
}
114+
115+
@Getter
116+
@RequiredArgsConstructor
117+
public enum CsharpHttpMethod {
118+
GET("HttpMethod.Get"),
119+
POST("HttpMethod.Post"),
120+
PUT("HttpMethod.Put"),
121+
DELETE("HttpMethod.Delete");
122+
123+
private final String value;
124+
}
101125
}

src/main/resources/twilio-csharp/resource/CreateResource.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
{
44
{{>resource/GeneratePath}}
55
return new Request(
6-
HttpMethod.Post,
6+
{{vendorExtensions.x-http-method}},
77
Rest.Domain.{{domainPackage}},
88
path,
99
{{^vendorExtensions.x-is-json}}

src/main/resources/twilio-csharp/resource/DeleteResource.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
{
88
{{>resource/GeneratePath}}
99
return new Request(
10-
HttpMethod.Delete,
10+
{{vendorExtensions.x-http-method}},
1111
Rest.Domain.{{domainPackage}},
1212
path,
1313
queryParams: options.GetParams(),

src/main/resources/twilio-csharp/resource/FetchResource.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
{
44
{{>resource/GeneratePath}}
55
return new Request(
6-
HttpMethod.Get,
6+
{{vendorExtensions.x-http-method}},
77
Rest.Domain.{{domainPackage}},
88
path,
99
queryParams: options.GetParams(),

0 commit comments

Comments
 (0)