Skip to content

Commit 40b960d

Browse files
author
Jevgeni Koltšin
committed
api v2
1 parent aa518f1 commit 40b960d

54 files changed

Lines changed: 578 additions & 286 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ repositories {
3939

4040
dependencies {
4141
compile group: 'com.google.code.gson', name: 'gson', version: '2.2.4'
42-
compile group: 'com.amazonaws', name: 'aws-java-sdk-s3', version: '1.10.27'
4342
compile group: 'org.glassfish.jersey.core', name: 'jersey-client', version: '2.22.1'
4443
}
4544

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.creatubbles.api;
2+
3+
import java.lang.annotation.ElementType;
4+
import java.lang.annotation.Retention;
5+
import java.lang.annotation.RetentionPolicy;
6+
import java.lang.annotation.Target;
7+
8+
@Retention(RetentionPolicy.RUNTIME)
9+
@Target({ElementType.TYPE})
10+
public @interface APIVersion {
11+
int value() default 1;
12+
}

src/main/java/com/creatubbles/api/CreatubblesAPI.java

Lines changed: 53 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,33 @@
11
package com.creatubbles.api;
22

3+
import com.creatubbles.api.core.Gallery;
4+
import com.creatubbles.api.request.amazon.UploadS3ImageRequest;
35
import com.creatubbles.api.request.auth.OAuthAccessTokenRequest;
6+
import com.creatubbles.api.request.creation.CreateCreationRequest;
7+
import com.creatubbles.api.request.creation.CreationsUploadsRequest;
8+
import com.creatubbles.api.request.creation.GetCreationsRequest;
9+
import com.creatubbles.api.request.creator.GetCreatorsRequest;
10+
import com.creatubbles.api.request.user.UserProfileRequest;
411
import com.creatubbles.api.response.auth.OAuthAccessTokenResponse;
5-
import org.glassfish.jersey.client.ClientProperties;
6-
import org.glassfish.jersey.client.JerseyClient;
7-
import org.glassfish.jersey.client.JerseyClientBuilder;
8-
9-
import com.creatubbles.api.core.Gallery;
1012
import com.creatubbles.api.response.auth.SignUpResponse;
13+
import com.creatubbles.api.response.creation.CreateCreationResponse;
14+
import com.creatubbles.api.response.creation.CreationsUploadsResponse;
15+
import com.creatubbles.api.response.creation.GetCreationsResponse;
1116
import com.creatubbles.api.response.creator.CreateCreatorResponse;
17+
import com.creatubbles.api.response.creator.GetCreatorsResponse;
1218
import com.creatubbles.api.response.gallery.CreateUserGalleryResponse;
1319
import com.creatubbles.api.response.user.UserProfileResponse;
1420
import com.creatubbles.api.util.EndPoints;
1521
import com.google.gson.Gson;
1622
import com.google.gson.GsonBuilder;
23+
import org.glassfish.jersey.client.ClientProperties;
24+
import org.glassfish.jersey.client.JerseyClient;
25+
import org.glassfish.jersey.client.JerseyClientBuilder;
26+
27+
import java.io.File;
28+
import java.io.IOException;
29+
import java.nio.file.Files;
30+
1731

1832
public class CreatubblesAPI {
1933
public final static Gson GSON = new GsonBuilder()
@@ -23,6 +37,10 @@ public class CreatubblesAPI {
2337
.registerTypeAdapter(CreateUserGalleryResponse.class, new CreateUserGalleryResponse())
2438
.registerTypeAdapter(CreateUserGalleryResponse.class, new CreateUserGalleryResponse())
2539
.registerTypeAdapter(Gallery.class, new Gallery())
40+
.registerTypeAdapter(GetCreatorsResponse.class, new GetCreatorsResponse())
41+
.registerTypeAdapter(GetCreationsResponse.class, new GetCreationsResponse())
42+
.registerTypeAdapter(CreateCreationResponse.class, new CreateCreationResponse())
43+
.registerTypeAdapter(CreationsUploadsResponse.class, new CreationsUploadsResponse())
2644
.create();
2745

2846
public final static JerseyClient CLIENT = JerseyClientBuilder
@@ -41,11 +59,39 @@ public static void setStagingMode(boolean staging) {
4159
CreatubblesAPI.staging = staging;
4260
}
4361

44-
public static void main(String[] args) {
62+
public static void main(String[] args) throws IOException {
4563
CreatubblesAPI.setStagingMode(true);
4664
OAuthAccessTokenRequest request = new OAuthAccessTokenRequest("jevgeni.koltsin@gmail.com", "ccttbb");
4765
OAuthAccessTokenResponse response = request.execute().getResponse();
48-
System.out.println(response);
66+
String accessToken = response.access_token;
67+
System.out.println(accessToken);
68+
69+
UserProfileRequest userProfileRequest = new UserProfileRequest(accessToken);
70+
UserProfileResponse userProfileResponse = userProfileRequest.execute().getResponse();
71+
System.out.println(userProfileResponse.user.id);
72+
73+
GetCreatorsRequest getCreators = new GetCreatorsRequest(userProfileResponse.user.id, accessToken);
74+
GetCreatorsResponse getCreatorsResponse = getCreators.execute().getResponse();
75+
System.out.println(getCreatorsResponse.creators != null);
76+
77+
GetCreationsRequest getCreations = new GetCreationsRequest(userProfileResponse.user.id, accessToken);
78+
GetCreationsResponse getCreationsResponse = getCreations.execute().getResponse();
79+
System.out.println(getCreationsResponse.total_count);
80+
81+
CreateCreationRequest createCreation = new CreateCreationRequest(accessToken);
82+
CreateCreationResponse createCreationResponse = createCreation.execute().getResponse();
83+
System.out.println(createCreationResponse.creation.id);
84+
85+
CreationsUploadsRequest creationsUploads = new CreationsUploadsRequest(createCreationResponse.creation.id, accessToken);
86+
CreationsUploadsResponse creationsUploadsResponse = creationsUploads.execute().getResponse();
87+
System.out.println(creationsUploadsResponse.url);
88+
89+
File file = new File("C:/dev/1.png");
90+
byte[] data = Files.readAllBytes(file.toPath());
91+
String fileName = System.currentTimeMillis() + "creation.png";
92+
UploadS3ImageRequest uploadS3Image = new UploadS3ImageRequest(data, fileName, creationsUploadsResponse.url);
93+
uploadS3Image.execute().getResponse();
94+
System.out.println("-Finish-");
4995
}
5096

5197
}

src/main/java/com/creatubbles/api/core/Creation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.creatubbles.api.core;
22

33
public class Creation {
4-
public int id, user_id;
4+
public String id, user_id;
55
public String name, created_at;
66
public int created_at_month, created_at_year, comments_count, bubble_count, views_count;
77
public String last_bubbled_at, last_commented_at, last_submitted_at;

src/main/java/com/creatubbles/api/core/Creator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.util.List;
44

55
public class Creator {
6-
public int id;
6+
public String id;
77
public String name, created_at, avatar_url;
88
public int creator_user_id, birth_month, birth_year;
99
public String age;

src/main/java/com/creatubbles/api/core/CreatubblesRequest.java

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
import com.creatubbles.api.CreatubblesAPI;
44
import com.creatubbles.api.util.HttpMethod;
55
import org.glassfish.jersey.client.JerseyWebTarget;
6-
import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
76

87
import javax.ws.rs.client.Entity;
98
import javax.ws.rs.client.Invocation;
10-
import javax.ws.rs.core.MediaType;
119
import javax.ws.rs.core.Response;
1210
import java.util.HashMap;
1311
import java.util.Map;
@@ -22,7 +20,9 @@ public abstract class CreatubblesRequest<T extends CreatubblesResponse> {
2220
private Response response;
2321
private Future<Response> futureResponse;
2422
private T responseCache;
23+
private String accessToken;
2524
private static final String EMPTY_RESPONSE = "{}";
25+
private static final String APPLICATION_VND_API_JSON = "application/vnd.api+json";
2626

2727
public CreatubblesRequest(String endPoint, HttpMethod httpMethod) {
2828
this(endPoint, httpMethod, null, null);
@@ -44,14 +44,11 @@ public CreatubblesRequest(String endPoint, HttpMethod httpMethod, String accessT
4444
} else {
4545
this.urlParameters = new HashMap<String, String>();
4646
}
47-
if (accessToken != null) {
48-
this.urlParameters.put("access_token", accessToken);
49-
}
47+
this.accessToken = accessToken;
5048
}
5149

52-
public CreatubblesRequest<T> setAccessToken(String accessToken) {
53-
this.urlParameters.put("access_token", accessToken);
54-
return this;
50+
public void setAccessToken(String accessToken) {
51+
this.accessToken = accessToken;
5552
}
5653

5754
public String getEndPoint() {
@@ -180,27 +177,30 @@ public CreatubblesRequest<T> execute() {
180177
webTarget = webTarget.queryParam(paramKey, paramValue);
181178
}
182179
}
183-
HttpAuthenticationFeature basicAuth = HttpAuthenticationFeature.basic("c", "c");
184-
webTarget.register(basicAuth);
180+
//TODO: return if needed + check if staging
181+
//HttpAuthenticationFeature basicAuth = HttpAuthenticationFeature.basic("c", "c");
182+
//webTarget.register(basicAuth);
185183

186184
Invocation.Builder invocationBuilder = webTarget
187-
.request(MediaType.APPLICATION_JSON)
188-
.accept(MediaType.APPLICATION_JSON);
185+
.request(APPLICATION_VND_API_JSON)
186+
.accept(APPLICATION_VND_API_JSON);
189187

190188
if (acceptLanguage != null && acceptLanguage.length() == 2) {
191189
invocationBuilder.header("Accept-Language", acceptLanguage.toLowerCase());
192190
}
193-
191+
if (accessToken != null && !accessToken.isEmpty()) {
192+
invocationBuilder.header("Authorization", "Bearer " + accessToken);
193+
}
194194
if (xSource != null && !xSource.isEmpty()) {
195195
invocationBuilder.header("X-Source", xSource.toLowerCase());
196196
}
197197

198198
if (httpMethod == HttpMethod.GET) {
199199
response = invocationBuilder.get();
200200
} else if (httpMethod == HttpMethod.POST) {
201-
response = invocationBuilder.post(Entity.entity(data, MediaType.APPLICATION_JSON));
201+
response = invocationBuilder.post(Entity.entity(data, APPLICATION_VND_API_JSON));
202202
} else if (httpMethod == HttpMethod.PUT) {
203-
response = invocationBuilder.put(Entity.entity(data, MediaType.APPLICATION_JSON));
203+
response = invocationBuilder.put(Entity.entity(data, APPLICATION_VND_API_JSON));
204204
}
205205

206206
return this;
@@ -219,23 +219,25 @@ public CreatubblesRequest<T> async() {
219219
}
220220

221221
Invocation.Builder invocationBuilder = webTarget
222-
.request(MediaType.APPLICATION_JSON)
223-
.accept(MediaType.APPLICATION_JSON);
222+
.request(APPLICATION_VND_API_JSON)
223+
.accept(APPLICATION_VND_API_JSON);
224224

225225
if (acceptLanguage != null && acceptLanguage.length() == 2) {
226226
invocationBuilder.header("Accept-Language", acceptLanguage.toLowerCase());
227227
}
228-
228+
if (accessToken != null && !accessToken.isEmpty()) {
229+
invocationBuilder.header("Authorization", "Bearer " + accessToken);
230+
}
229231
if (xSource != null && !xSource.isEmpty()) {
230232
invocationBuilder.header("X-Source", xSource.toLowerCase());
231233
}
232234

233235
if (httpMethod == HttpMethod.GET) {
234236
futureResponse = invocationBuilder.async().get();
235237
} else if (httpMethod == HttpMethod.POST) {
236-
futureResponse = invocationBuilder.async().post(Entity.entity(data, MediaType.APPLICATION_JSON));
238+
futureResponse = invocationBuilder.async().post(Entity.entity(data, APPLICATION_VND_API_JSON));
237239
} else if (httpMethod == HttpMethod.PUT) {
238-
futureResponse = invocationBuilder.async().put(Entity.entity(data, MediaType.APPLICATION_JSON));
240+
futureResponse = invocationBuilder.async().put(Entity.entity(data, APPLICATION_VND_API_JSON));
239241
}
240242

241243
return this;

src/main/java/com/creatubbles/api/core/Image.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44

55
public class Image {
66
public String url;
7-
public Link full_view, list_view_retina, list_view, matrix_view_retina, matrix_view, gallery_mobile, explore_mobile, share;
7+
public Links links;
88
public List<Creator> creators;
99
public String store_dir;
10+
11+
public class Links {
12+
public String full_view, list_view_retina, list_view, matrix_view_retina, matrix_view, gallery_mobile, explore_mobile, share;
13+
}
1014
}

src/main/java/com/creatubbles/api/core/Link.java

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/main/java/com/creatubbles/api/core/User.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.creatubbles.api.core;
22

33
public class User {
4-
public int id;
4+
public String id;
55
public String username, email, country, role;
66
public boolean is_teacher, is_loggable, is_site_admin, newsletter;
77
public int signed_up_as;

src/main/java/com/creatubbles/api/request/amazon/GetAmazonTokenRequest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.creatubbles.api.request.amazon;
22

3+
import com.creatubbles.api.APIVersion;
34
import com.creatubbles.api.core.CreatubblesRequest;
45
import com.creatubbles.api.response.amazon.GetAmazonTokenResponse;
56
import com.creatubbles.api.util.EndPoints;
67
import com.creatubbles.api.util.HttpMethod;
78

9+
@APIVersion(1)
810
public class GetAmazonTokenRequest extends CreatubblesRequest<GetAmazonTokenResponse> {
911

1012
public GetAmazonTokenRequest(String accessToken) {

0 commit comments

Comments
 (0)