Skip to content

Commit 18611c2

Browse files
committed
refactor
1 parent 7a8ab1d commit 18611c2

Some content is hidden

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

54 files changed

+2218
-2074
lines changed
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
package com.dtsx.astra.sdk;
2+
3+
import com.dtsx.astra.sdk.utils.ApiResponseHttp;
4+
import com.dtsx.astra.sdk.utils.Assert;
5+
import com.dtsx.astra.sdk.utils.HttpClientWrapper;
6+
7+
import static java.net.HttpURLConnection.HTTP_ACCEPTED;
8+
9+
/**
10+
* Super Class for the different Http Clients of the api
11+
*/
12+
public abstract class AbstractApiClient {
13+
14+
/** hold a reference to the bearer token. */
15+
protected final String token;
16+
17+
/**
18+
* Default constructor.
19+
*
20+
* @param token
21+
* token value
22+
*/
23+
public AbstractApiClient(String token) {
24+
Assert.hasLength(token, "token");
25+
this.token = token;
26+
}
27+
28+
/**
29+
* Gets token
30+
*
31+
* @return value of token
32+
*/
33+
public String getToken() {
34+
return token;
35+
}
36+
37+
/**
38+
* Access Http Client.
39+
*
40+
* @return
41+
* Http client
42+
*/
43+
public HttpClientWrapper getHttpClient() {
44+
return HttpClientWrapper.getInstance();
45+
}
46+
47+
/**
48+
* Syntax sugar http requests.
49+
*
50+
* @param url
51+
* url
52+
* @return
53+
* response
54+
*/
55+
public ApiResponseHttp GET(String url) {
56+
return getHttpClient().GET(url, getToken());
57+
}
58+
59+
/**
60+
* Syntax sugar http requests.
61+
*
62+
* @param url
63+
* url
64+
* @return
65+
* response
66+
*/
67+
public ApiResponseHttp HEAD(String url) {
68+
return getHttpClient().HEAD(url, getToken());
69+
}
70+
71+
/**
72+
* Syntax sugar http requests.
73+
*
74+
* @param url
75+
* url
76+
* @return
77+
* response
78+
*/
79+
public ApiResponseHttp POST(String url) {
80+
return getHttpClient().POST(url, getToken());
81+
}
82+
83+
/**
84+
* Syntax sugar http requests.
85+
*
86+
* @param body
87+
* body
88+
* @param url
89+
* url
90+
* @return
91+
* response
92+
*/
93+
public ApiResponseHttp POST(String url, String body) {
94+
return getHttpClient().POST(url, getToken(), body);
95+
}
96+
97+
/**
98+
* Syntax sugar http requests.
99+
*
100+
* @param url
101+
* url
102+
* @param body
103+
* body
104+
* @return
105+
* response
106+
*/
107+
public void PUT(String url, String body) {
108+
getHttpClient().PUT(url, getToken(), body);
109+
}
110+
111+
/**
112+
* Syntax sugar http requests.
113+
*
114+
* @param url
115+
* url
116+
* @return
117+
* response
118+
*/
119+
public void DELETE(String url) {
120+
getHttpClient().DELETE(url, getToken());
121+
}
122+
123+
/**
124+
* Response validation
125+
*
126+
* @param res
127+
* current response
128+
* @param action
129+
* action taken
130+
* @param entityId
131+
* entity id
132+
133+
*/
134+
public void assertHttpCodeAccepted(ApiResponseHttp res, String action, String entityId) {
135+
String errorMsg = " Cannot " + action + " id=" + entityId + " code=" + res.getCode() + " msg=" + res.getBody();
136+
Assert.isTrue(HTTP_ACCEPTED == res.getCode(), errorMsg);
137+
}
138+
139+
140+
}
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
package com.dtsx.astra.sdk;
2+
3+
import com.dtsx.astra.sdk.db.AstraDbClient;
4+
import com.dtsx.astra.sdk.org.KeysClient;
5+
import com.dtsx.astra.sdk.org.RolesClient;
6+
import com.dtsx.astra.sdk.org.TokensClient;
7+
import com.dtsx.astra.sdk.org.UsersClient;
8+
import com.dtsx.astra.sdk.org.domain.*;
9+
import com.dtsx.astra.sdk.streaming.AstraStreamingClient;
10+
import com.dtsx.astra.sdk.utils.ApiLocator;
11+
import com.dtsx.astra.sdk.utils.ApiResponseHttp;
12+
import com.dtsx.astra.sdk.utils.JsonUtils;
13+
14+
import java.util.Map;
15+
16+
/**
17+
* Main Class to interact with Astra Devops API.
18+
*
19+
* <p>This class uses </p>
20+
*/
21+
public class AstraDevopsApiClient extends AbstractApiClient {
22+
23+
/**
24+
* Initialize the Devops API with a token
25+
*
26+
* @param token
27+
* bearerAuthToken token
28+
*/
29+
public AstraDevopsApiClient(String token) {
30+
super(token);
31+
}
32+
33+
// ------------------------------------------------------
34+
// CORE FEATURES
35+
// ------------------------------------------------------
36+
37+
/**
38+
* Retrieve Organization id.
39+
*
40+
* @return
41+
* organization id.
42+
*/
43+
public String getOrganizationId() {
44+
// Invoke endpoint
45+
ApiResponseHttp res = getHttpClient().GET(ApiLocator.getApiDevopsEndpoint() + "/currentOrg", token);
46+
// Parse response
47+
return (String) JsonUtils.unmarshallBean(res.getBody(), Map.class).get("id");
48+
}
49+
50+
/**
51+
* Retrieve the organization wth current token.
52+
*
53+
* @return
54+
* current organization
55+
*/
56+
public Organization getOrganization() {
57+
// Invoke endpoint
58+
ApiResponseHttp res = getHttpClient().GET(UsersClient.getEndpointUsers(), token);
59+
// Marshalling the users response to get org infos
60+
ResponseAllUsers body = JsonUtils.unmarshallBean(res.getBody(), ResponseAllUsers.class);
61+
// Build a proper result
62+
return new Organization(body.getOrgId(), body.getOrgName());
63+
}
64+
65+
// ------------------------------------------------------
66+
// WORKING WITH ASTRA DB
67+
// ------------------------------------------------------
68+
69+
/**
70+
* Works with db.
71+
*
72+
* @return
73+
* databases client
74+
*/
75+
public AstraDbClient db() {
76+
return new AstraDbClient(token);
77+
}
78+
79+
// ------------------------------------------------------
80+
// WORKING WITH ASTRA STREAMING
81+
// ------------------------------------------------------
82+
83+
/**
84+
* Works with Streaming.
85+
*
86+
* @return
87+
* streaming client
88+
*/
89+
public AstraStreamingClient streaming() {
90+
return new AstraStreamingClient(token);
91+
}
92+
93+
94+
// ------------------------------------------------------
95+
// WORKING WITH USERS
96+
// ------------------------------------------------------
97+
98+
/**
99+
* List Users.
100+
*
101+
* @return
102+
* user client
103+
*/
104+
public UsersClient users() {
105+
return new UsersClient(token);
106+
}
107+
108+
// ------------------------------------------------------
109+
// WORKING WITH ROLES
110+
// ------------------------------------------------------
111+
112+
/**
113+
* List Roles.
114+
*
115+
* @return
116+
* role client
117+
*/
118+
public RolesClient roles() {
119+
return new RolesClient(token);
120+
}
121+
122+
// ------------------------------------------------------
123+
// WORKING WITH KEYS
124+
// ------------------------------------------------------
125+
126+
/**
127+
* List keys.
128+
*
129+
* @return
130+
* keys client
131+
*/
132+
public KeysClient keys() {
133+
return new KeysClient(token);
134+
}
135+
136+
// ------------------------------------------------------
137+
// WORKING WITH TOKENS
138+
// ------------------------------------------------------
139+
140+
/**
141+
* List tokens.
142+
*
143+
* @return
144+
* token client
145+
*/
146+
public TokensClient tokens() {
147+
return new TokensClient(token);
148+
}
149+
150+
151+
152+
}

0 commit comments

Comments
 (0)