Skip to content

Commit be1ac67

Browse files
committed
rework CodewarsCli and RestApi
1 parent 811b08e commit be1ac67

File tree

5 files changed

+31
-42
lines changed

5 files changed

+31
-42
lines changed

codewars_chris-gw.iml

+14-11
Original file line numberDiff line numberDiff line change
@@ -7,40 +7,43 @@
77
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
88
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
99
<sourceFolder url="file://$MODULE_DIR$/target/generated-sources/annotations" isTestSource="false" generated="true" />
10+
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
1011
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
1112
<excludeFolder url="file://$MODULE_DIR$/build" />
1213
<excludeFolder url="file://$MODULE_DIR$/out" />
1314
<excludeFolder url="file://$MODULE_DIR$/target" />
1415
</content>
15-
<orderEntry type="jdk" jdkName="13" jdkType="JavaSDK" />
16+
<orderEntry type="inheritedJdk" />
1617
<orderEntry type="sourceFolder" forTests="false" />
1718
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
1819
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
1920
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.9" level="project" />
2021
<orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
2122
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.10" level="project" />
2223
<orderEntry type="library" name="Maven: org.mapstruct:mapstruct-processor:1.3.1.Final" level="project" />
23-
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-common:2.29.1" level="project" />
24+
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-common:2.34" level="project" />
2425
<orderEntry type="library" name="Maven: jakarta.ws.rs:jakarta.ws.rs-api:2.1.6" level="project" />
2526
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
2627
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:jakarta.inject:2.6.1" level="project" />
2728
<orderEntry type="library" name="Maven: org.glassfish.hk2:osgi-resource-locator:1.0.3" level="project" />
28-
<orderEntry type="library" name="Maven: org.glassfish.jersey.inject:jersey-hk2:2.29.1" level="project" />
29+
<orderEntry type="library" name="Maven: org.glassfish.jersey.inject:jersey-hk2:2.34" level="project" />
2930
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-locator:2.6.1" level="project" />
3031
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:aopalliance-repackaged:2.6.1" level="project" />
3132
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-api:2.6.1" level="project" />
3233
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-utils:2.6.1" level="project" />
33-
<orderEntry type="library" name="Maven: org.javassist:javassist:3.22.0-CR2" level="project" />
34-
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-client:2.29.1" level="project" />
35-
<orderEntry type="library" name="Maven: org.glassfish.jersey.media:jersey-media-json-jackson:2.29.1" level="project" />
36-
<orderEntry type="library" name="Maven: org.glassfish.jersey.ext:jersey-entity-filtering:2.29.1" level="project" />
37-
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.9" level="project" />
38-
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.9" level="project" />
39-
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.9.9" level="project" />
34+
<orderEntry type="library" name="Maven: org.javassist:javassist:3.25.0-GA" level="project" />
35+
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-client:2.34" level="project" />
36+
<orderEntry type="library" name="Maven: org.glassfish.jersey.media:jersey-media-json-jackson:2.34" level="project" />
37+
<orderEntry type="library" name="Maven: org.glassfish.jersey.ext:jersey-entity-filtering:2.34" level="project" />
38+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.12.2" level="project" />
39+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.12.2" level="project" />
40+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.12.2" level="project" />
41+
<orderEntry type="library" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.2" level="project" />
42+
<orderEntry type="library" name="Maven: jakarta.activation:jakarta.activation-api:1.2.1" level="project" />
4043
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.10.0" level="project" />
4144
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.10.0" level="project" />
4245
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.10.0" level="project" />
43-
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
46+
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13.1" level="project" />
4447
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
4548
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.13.2" level="project" />
4649
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:2.28.2" level="project" />

src/main/java/com/codewars/chrisgw/cli/CodewarsCli.java

+5-6
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66

