forked from googleapis/google-http-java-client
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: support chunked transfer encoding
Currently any time HttpRequest works with encoded data it encodes the data twice. Once for the actaul stream and once for checking the length of the stream. Instead, when there is encoding just don't set the content length. This will cause the underlying transports, with a few tweaks, to use Transfer-Encoding: chunked. Fixes googleapis#648
- Loading branch information
Showing
32 changed files
with
387 additions
and
307 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -18,6 +18,4 @@ | |
* @since 1.30 | ||
* @author Yaniv Inbar | ||
*/ | ||
|
||
package com.google.api.client.http.apache.v2; | ||
|
45 changes: 45 additions & 0 deletions
45
...t-apache-v2/src/test/java/com/google/api/client/http/apache/v2/ApacheHttpRequestTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
package com.google.api.client.http.apache.v2; | ||
|
||
import static org.junit.Assert.assertEquals; | ||
import static org.junit.Assert.assertFalse; | ||
import static org.junit.Assert.assertTrue; | ||
|
||
import com.google.api.client.http.ByteArrayContent; | ||
import com.google.api.client.http.HttpContent; | ||
import com.google.api.client.http.InputStreamContent; | ||
import com.google.api.client.testing.http.apache.MockHttpClient; | ||
import java.io.ByteArrayInputStream; | ||
import java.nio.charset.StandardCharsets; | ||
import java.util.Arrays; | ||
import org.junit.Test; | ||
|
||
public class ApacheHttpRequestTest { | ||
|
||
@Test | ||
public void testContentLengthSet() throws Exception { | ||
HttpExtensionMethod base = new HttpExtensionMethod("POST", "http://www.google.com"); | ||
ApacheHttpRequest request = new ApacheHttpRequest(new MockHttpClient(), base); | ||
HttpContent content = | ||
new ByteArrayContent("text/plain", "sample".getBytes(StandardCharsets.UTF_8)); | ||
request.setStreamingContent(content); | ||
request.setContentLength(content.getLength()); | ||
request.execute(); | ||
|
||
assertFalse(base.getEntity().isChunked()); | ||
assertEquals(6, base.getEntity().getContentLength()); | ||
} | ||
|
||
@Test | ||
public void testChunked() throws Exception { | ||
byte[] buf = new byte[300]; | ||
Arrays.fill(buf, (byte) ' '); | ||
HttpExtensionMethod base = new HttpExtensionMethod("POST", "http://www.google.com"); | ||
ApacheHttpRequest request = new ApacheHttpRequest(new MockHttpClient(), base); | ||
HttpContent content = new InputStreamContent("text/plain", new ByteArrayInputStream(buf)); | ||
request.setStreamingContent(content); | ||
request.execute(); | ||
|
||
assertTrue(base.getEntity().isChunked()); | ||
assertEquals(-1, base.getEntity().getContentLength()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.