Skip to content

Commit 4dcb06f

Browse files
committed
Bug Fix & improvements
- Fix for issue n° 2 - Test extension & refactoring
1 parent dd5604a commit 4dcb06f

29 files changed

+690
-370
lines changed

pom.xml

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<connection>scm:git:git@github.com:ipdata/java.git</connection>
2424
<developerConnection>scm:git:git@github.com:ipdata/java.git</developerConnection>
2525
<url>https://github.com/ipdata/java</url>
26-
<tag>ipdata-java-client-0.1.0</tag>
26+
<tag>ipdata-java-0.1.1</tag>
2727
</scm>
2828
<distributionManagement>
2929
<repository>
@@ -36,22 +36,22 @@
3636
</snapshotRepository>
3737
</distributionManagement>
3838
<properties>
39-
<sonar.projectName>ipdata-java-client</sonar.projectName>
40-
<version.build.jacoco>0.8.4</version.build.jacoco>
41-
<version.build.sonar>3.7.0.1746</version.build.sonar>
4239
<maven.compiler.source>6</maven.compiler.source>
40+
<maven.compiler.target>6</maven.compiler.target>
41+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
42+
<sonar.coverage.jacoco.xmlReportPaths>${project.build.directory}/site/code-coverage/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
4343
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
44-
<sonar.projectVersion>${project.version}</sonar.projectVersion>
44+
<sonar.links.homepage>https://github.com/ipdata/java</sonar.links.homepage>
45+
<sonar.links.issue>https://github.com/ipdata/java</sonar.links.issue>
46+
<sonar.links.scm>https://github.com/ipdata/java</sonar.links.scm>
4547
<sonar.organization>yassine-github</sonar.organization>
46-
<maven.compiler.target>6</maven.compiler.target>
4748
<sonar.projectKey>yassine_ipdata-java-client</sonar.projectKey>
49+
<sonar.projectName>ipdata-java-client</sonar.projectName>
50+
<sonar.projectVersion>${project.version}</sonar.projectVersion>
51+
<version.build.jacoco>0.8.4</version.build.jacoco>
52+
<version.build.sonar>3.7.0.1746</version.build.sonar>
4853
<version.build.surefire>3.0.0-M3</version.build.surefire>
49-
<sonar.links.issue>https://github.com/yassine/ipdata-java-client</sonar.links.issue>
5054
<version.client.feign>9.7.0</version.client.feign>
51-
<sonar.links.scm>https://github.com/yassine/ipdata-java-client</sonar.links.scm>
52-
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
53-
<sonar.links.homepage>https://github.com/yassine/ipdata-java-client</sonar.links.homepage>
54-
<sonar.coverage.jacoco.xmlReportPaths>${project.build.directory}/site/code-coverage/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
5555
</properties>
5656
<dependencies>
5757
<dependency>
@@ -102,9 +102,9 @@
102102
<scope>test</scope>
103103
</dependency>
104104
<dependency>
105-
<groupId>org.skyscreamer</groupId>
106-
<artifactId>jsonassert</artifactId>
107-
<version>1.5.0</version>
105+
<groupId>net.javacrumbs.json-unit</groupId>
106+
<artifactId>json-unit</artifactId>
107+
<version>2.17.0</version>
108108
<scope>test</scope>
109109
</dependency>
110110
</dependencies>

src/main/java/io/ipdata/client/Ipdata.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
import org.slf4j.Logger;
1515