77
import java.io.BufferedWriter;
88
import java.io.IOException;
9-
import java.nio.file.*;
10-
import java.util.Properties;
9+
import java.nio.file.Files;
10+
import java.nio.file.Path;
11+
import java.nio.file.Paths;
1112
import java.util.Scanner;
1213
import java.util.regex.Matcher;
1314
import java.util.regex.Pattern;
@@ -20,10 +21,8 @@ public class CodewarsCli {
2021
private static CodewarsRestApi codewarsRestApi;
2122

2223

23-
public static void main(String[] args) throws IOException {
24-
Properties properties = new Properties();
25-
properties.load(CodewarsRestApi.class.getResourceAsStream("/application.properties"));
26-
codewarsRestApi = new CodewarsRestApi(properties);
24+
public static void main(String[] args) {
25+
codewarsRestApi = new CodewarsRestApi();
2726

2827
Scanner sc = new Scanner(System.in);
2928
do {

src/main/java/com/codewars/chrisgw/restapi/CodewarsRestApi.java

+9-20
Original file line numberDiff line numberDiff line change
@@ -6,39 +6,36 @@
66
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
77
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
88

9-
import javax.ws.rs.client.*;
10-
import javax.ws.rs.core.HttpHeaders;
9+
import javax.ws.rs.client.Client;
10+
import javax.ws.rs.client.ClientBuilder;
11+
import javax.ws.rs.client.ClientResponseFilter;
12+
import javax.ws.rs.client.WebTarget;
1113
import javax.ws.rs.core.Response.Status;
1214
import javax.ws.rs.ext.ContextResolver;
1315
import javax.ws.rs.ext.Provider;
1416
import java.io.ByteArrayInputStream;
15-
import java.util.Properties;
1617

1718
import static java.util.Objects.requireNonNull;
1819
import static javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE;
1920

2021

2122
public class CodewarsRestApi {
2223

23-
public static final String CODEWARS_API_URL_PROPERTY = "codewars.apiUrl";
24-
public static final String CODEWARS_API_TOKEN_PROPERTY = "codewars.apiToken";
24+
public static final String CODEWARS_API_URL = "https://www.codewars.com/api/v1/";
2525

26-
private Properties properties;
2726
private Client client;
2827
private WebTarget codewarsRestApi;
2928

3029

31-
public CodewarsRestApi(Properties properties) {
32-
this(properties, ClientBuilder.newClient());
30+
public CodewarsRestApi() {
31+
this(ClientBuilder.newClient());
3332
}
3433

35-
public CodewarsRestApi(Properties properties, Client client) {
36-
this.properties = requireNonNull(properties);
34+
public CodewarsRestApi(Client client) {
3735
this.client = requireNonNull(client);
3836
this.client.register(ObjectMapperContextResolver.class);
39-
this.client.register(apiTokenAuthorizationHeaderFilter());
4037
this.client.register(handle404asNullResponseFilter());
41-
this.codewarsRestApi = client.target(properties.getProperty(CODEWARS_API_URL_PROPERTY));
38+
this.codewarsRestApi = client.target(CODEWARS_API_URL);
4239
}
4340

4441
private ClientResponseFilter handle404asNullResponseFilter() {
@@ -69,14 +66,6 @@ public CodeChallenge fetchCodeChallenge(String idOrSlug) {
6966
}
7067

7168

72-
private ClientRequestFilter apiTokenAuthorizationHeaderFilter() {
73-
return requestContext -> {
74-
String apiToken = properties.getProperty(CODEWARS_API_TOKEN_PROPERTY);
75-
requestContext.getHeaders().putSingle(HttpHeaders.AUTHORIZATION, apiToken);
76-
};
77-
}
78-
79-
8069
@Provider
8170
public static class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {
8271

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
codewars.apiUrl=https://www.codewars.com/api/v1/
2+
codewars.apiToken=

src/test/java/com/codewars/chrisgw/restapi/CodewarsRestApiTest.java

+1-5
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
import org.junit.Before;
66
import org.junit.Test;
77

8-
import java.util.Properties;
9-
108

119
public class CodewarsRestApiTest {
1210

@@ -15,9 +13,7 @@ public class CodewarsRestApiTest {
1513

1614
@Before
1715
public void setUp() throws Exception {
18-
Properties properties = new Properties();
19-
properties.load(CodewarsRestApi.class.getResourceAsStream("/application.properties"));
20-
codewarsRestApi = new CodewarsRestApi(properties);
16+
codewarsRestApi = new CodewarsRestApi();
2117
}
2218

2319

0 commit comments

Comments
 (0)