Skip to content

Commit 36d7218

Browse files
authored
Add analyze api
1 parent 959f98a commit 36d7218

File tree

7 files changed

+30
-20
lines changed

7 files changed

+30
-20
lines changed

cloudinary-core/src/main/java/com/cloudinary/Api.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -779,6 +779,17 @@ public ApiResponse reorderMetadataFields(String orderBy, String direction, Map o
779779
return callApi(HttpMethod.PUT, uri, map, options);
780780
}
781781

782+
public ApiResponse analyze(String inputType, String analysisType, String uri, Map options) throws Exception {
783+
if (options == null || options.isEmpty()) options = ObjectUtils.asMap();
784+
List<String> url = Arrays.asList("analysis", "analyze", inputType);
785+
options.put("api_version", "v2");
786+
options.put("content_type", "json");
787+
final Map params = new HashMap();
788+
params.put("analysis_type", analysisType);
789+
params.put("uri", uri);
790+
return callApi(HttpMethod.POST, url, params, options);
791+
}
792+
782793
private Map<String, ?> extractParams(Map options, List<String> keys) {
783794
Map<String, Object> result = new HashMap<String, Object>();
784795
for (String key : keys) {

cloudinary-core/src/main/java/com/cloudinary/strategies/AbstractApiStrategy.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.cloudinary.SmartUrlEncoder;
66
import com.cloudinary.api.ApiResponse;
77
import com.cloudinary.utils.Base64Coder;
8+
import com.cloudinary.utils.ObjectUtils;
89
import com.cloudinary.utils.StringUtils;
910
import java.util.Arrays;
1011
import java.util.Map;
@@ -17,9 +18,12 @@ public void init(Api api) {
1718
this.api = api;
1819
}
1920

20-
protected String createApiUrl (Iterable<String> uri, String prefix, String cloudName){
21-
22-
String apiUrl = StringUtils.join(Arrays.asList(prefix, "v1_1", cloudName), "/");
21+
protected String createApiUrl (Iterable<String> uri, Map options){
22+
String version = ObjectUtils.asString(options.get("api_version"), "v1_1");
23+
String prefix = ObjectUtils.asString(options.get("upload_prefix"), ObjectUtils.asString(this.api.cloudinary.config.uploadPrefix, "https://api.cloudinary.com"));
24+
String cloudName = ObjectUtils.asString(options.get("cloud_name"), this.api.cloudinary.config.cloudName);
25+
if (cloudName == null) throw new IllegalArgumentException("Must supply cloud_name");
26+
String apiUrl = StringUtils.join(Arrays.asList(prefix, version, cloudName), "/");
2327
for (String component : uri) {
2428
component = SmartUrlEncoder.encode(component);
2529
apiUrl = apiUrl + "/" + component;

cloudinary-http42/src/main/java/com/cloudinary/http42/ApiStrategy.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,14 @@ public class ApiStrategy extends AbstractApiStrategy {
3434
public ApiResponse callApi(HttpMethod method, Iterable<String> uri, Map<String, ? extends Object> params, Map options) throws Exception {
3535
if (options == null) options = ObjectUtils.emptyMap();
3636

37-
String prefix = ObjectUtils.asString(options.get("upload_prefix"), ObjectUtils.asString(this.api.cloudinary.config.uploadPrefix, "https://api.cloudinary.com"));
38-
String cloudName = ObjectUtils.asString(options.get("cloud_name"), this.api.cloudinary.config.cloudName);
39-
if (cloudName == null) throw new IllegalArgumentException("Must supply cloud_name");
4037
String apiKey = ObjectUtils.asString(options.get("api_key"), this.api.cloudinary.config.apiKey);
4138
String apiSecret = ObjectUtils.asString(options.get("api_secret"), this.api.cloudinary.config.apiSecret);
4239
String oauthToken = ObjectUtils.asString(options.get("oauth_token"), this.api.cloudinary.config.oauthToken);
4340
String contentType = ObjectUtils.asString(options.get("content_type"), "urlencoded");
4441
int timeout = ObjectUtils.asInteger(options.get("timeout"), this.api.cloudinary.config.timeout);
4542
validateAuthorization(apiKey, apiSecret, oauthToken);
4643

47-
String apiUrl = createApiUrl(uri, prefix, cloudName);
44+
String apiUrl = createApiUrl(uri, options);
4845

4946
return getApiResponse(method, params, apiKey, apiSecret, oauthToken, contentType, timeout, apiUrl);
5047
}

cloudinary-http43/src/main/java/com/cloudinary/http43/ApiStrategy.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,16 +77,13 @@ public ApiResponse callApi(HttpMethod method, Iterable<String> uri, Map<String,
7777
if (options == null)
7878
options = ObjectUtils.emptyMap();
7979

80-
String prefix = ObjectUtils.asString(options.get("upload_prefix"), ObjectUtils.asString(this.api.cloudinary.config.uploadPrefix, "https://api.cloudinary.com"));
81-
String cloudName = ObjectUtils.asString(options.get("cloud_name"), this.api.cloudinary.config.cloudName);
82-
if (cloudName == null) throw new IllegalArgumentException("Must supply cloud_name");
8380
String apiKey = ObjectUtils.asString(options.get("api_key"), this.api.cloudinary.config.apiKey);
8481
String apiSecret = ObjectUtils.asString(options.get("api_secret"), this.api.cloudinary.config.apiSecret);
8582
String oauthToken = ObjectUtils.asString(options.get("oauth_token"), this.api.cloudinary.config.oauthToken);
8683

8784
validateAuthorization(apiKey, apiSecret, oauthToken);
8885

89-
String apiUrl = createApiUrl(uri, prefix, cloudName);
86+
String apiUrl = createApiUrl(uri, options);
9087
HttpUriRequest request = prepareRequest(method, apiUrl, params, options);
9188

9289
request.setHeader("Authorization", getAuthorizationHeaderValue(apiKey, apiSecret, oauthToken));

cloudinary-http44/src/main/java/com/cloudinary/http44/ApiStrategy.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,13 @@ public ApiResponse callApi(HttpMethod method, Iterable<String> uri, Map<String,
7979
if (options == null)
8080
options = ObjectUtils.emptyMap();
8181

82-
String prefix = ObjectUtils.asString(options.get("upload_prefix"), ObjectUtils.asString(this.api.cloudinary.config.uploadPrefix, "https://api.cloudinary.com"));
83-
String cloudName = ObjectUtils.asString(options.get("cloud_name"), this.api.cloudinary.config.cloudName);
84-
if (cloudName == null) throw new IllegalArgumentException("Must supply cloud_name");
8582
String apiKey = ObjectUtils.asString(options.get("api_key"), this.api.cloudinary.config.apiKey);
8683
String apiSecret = ObjectUtils.asString(options.get("api_secret"), this.api.cloudinary.config.apiSecret);
8784
String oauthToken = ObjectUtils.asString(options.get("oauth_token"), this.api.cloudinary.config.oauthToken);
8885

8986
validateAuthorization(apiKey, apiSecret, oauthToken);
9087

91-
String apiUrl = createApiUrl(uri, prefix, cloudName);
88+
String apiUrl = createApiUrl(uri, options);
9289
HttpUriRequest request = prepareRequest(method, apiUrl, params, options);
9390

9491
request.setHeader("Authorization", getAuthorizationHeaderValue(apiKey, apiSecret, oauthToken));

cloudinary-http45/src/main/java/com/cloudinary/http45/ApiStrategy.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,17 +77,13 @@ public ApiResponse callApi(HttpMethod method, Iterable<String> uri, Map<String,
7777
if (options == null)
7878
options = ObjectUtils.emptyMap();
7979

80-
String prefix = ObjectUtils.asString(options.get("upload_prefix"), ObjectUtils.asString(this.api.cloudinary.config.uploadPrefix, "https://api.cloudinary.com"));
81-
String cloudName = ObjectUtils.asString(options.get("cloud_name"), this.api.cloudinary.config.cloudName);
82-
if (cloudName == null) throw new IllegalArgumentException("Must supply cloud_name");
8380
String apiKey = ObjectUtils.asString(options.get("api_key"), this.api.cloudinary.config.apiKey);
8481
String apiSecret = ObjectUtils.asString(options.get("api_secret"), this.api.cloudinary.config.apiSecret);
8582
String oauthToken = ObjectUtils.asString(options.get("oauth_token"), this.api.cloudinary.config.oauthToken);
8683

8784
validateAuthorization(apiKey, apiSecret, oauthToken);
8885

89-
90-
String apiUrl = createApiUrl(uri, prefix, cloudName);
86+
String apiUrl = createApiUrl(uri, options);
9187
HttpUriRequest request = prepareRequest(method, apiUrl, params, options);
9288

9389
request.setHeader("Authorization", getAuthorizationHeaderValue(apiKey, apiSecret, oauthToken));

cloudinary-test-common/src/main/java/com/cloudinary/test/AbstractApiTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1238,6 +1238,14 @@ public void testAccessibilityAnalysisResource() throws Exception {
12381238
assertNotNull(res.get("accessibility_analysis"));
12391239
}
12401240

1241+
@Test
1242+
public void testAnalyzeApi() throws Exception {
1243+
assumeAddonEnabled("captioning");
1244+
ApiResponse res = api.analyze("uri", "captioning", "https://res.cloudinary.com/demo/image/upload/dog", ObjectUtils.emptyMap());
1245+
assertNotNull(res);
1246+
assertNotNull(res.get("request_id"));
1247+
}
1248+
12411249
@Test
12421250
public void testFolderDecoupling() {
12431251
//TODO: Need to build a unit testing infrastructure

0 commit comments

Comments
 (0)