Skip to content

Commit ee92c67

Browse files
❇️ tokens added
1 parent de1694e commit ee92c67

File tree

7 files changed

+246
-146
lines changed

7 files changed

+246
-146
lines changed

src/main/java/com/contentstack/cms/stack/Extensions.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,10 @@ public Call<ResponseBody> get(@NotNull String customFieldUid, Map<String, Object
8787
* @param body
8888
* In the ‘Body’ section, you need to provide the following ‘Body’ parameters under ‘form-data’
8989
* <pre>
90-
* Use like: Map<String, RequestBody> params = new HashMap<>();
91-
* //prepare RequestBody RequestBody someDataBody = ....;
92-
* //add it Map object params.put("DYNAMIC_PARAM_NAME", someDataBody);
93-
* </pre>
90+
* Use like: Map<String, RequestBody> params = new HashMap<>();
91+
* prepare RequestBody RequestBody someDataBody = ....;
92+
* add it Map object params.put("DYNAMIC_PARAM_NAME", someDataBody);
93+
* </pre>
9494
* @return Call
9595
*/
9696
public Call<ResponseBody> uploadCustomField(Map<String, RequestBody> body, Map<String, Object> queryParam) {
@@ -118,10 +118,10 @@ public Call<ResponseBody> uploadCustomField(Map<String, RequestBody> body, Map<S
118118
* @param body
119119
* In the ‘Body’ section, you need to provide the following ‘Body’ parameters under ‘form-data’
120120
* <pre>
121-
* Use like: Map<String, RequestBody> params = new HashMap<>();
122-
* //prepare RequestBody RequestBody someDataBody = ....;
123-
* //add it Map object params.put("DYNAMIC_PARAM_NAME", someDataBody);
124-
* </pre>
121+
* Use like: Map<String, RequestBody> params = new HashMap<>();
122+
* //prepare RequestBody RequestBody someDataBody = ....;
123+
* //add it Map object params.put("DYNAMIC_PARAM_NAME", someDataBody);
124+
* </pre>
125125
* @return Call
126126
*/
127127
public Call<ResponseBody> uploadCustomField(Map<String, Object> queryParam, JSONObject body) {

src/main/java/com/contentstack/cms/stack/ExtensionsService.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.contentstack.cms.stack;
22

3-
import okhttp3.MultipartBody;
43
import okhttp3.RequestBody;
54
import okhttp3.ResponseBody;
65
import org.json.simple.JSONObject;

src/main/java/com/contentstack/cms/stack/Stack.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,23 @@ public Extensions extensions() {
185185
return new Extensions(client, this.headers);
186186
}
187187

188+
189+
/**
190+
* Contentstack provides different types of tokens to authorize API requests. You can use Delivery Tokens to
191+
* authenticate Content Delivery API (CDA) requests and retrieve the published content of an environment. To
192+
* authenticate Content Management API (CMA) requests over your stack content, you can use Management Tokens.
193+
* <p>
194+
* Delivery tokens provide read-only access to the associated environments, while management tokens provide
195+
* read-write access to the content of your stack. Use these tokens along with the stack API key to make authorized
196+
* API requests
197+
* <p>
198+
*
199+
* @return Tokens
200+
*/
201+
public Tokens tokens() {
202+
return new Tokens(client, this.headers);
203+
}
204+
188205
/**
189206
* <b>Get a single stack</b>
190207
* <br>
Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,56 @@
1-
package com.contentstack.cms.stack;public interface TokenService {
1+
package com.contentstack.cms.stack;
2+
3+
import okhttp3.ResponseBody;
4+
import org.json.simple.JSONObject;
5+
import retrofit2.Call;
6+
import retrofit2.http.*;
7+
8+
import java.util.Map;
9+
10+
public interface TokenService {
11+
12+
// Delivery Tokens
13+
@GET("delivery_tokens")
14+
Call<ResponseBody> getDeliveryToken(@HeaderMap Map<String, Object> headers);
15+
16+
@GET("delivery_tokens/{token_uid}")
17+
Call<ResponseBody> getDeliveryToken(@HeaderMap Map<String, Object> headers,
18+
@Path("token_uid") String tokenUid);
19+
20+
@POST("delivery_tokens")
21+
Call<ResponseBody> createDeliveryToken(@HeaderMap Map<String, Object> headers,
22+
@Body JSONObject body);
23+
24+
@PUT("delivery_tokens/{token_uid}")
25+
Call<ResponseBody> updateDeliveryToken(@HeaderMap Map<String, Object> headers,
26+
@Path("token_uid") String tokenUid,
27+
@Body JSONObject body);
28+
29+
@DELETE("delivery_tokens/{token_uid}")
30+
Call<ResponseBody> deleteDeliveryToken(@HeaderMap Map<String, Object> headers,
31+
@Path("token_uid") String tokenUid,
32+
@Query("force") Boolean force);
33+
34+
35+
// Management Tokens
36+
@GET("management_tokens")
37+
Call<ResponseBody> getManagementToken(@HeaderMap Map<String, Object> headers);
38+
39+
@GET("management_tokens/{token_uid}")
40+
Call<ResponseBody> getManagementToken(@HeaderMap Map<String, Object> headers,
41+
@Path("token_uid") String tokenUid);
42+
43+
@POST("management_tokens")
44+
Call<ResponseBody> createManagementToken(@HeaderMap Map<String, Object> headers,
45+
@Body JSONObject body);
46+
47+
48+
@POST("management_tokens/{token_uid}")
49+
Call<ResponseBody> updateManagementToken(@HeaderMap Map<String, Object> headers,
50+
@Path("token_uid") String tokenUid, @Body JSONObject body);
51+
52+
@DELETE("management_tokens/{token_uid}")
53+
Call<ResponseBody> deleteManagementToken(@HeaderMap Map<String, Object> headers,
54+
@Path("token_uid") String tokenUid);
55+
256
}
Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,77 @@
1-
package com.contentstack.cms.stack;public class Tokens {
1+
package com.contentstack.cms.stack;
2+
3+
import okhttp3.ResponseBody;
4+
import org.jetbrains.annotations.NotNull;
5+
import org.json.simple.JSONObject;
6+
import retrofit2.Call;
7+
import retrofit2.Retrofit;
8+
9+
import java.util.HashMap;
10+
11+
public class Tokens {
12+
13+
14+
protected final TokenService service;
15+
protected HashMap<String, Object> headers;
16+
protected HashMap<String, Object> params;
17+
18+
protected Tokens(Retrofit retrofit, HashMap<String, Object> stackHeaders) {
19+
this.headers = new HashMap<>();
20+
this.params = new HashMap<>();
21+
this.headers.putAll(stackHeaders);
22+
this.service = retrofit.create(TokenService.class);
23+
}
24+
25+
public Tokens addHeader(@NotNull String key, @NotNull String value) {
26+
this.headers.put(key, value);
27+
return this;
28+
}
29+
30+
// Delivery Tokens
31+
public Call<ResponseBody> getDeliveryTokens() {
32+
return this.service.getDeliveryToken(this.headers);
33+
}
34+
35+
public Call<ResponseBody> getDeliveryToken(@NotNull String tokenUid) {
36+
return this.service.getDeliveryToken(this.headers, tokenUid);
37+
}
38+
39+
public Call<ResponseBody> createDeliveryToken(@NotNull JSONObject requestBody) {
40+
return this.service.createDeliveryToken(this.headers, requestBody);
41+
}
42+
43+
public Call<ResponseBody> updateDeliveryToken(@NotNull String tokenUid, @NotNull JSONObject requestBody) {
44+
return this.service.updateDeliveryToken(this.headers, tokenUid, requestBody);
45+
}
46+
47+
public Call<ResponseBody> deleteDeliveryToken(@NotNull String tokenUid) {
48+
return this.service.deleteDeliveryToken(this.headers, tokenUid, false);
49+
}
50+
51+
public Call<ResponseBody> deleteDeliveryToken(@NotNull String tokenUid, @NotNull Boolean isForce) {
52+
return this.service.deleteDeliveryToken(this.headers, tokenUid, isForce);
53+
}
54+
55+
56+
// Management Tokens
57+
public Call<ResponseBody> getManagementTokens() {
58+
return this.service.getManagementToken(this.headers);
59+
}
60+
61+
public Call<ResponseBody> getManagementToken(@NotNull String tokenUid) {
62+
return this.service.getManagementToken(this.headers, tokenUid);
63+
}
64+
65+
public Call<ResponseBody> createManagementToken(@NotNull JSONObject requestBody) {
66+
return this.service.createManagementToken(this.headers, requestBody);
67+
}
68+
69+
public Call<ResponseBody> updateManagementToken(@NotNull String tokenUid, @NotNull JSONObject requestBody) {
70+
return this.service.updateManagementToken(this.headers, tokenUid, requestBody);
71+
}
72+
73+
public Call<ResponseBody> deleteManagementToken(@NotNull String tokenUid) {
74+
return this.service.deleteManagementToken(this.headers, tokenUid);
75+
}
76+
277
}

src/test/java/com/contentstack/cms/stack/ExtensionAPITest.java

Lines changed: 28 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,21 @@
66
import okhttp3.MediaType;
77
import okhttp3.Request;
88
import okhttp3.RequestBody;
9+
import okhttp3.ResponseBody;
910
import okio.BufferedSink;
1011
import org.json.simple.JSONObject;
1112
import org.junit.jupiter.api.Assertions;
1213
import org.junit.jupiter.api.BeforeAll;
1314
import org.junit.jupiter.api.Test;
15+
import retrofit2.Response;
1416

17+
import java.io.IOException;
1518
import java.util.ArrayList;
1619
import java.util.Arrays;
1720
import java.util.HashMap;
1821
import java.util.Map;
1922

20-
class ExtensionUnitTest {
23+
class ExtensionAPITest {
2124

2225
protected static String AUTHTOKEN = Dotenv.load().get("authToken");
2326
protected static String API_KEY = Dotenv.load().get("api_key");
@@ -35,43 +38,24 @@ static void setup() {
3538
}
3639

3740
@Test
38-
void extensionGetAll() {
41+
void extensionGetAll() throws IOException {
3942
Map<String, Object> body = new HashMap<>();
4043
body.put("keyForSomething", "valueForSomething");
41-
Request request = extension.getAll("\"type\":\"field\"", false).request();
42-
Assertions.assertEquals(3, request.headers().names().size());
43-
Assertions.assertEquals("GET", request.method());
44-
Assertions.assertTrue(request.url().isHttps());
45-
Assertions.assertEquals("api.contentstack.io", request.url().host());
46-
Assertions.assertEquals(2, request.url().pathSegments().size());
47-
Assertions.assertEquals("extensions", request.url().pathSegments().get(1));
48-
Assertions.assertEquals("v3", request.url().pathSegments().get(0));
49-
Assertions.assertNotNull(request.url().encodedQuery());
50-
Assertions.assertEquals(
51-
"https://api.contentstack.io/v3/extensions?query=%22type%22%3A%22field%22&include_branch=false",
52-
request.url().toString());
44+
Response<ResponseBody> response = extension.getAll("\"type\":\"field\"", false).execute();
45+
Assertions.assertTrue(response.isSuccessful());
5346
}
5447

5548
@Test
56-
void getSingleWithUid() {
49+
void getSingleWithUid() throws IOException {
5750
Map<String, Object> queryParam = new HashMap<>();
5851
queryParam.put("include_count", false);
5952
queryParam.put("include_branch", false);
60-
Request request = extension.get(_uid, queryParam).request();
61-
Assertions.assertEquals(2, request.headers().names().size());
62-
Assertions.assertEquals("GET", request.method());
63-
Assertions.assertTrue(request.url().isHttps());
64-
Assertions.assertEquals("api.contentstack.io", request.url().host());
65-
Assertions.assertEquals(3, request.url().pathSegments().size());
66-
Assertions.assertEquals("extensions", request.url().pathSegments().get(1));
67-
Assertions.assertEquals("include_count=false&include_branch=false", request.url().encodedQuery());
68-
Assertions.assertEquals(
69-
"https://api.contentstack.io/v3/extensions/" + _uid + "?include_count=false&include_branch=false",
70-
request.url().toString());
53+
Response<ResponseBody> response = extension.get(_uid, queryParam).execute();
54+
Assertions.assertTrue(response.isSuccessful());
7155
}
7256

7357
@Test
74-
void extensionUpdate() {
58+
void extensionUpdate() throws IOException {
7559
Map<String, Object> queryParam = new HashMap<>();
7660
queryParam.put("include_count", false);
7761
queryParam.put("include_branch", false);
@@ -84,51 +68,26 @@ void extensionUpdate() {
8468
innerBody.put("src", "Enter either the source code");
8569
body.put("extension", innerBody);
8670

87-
Request request = extension.update(_uid, queryParam, body).request();
88-
Assertions.assertEquals(2, request.headers().names().size());
89-
Assertions.assertEquals("PUT", request.method());
90-
Assertions.assertTrue(request.url().isHttps());
91-
Assertions.assertEquals("api.contentstack.io", request.url().host());
92-
Assertions.assertEquals(3, request.url().pathSegments().size());
93-
Assertions.assertEquals("extensions", request.url().pathSegments().get(1));
94-
Assertions.assertNotNull(request.body());
95-
Assertions.assertEquals("include_count=false&include_branch=false", request.url().encodedQuery());
96-
Assertions.assertEquals(
97-
"https://api.contentstack.io/v3/extensions/" + _uid + "?include_count=false&include_branch=false",
98-
request.url().toString());
71+
Response<ResponseBody> response = extension.update(_uid, queryParam, body).execute();
72+
Assertions.assertTrue(response.isSuccessful());
9973
}
10074

10175
@Test
102-
void extensionDelete() {
103-
Request request = extension.delete(_uid).request();
104-
Assertions.assertEquals(2, request.headers().names().size());
105-
Assertions.assertEquals("DELETE", request.method());
106-
Assertions.assertTrue(request.url().isHttps());
107-
Assertions.assertEquals("api.contentstack.io", request.url().host());
108-
Assertions.assertEquals(3, request.url().pathSegments().size());
109-
Assertions.assertEquals("extensions", request.url().pathSegments().get(1));
110-
Assertions.assertNull(request.url().encodedQuery());
111-
Assertions.assertEquals("https://api.contentstack.io/v3/extensions/" + _uid, request.url().toString());
76+
void extensionDelete() throws IOException {
77+
Response<ResponseBody> response = extension.delete(_uid).execute();
78+
Assertions.assertTrue(response.isSuccessful());
11279
}
11380

11481
@Test
115-
void extensionGetSingle() {
82+
void extensionGetSingle() throws IOException {
11683
Map<String, Object> theQuery = new HashMap<>();
11784
theQuery.put("include_branch", false);
118-
Request request = extension.get(_uid, theQuery).request();
119-
Assertions.assertEquals(2, request.headers().names().size());
120-
Assertions.assertEquals("GET", request.method());
121-
Assertions.assertTrue(request.url().isHttps());
122-
Assertions.assertEquals("api.contentstack.io", request.url().host());
123-
Assertions.assertEquals(3, request.url().pathSegments().size());
124-
Assertions.assertEquals("extensions", request.url().pathSegments().get(1));
125-
Assertions.assertEquals("include_branch=false", request.url().encodedQuery());
126-
Assertions.assertEquals("https://api.contentstack.io/v3/extensions/" + _uid + "?include_branch=false",
127-
request.url().toString());
85+
Response<ResponseBody> response = extension.get(_uid, theQuery).execute();
86+
Assertions.assertTrue(response.isSuccessful());
12887
}
12988

13089
@Test
131-
void testUploadCustomField() {
90+
void testUploadCustomField() throws IOException {
13291
Map<String, RequestBody> params = new HashMap<>();
13392
RequestBody someDataBody = new RequestBody() {
13493
@Override
@@ -143,21 +102,12 @@ public void writeTo(BufferedSink sink) {
143102
params.put("DYNAMIC_PARAM_NAME", someDataBody);
144103
Map<String, Object> param = new HashMap<>();
145104
param.put("include_branch", false);
146-
Request request = extension.uploadCustomField(params, param).request();
147-
Assertions.assertEquals(2, request.headers().names().size());
148-
Assertions.assertEquals("POST", request.method());
149-
Assertions.assertNotNull(request.body());
150-
Assertions.assertTrue(request.url().isHttps());
151-
Assertions.assertEquals("api.contentstack.io", request.url().host());
152-
Assertions.assertEquals(2, request.url().pathSegments().size());
153-
Assertions.assertEquals("extensions", request.url().pathSegments().get(1));
154-
Assertions.assertEquals("include_branch=false", request.url().encodedQuery());
155-
Assertions.assertEquals("https://api.contentstack.io/v3/extensions?include_branch=false",
156-
request.url().toString());
105+
Response<ResponseBody> response = extension.uploadCustomField(params, param).execute();
106+
Assertions.assertTrue(response.isSuccessful());
157107
}
158108

159109
@Test
160-
void updateTheExtension() {
110+
void updateTheExtension() throws IOException {
161111
JSONObject theQuery = new JSONObject();
162112
JSONObject innerObject = new JSONObject();
163113
innerObject.put("name", "Test");
@@ -166,30 +116,14 @@ void updateTheExtension() {
166116
theQuery.put("label", innerObject);
167117
Map<String, Object> params = new HashMap<>();
168118
params.put("include_something", "true");
169-
Request request = extension.uploadCustomField(params, theQuery).request();
170-
Assertions.assertEquals(2, request.headers().names().size());
171-
Assertions.assertEquals("POST", request.method());
172-
Assertions.assertNotNull(request.body());
173-
Assertions.assertTrue(request.url().isHttps());
174-
Assertions.assertEquals("api.contentstack.io", request.url().host());
175-
Assertions.assertEquals(2, request.url().pathSegments().size());
176-
Assertions.assertEquals("extensions", request.url().pathSegments().get(1));
177-
Assertions.assertNull(request.url().encodedQuery());
178-
Assertions.assertEquals("https://api.contentstack.io/v3/extensions", request.url().toString());
119+
Response<ResponseBody> response = extension.uploadCustomField(params, theQuery).execute();
120+
Assertions.assertTrue(response.isSuccessful());
179121
}
180122

181123
@Test
182-
void extensionDeleteAgain() {
183-
Request request = extension.delete(_uid).request();
184-
Assertions.assertEquals(3, request.headers().names().size());
185-
Assertions.assertEquals("DELETE", request.method());
186-
Assertions.assertNull(request.body());
187-
Assertions.assertTrue(request.url().isHttps());
188-
Assertions.assertEquals("api.contentstack.io", request.url().host());
189-
Assertions.assertEquals(3, request.url().pathSegments().size());
190-
Assertions.assertEquals("extensions", request.url().pathSegments().get(1));
191-
Assertions.assertNull(request.url().encodedQuery());
192-
Assertions.assertEquals("https://api.contentstack.io/v3/extensions/" + _uid, request.url().toString());
124+
void extensionDeleteAgain() throws IOException {
125+
Response<ResponseBody> response = extension.delete(_uid).execute();
126+
Assertions.assertTrue(response.isSuccessful());
193127
}
194128

195129
}

0 commit comments

Comments
 (0)