1616
@UtilityClass
17-
public final class Ipdata {
17+
public class Ipdata {
1818

19-
public static Ipdata.Builder builder() {
19+
public Ipdata.Builder builder() {
2020
return new Builder();
2121
}
2222

@@ -53,10 +53,11 @@ public static class Builder {
5353

5454
/**
5555
* Overrides current cache config with null (no caching).
56+
*
5657
* @return this
5758
*/
58-
public Builder noCache(){
59-
this .cacheConfig = null;
59+
public Builder noCache() {
60+
this.cacheConfig = null;
6061
return this;
6162
}
6263

src/main/java/io/ipdata/client/model/AsnModel.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,13 @@ public class AsnModel {
1010
private String name;
1111
private String domain;
1212
private String route;
13+
private String type;
14+
15+
/**
16+
* Deprecated
17+
*
18+
* @deprecated : See: https://github.com/ipdata/java/issues/2
19+
*/
20+
@Deprecated
1321
private String isp;
1422
}

src/main/java/io/ipdata/client/model/IpdataModel.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package io.ipdata.client.model;
22

33
import com.fasterxml.jackson.annotation.JsonProperty;
4-
import java.util.List;
54
import lombok.AccessLevel;
65
import lombok.Getter;
76
import lombok.Setter;
87
import lombok.ToString;
98
import lombok.experimental.Accessors;
109

10+
import java.util.List;
11+
1112
@Setter(AccessLevel.PACKAGE)
1213
@ToString
1314
@Getter
@@ -17,11 +18,13 @@ public class IpdataModel {
1718
@JsonProperty("is_eu")
1819
private boolean eu;
1920
private String city;
20-
private String organization;
21+
private String organisation;
22+
2123
private String region;
2224
private String regionCode;
2325
private String countryName;
2426
private String countryCode;
27+
private String continentName;
2528
private String continentCode;
2629
private double latitude;
2730
private double longitude;
@@ -37,7 +40,14 @@ public class IpdataModel {
3740
private TimeZone timeZone;
3841
private ThreatModel threat;
3942
//meta
40-
private int count;
43+
private String count;
44+
45+
/**
46+
* Rely on organisation field instead.
47+
* @deprecated Use organisation instead
48+
*/
49+
@Deprecated
50+
private String organization;
4151

4252
public boolean isEu() {
4353
return eu;

src/main/java/io/ipdata/client/model/Language.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ public class Language {
1010
private String name;
1111
@JsonProperty("native")
1212
private String nativeName;
13-
private boolean rtl;
13+
private int rtl;
1414
}

src/main/java/io/ipdata/client/model/TimeZone.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.ipdata.client.model;
22

3+
import com.fasterxml.jackson.annotation.JsonProperty;
34
import lombok.Getter;
45
import lombok.ToString;
56
import lombok.experimental.Accessors;
@@ -10,6 +11,7 @@ public class TimeZone {
1011
private String name;
1112
private String abbr;
1213
private String offset;
13-
private String isDst;
14-
private String currencyTime;
14+
@JsonProperty("is_dst")
15+
private boolean dst;
16+
private String currentTime;
1517
}

src/main/java/io/ipdata/client/service/ApiErrorDecoder.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@
77
import io.ipdata.client.error.RateLimitException;
88
import io.ipdata.client.error.RemoteIpdataException;
99
import io.ipdata.client.model.Error;
10-
import java.io.IOException;
11-
import java.net.URL;
1210
import lombok.RequiredArgsConstructor;
1311
import lombok.extern.slf4j.Slf4j;
1412
import org.slf4j.Logger;
1513

16-
@RequiredArgsConstructor @Slf4j
14+
import java.io.IOException;
15+
import java.net.URL;
16+
17+
@RequiredArgsConstructor
18+
@Slf4j
1719
public class ApiErrorDecoder implements ErrorDecoder {
1820
private static final int RATE_LIMIT_STATUS = 403;
1921
private final ObjectMapper mapper;

src/main/java/io/ipdata/client/service/ApiKeyRequestInterceptor.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,34 @@
33
import com.google.common.io.CharStreams;
44
import feign.RequestInterceptor;
55
import feign.RequestTemplate;
6-
import java.io.InputStreamReader;
76
import lombok.RequiredArgsConstructor;
87
import lombok.extern.slf4j.Slf4j;
98

10-
@RequiredArgsConstructor @Slf4j
9+
import java.io.InputStreamReader;
10+
11+
@RequiredArgsConstructor
12+
@Slf4j
1113
class ApiKeyRequestInterceptor implements RequestInterceptor {
1214

1315
private static final String API_KEY_PARAM = "api-key";
1416
private static final String ACCEPT_HEADER = "Accept";
15-
private static final String JSON_CONTENT = "application/json";
17+
private static final String JSON_CONTENT = "application/json";
1618
private static final String API_CLIENT_HEADER = "User-Agent";
1719
private static final String API_CLIENT_VALUE;
20+
1821
static {
1922
String version;
2023
try {
2124
version = CharStreams.toString(new InputStreamReader(ApiKeyRequestInterceptor.class
22-
.getResourceAsStream("/io/ipdata/client/VERSION"))).replaceAll("\\n","");
23-
version = String.format("io.ipdata.client.java.%s", version);
24-
}catch (Exception e){
25+
.getResourceAsStream("/io/ipdata/client/VERSION"))).replaceAll("\\n", "");
26+
version = String.format("io.ipdata.client.java.%s", version);
27+
} catch (Exception e) {
2528
log.error(e.getMessage(), e);
26-
version = "io.ipdata.client.java.UNKNOWN";
29+
version = "io.ipdata.client.java.UNKNOWN";
2730
}
2831
API_CLIENT_VALUE = version;
2932
}
33+
3034
private final String key;
3135

3236
@Override

src/main/java/io/ipdata/client/service/CacheConfig.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package io.ipdata.client.service;
22

3-
import java.util.concurrent.TimeUnit;
43
import lombok.Builder;
54
import lombok.Getter;
65
import lombok.RequiredArgsConstructor;
76
import lombok.experimental.Accessors;
87

8+
import java.util.concurrent.TimeUnit;
9+
910
@RequiredArgsConstructor
1011
@Builder
1112
@Getter

src/main/java/io/ipdata/client/service/CachingInternalClient.java

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,33 @@
11
package io.ipdata.client.service;
22

3-
import com.google.common.annotations.VisibleForTesting;
43
import com.google.common.cache.LoadingCache;
54
import io.ipdata.client.error.IpdataException;
6-
import io.ipdata.client.model.AsnModel;
7-
import io.ipdata.client.model.Currency;
8-
import io.ipdata.client.model.IpdataModel;
9-
import io.ipdata.client.model.ThreatModel;
10-
import io.ipdata.client.model.TimeZone;
5+
import io.ipdata.client.model.*;
6+
import lombok.Builder;
7+
import lombok.experimental.Delegate;
8+
119
import java.util.List;
1210
import java.util.concurrent.ExecutionException;
1311
import java.util.concurrent.TimeUnit;
14-
import lombok.Builder;
15-
import lombok.experimental.Delegate;
1612

1713
@Builder
18-
@VisibleForTesting
19-
20-
public class CachingInternalClient implements IpdataInternalClient, IpdataInternalSingleFieldClient {
14+
class CachingInternalClient implements IpdataInternalClient, IpdataInternalSingleFieldClient {
2115

2216
@Builder.Default
23-
@SuppressWarnings("UnusedAssignment") //required by lombok builder
24-
private int expiry = 4;
17+
private final int expiry = 4;
2518
@Builder.Default
26-
@SuppressWarnings("UnusedAssignment") //required by lombok builder
27-
private TimeUnit unit = TimeUnit.HOURS;
19+
private final TimeUnit unit = TimeUnit.HOURS;
2820
@Builder.Default
29-
@SuppressWarnings("UnusedAssignment") //required by lombok builder
30-
private Long maxSize = Long.MAX_VALUE;
31-
private IpdataInternalClient ipdataInternalClient;
32-
private IpdataInternalSingleFieldClient ipdataInternalSingleFieldClient;
33-
34-
private LoadingCache<String, IpdataModel> ipdataCache;
35-
private LoadingCache<HashPair<String, String>, IpdataModel> fieldsCache;
36-
private LoadingCache<String, AsnModel> asnCache;
37-
private LoadingCache<String, TimeZone> tzCache;
38-
private LoadingCache<String, Currency> currencyCache;
39-
private LoadingCache<String, ThreatModel> threatCache;
21+
private final Long maxSize = Long.MAX_VALUE;
22+
private final IpdataInternalClient ipdataInternalClient;
23+
private final IpdataInternalSingleFieldClient ipdataInternalSingleFieldClient;
24+
25+
private final LoadingCache<String, IpdataModel> ipdataCache;
26+
private final LoadingCache<HashPair<String, String>, IpdataModel> fieldsCache;
27+
private final LoadingCache<String, AsnModel> asnCache;
28+
private final LoadingCache<String, TimeZone> tzCache;
29+
private final LoadingCache<String, Currency> currencyCache;
30+
private final LoadingCache<String, ThreatModel> threatCache;
4031

4132
@Override
4233
public IpdataModel getFields(String ip, String fields) throws IpdataException {

0 commit comments

Comments
 (0)