Skip to content

Commit

Permalink
Merge pull request #27 from mrmike/issue/multiple-headers-name
Browse files Browse the repository at this point in the history
Support multiple headers
  • Loading branch information
mrmike committed Nov 15, 2016
2 parents c01db24 + c195260 commit 17a1e03
Show file tree
Hide file tree
Showing 9 changed files with 70 additions and 13 deletions.
2 changes: 2 additions & 0 deletions .travis.yml
@@ -1,4 +1,6 @@
language: android
jdk:
- oraclejdk8
android:
components:
- build-tools-23.0.1
Expand Down
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -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'
}
```

Expand Down
6 changes: 5 additions & 1 deletion build.gradle
Expand Up @@ -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'
}
}
Expand All @@ -17,3 +17,7 @@ allprojects {
task clean(type: Delete) {
delete rootProject.buildDir
}

task wrapper(type: Wrapper) {
gradleVersion = '3.2'
}
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
4 changes: 2 additions & 2 deletions 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
6 changes: 3 additions & 3 deletions ok2curl/build.gradle
Expand Up @@ -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) {
Expand Down
11 changes: 5 additions & 6 deletions ok2curl/src/main/java/com/moczul/ok2curl/CurlBuilder.java
Expand Up @@ -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;
Expand All @@ -28,7 +27,7 @@ public class CurlBuilder {
private String method;
private String contentType;
private String body;
private Map<String, String> headers = new HashMap<>();
private List<Header> headers = new LinkedList<>();

public CurlBuilder(Request request) {
this(request, -1L);
Expand All @@ -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)));
}
}

Expand Down Expand Up @@ -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);
}

Expand Down
39 changes: 39 additions & 0 deletions 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;
}
}
13 changes: 13 additions & 0 deletions ok2curl/src/test/java/com/moczul/ok2curl/CurlBuilderTest.java
Expand Up @@ -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();
}
Expand Down

0 comments on commit 17a1e03

Please sign in to comment.