diff --git a/.travis.yml b/.travis.yml index c948a50..e8e57a4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,6 @@ language: android +jdk: + - oraclejdk8 android: components: - build-tools-23.0.1 diff --git a/README.md b/README.md index 2bf4622..24a6581 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ dependencies { // snapshot version compile 'com.github.mrmike:ok2curl:master-SNAPSHOT' // or use specific version - compile 'com.github.mrmike:ok2curl:0.2.5' + compile 'com.github.mrmike:ok2curl:0.3.0' } ``` diff --git a/build.gradle b/build.gradle index e78d298..df6be56 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:1.3.0' + classpath 'com.android.tools.build:gradle:2.2.0' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3' } } @@ -17,3 +17,7 @@ allprojects { task clean(type: Delete) { delete rootProject.buildDir } + +task wrapper(type: Wrapper) { + gradleVersion = '3.2' +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 8c0fb64..b5166da 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 4fbe178..b599178 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Sep 24 21:58:05 CEST 2015 +#Tue Nov 15 21:03:06 CET 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.2-all.zip diff --git a/ok2curl/build.gradle b/ok2curl/build.gradle index 15361c7..d808fde 100644 --- a/ok2curl/build.gradle +++ b/ok2curl/build.gradle @@ -2,17 +2,17 @@ apply plugin: 'java' apply plugin: 'maven' group='com.github.mrmike' -version='0.2.5' +version='0.3.0' targetCompatibility = '1.7' sourceCompatibility = '1.7' dependencies { - compile 'com.squareup.okhttp3:okhttp:3.3.1' + compile 'com.squareup.okhttp3:okhttp:3.4.2' testCompile 'junit:junit:4.12' testCompile 'org.mockito:mockito-core:1.10.19' - testCompile 'com.squareup.okhttp3:mockwebserver:3.3.1' + testCompile 'com.squareup.okhttp3:mockwebserver:3.4.2' } task sourcesJar(type: Jar, dependsOn: classes) { diff --git a/ok2curl/src/main/java/com/moczul/ok2curl/CurlBuilder.java b/ok2curl/src/main/java/com/moczul/ok2curl/CurlBuilder.java index 03d34f3..0cf3517 100644 --- a/ok2curl/src/main/java/com/moczul/ok2curl/CurlBuilder.java +++ b/ok2curl/src/main/java/com/moczul/ok2curl/CurlBuilder.java @@ -3,9 +3,8 @@ import java.io.IOException; import java.nio.charset.Charset; import java.util.ArrayList; -import java.util.HashMap; +import java.util.LinkedList; import java.util.List; -import java.util.Map; import okhttp3.Headers; import okhttp3.MediaType; @@ -28,7 +27,7 @@ public class CurlBuilder { private String method; private String contentType; private String body; - private Map headers = new HashMap<>(); + private List
headers = new LinkedList<>(); public CurlBuilder(Request request) { this(request, -1L); @@ -45,7 +44,7 @@ public CurlBuilder(Request request, long limit) { final Headers headers = request.headers(); for (int i = 0; i < headers.size(); i++) { - this.headers.put(headers.name(i), headers.value(i)); + this.headers.add(new Header(headers.name(i), headers.value(i))); } } @@ -92,8 +91,8 @@ public String build() { parts.add("curl"); parts.add(String.format(FORMAT_METHOD, method.toUpperCase())); - for (String key : headers.keySet()) { - final String headerPart = String.format(FORMAT_HEADER, key, headers.get(key)); + for (Header header : headers) { + final String headerPart = String.format(FORMAT_HEADER, header.name(), header.value()); parts.add(headerPart); } diff --git a/ok2curl/src/main/java/com/moczul/ok2curl/Header.java b/ok2curl/src/main/java/com/moczul/ok2curl/Header.java new file mode 100644 index 0000000..2b9a825 --- /dev/null +++ b/ok2curl/src/main/java/com/moczul/ok2curl/Header.java @@ -0,0 +1,39 @@ +package com.moczul.ok2curl; + +public class Header { + + private final String name; + private final String value; + + public Header(String name, String value) { + this.name = name; + this.value = value; + } + + public String name() { + return name; + } + + public String value() { + return value; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Header header = (Header) o; + + if (name != null ? !name.equals(header.name) : header.name != null) return false; + return value != null ? value.equals(header.value) : header.value == null; + + } + + @Override + public int hashCode() { + int result = name != null ? name.hashCode() : 0; + result = 31 * result + (value != null ? value.hashCode() : 0); + return result; + } +} diff --git a/ok2curl/src/test/java/com/moczul/ok2curl/CurlBuilderTest.java b/ok2curl/src/test/java/com/moczul/ok2curl/CurlBuilderTest.java index 4fc6991..868017b 100644 --- a/ok2curl/src/test/java/com/moczul/ok2curl/CurlBuilderTest.java +++ b/ok2curl/src/test/java/com/moczul/ok2curl/CurlBuilderTest.java @@ -68,6 +68,19 @@ public void postRequest_bodyWithNullMediaType() { assertEquals(expected, command); } + @Test + public void multipleHeadersWithTheSameName_shouldBeAddedToCurlCommand() { + final Request request = new Request.Builder() + .url("http://example.com/") + .addHeader("Cookie", "FIRST=foo") + .addHeader("Cookie", "SECOND=bar") + .build(); + + final String command = new CurlBuilder(request).build(); + + assertEquals("curl -X GET -H \"Cookie:FIRST=foo\" -H \"Cookie:SECOND=bar\" http://example.com/", command); + } + private RequestBody body() { return new FormBody.Builder().add("key1", "value1").build(); }