Skip to content

Commit 207a485

Browse files
authored
Merge pull request #456 from RachelTucker/python-80
PYTHONSDK-80: Fixed python response handlers with string response payloads
2 parents c66a266 + 8199cdf commit 207a485

File tree

3 files changed

+42
-3
lines changed

3 files changed

+42
-3
lines changed

ds3-autogen-python/src/main/java/com/spectralogic/ds3autogen/python/generators/response/BaseResponseGenerator.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
import static com.spectralogic.ds3autogen.python.utils.GeneratorUtils.getParserModelName;
3030
import static com.spectralogic.ds3autogen.utils.ConverterUtil.isEmpty;
31+
import static com.spectralogic.ds3autogen.utils.NormalizingContractNamesUtil.removePath;
3132
import static com.spectralogic.ds3autogen.utils.NormalizingContractNamesUtil.toResponseName;
3233
import static com.spectralogic.ds3autogen.utils.ResponsePayloadUtil.*;
3334

@@ -89,6 +90,10 @@ protected static ParsePayload getParsePayload(final Ds3Request ds3Request) {
8990
}
9091
final String responsePayload = getResponsePayload(ds3Request.getDs3ResponseCodes());
9192
final Integer responseCode = getPayloadResponseCode(ds3Request.getDs3ResponseCodes());
93+
94+
if (removePath(responsePayload).equalsIgnoreCase("String")) {
95+
return new StringParsePayload(responseCode);
96+
}
9297
return new BaseParsePayload(getParserModelName(responsePayload), responseCode);
9398
}
9499

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.spectralogic.ds3autogen.python.model.response;
2+
3+
import static com.spectralogic.ds3autogen.python.helpers.PythonHelper.pythonIndent;
4+
5+
public class StringParsePayload implements ParsePayload {
6+
private final Integer code;
7+
8+
public StringParsePayload(final int code) {
9+
this.code = code;
10+
}
11+
12+
@Override
13+
public String toPythonCode() {
14+
final StringBuilder builder = new StringBuilder("if self.response.status == ");
15+
builder.append(code).append(":\n")
16+
.append(pythonIndent(3))
17+
.append("self.result = response.read()");
18+
return builder.toString();
19+
}
20+
}

ds3-autogen-python/src/test/java/com.spectralogic.ds3autogen.python/generators/response/BaseResponseGenerator_Test.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,11 @@
2222
import com.spectralogic.ds3autogen.api.models.apispec.Ds3Type;
2323
import com.spectralogic.ds3autogen.python.model.response.BaseParsePayload;
2424
import com.spectralogic.ds3autogen.python.model.response.NoPayload;
25+
import com.spectralogic.ds3autogen.python.model.response.StringParsePayload;
2526
import org.junit.Test;
2627

2728
import static com.spectralogic.ds3autogen.python.generators.response.BaseResponseGenerator.*;
28-
import static com.spectralogic.ds3autogen.testutil.Ds3ModelFixtures.getBucketRequest;
29-
import static com.spectralogic.ds3autogen.testutil.Ds3ModelFixtures.getRequestAmazonS3GetObject;
30-
import static com.spectralogic.ds3autogen.testutil.Ds3ModelFixtures.getRequestGetJob;
29+
import static com.spectralogic.ds3autogen.testutil.Ds3ModelFixtures.*;
3130
import static com.spectralogic.ds3autogen.testutil.Ds3ModelPartialDataFixture.createDs3RequestTestData;
3231
import static org.hamcrest.CoreMatchers.*;
3332
import static org.junit.Assert.assertThat;
@@ -86,6 +85,12 @@ public void getParsePayload_NoNameToMarshal_Test() {
8685
assertThat(getParsePayload(request), instanceOf(BaseParsePayload.class));
8786
}
8887

88+
@Test
89+
public void getParsePayload_TypeString_Test() {
90+
final Ds3Request request = getGetBlobPersistence();
91+
assertThat(getParsePayload(request), instanceOf(StringParsePayload.class));
92+
}
93+
8994
@Test
9095
public void toParseResponsePayload_NoPayload_Test() {
9196
final Ds3Request request = createDs3RequestTestData("com.test.Request", Classification.amazons3);
@@ -110,6 +115,15 @@ public void toParseResponsePayload_WithNameToMarshal_Test() {
110115
assertThat(generator.toParseResponsePayload(request), is(expected));
111116
}
112117

118+
@Test
119+
public void toParseResponsePayload_WithStringPayload_Test() {
120+
final String expected = "if self.response.status == 200:\n" +
121+
" self.result = response.read()";
122+
123+
final Ds3Request request = getGetBlobPersistence();
124+
assertThat(generator.toParseResponsePayload(request), is(expected));
125+
}
126+
113127
@Test
114128
public void getStatusCodes_NullList_Test() {
115129
final ImmutableList<Integer> result = generator.getStatusCodes(null, "com.test.Request");

0 commit comments

Comments
 (0)