Skip to content

Commit 5e77cc5

Browse files
authored
Update http client
1 parent 178559b commit 5e77cc5

File tree

62 files changed

+536
-2385
lines changed

Some content is hidden

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

62 files changed

+536
-2385
lines changed

.travis.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@ jdk:
1818

1919
env:
2020
- MODULE=core
21-
- MODULE=http42
22-
- MODULE=http43
23-
- MODULE=http44
24-
- MODULE=http45
21+
- MODULE=http5
2522

2623
branches:
2724
except:

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

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.cloudinary.metadata.MetadataDataSource;
1010
import com.cloudinary.metadata.MetadataRule;
1111
import com.cloudinary.strategies.AbstractApiStrategy;
12+
import com.cloudinary.utils.Base64Coder;
1213
import com.cloudinary.utils.ObjectUtils;
1314
import com.cloudinary.utils.StringUtils;
1415
import org.cloudinary.json.JSONArray;
@@ -40,7 +41,19 @@ public enum HttpMethod {GET, POST, PUT, DELETE;}
4041
private AbstractApiStrategy strategy;
4142

4243
protected ApiResponse callApi(HttpMethod method, Iterable<String> uri, Map<String, ? extends Object> params, Map options) throws Exception {
43-
return this.strategy.callApi(method, uri, params, options);
44+
if (options == null)
45+
options = ObjectUtils.emptyMap();
46+
47+
String apiKey = ObjectUtils.asString(options.get("api_key"), this.cloudinary.config.apiKey);
48+
String apiSecret = ObjectUtils.asString(options.get("api_secret"), this.cloudinary.config.apiSecret);
49+
String oauthToken = ObjectUtils.asString(options.get("oauth_token"), this.cloudinary.config.oauthToken);
50+
51+
validateAuthorization(apiKey, apiSecret, oauthToken);
52+
53+
54+
String authorizationHeader = getAuthorizationHeaderValue(apiKey, apiSecret, oauthToken);
55+
String apiUrl = createApiUrl(uri, options);
56+
return this.strategy.callApi(method, apiUrl, params, options, authorizationHeader);
4457
}
4558

4659
public Api(Cloudinary cloudinary, AbstractApiStrategy strategy) {
@@ -871,4 +884,33 @@ public ApiResponse deleteBackedUpAssets(String assetId, String[] versionIds, Map
871884
}
872885
return result;
873886
}
887+
888+
protected void validateAuthorization(String apiKey, String apiSecret, String oauthToken) {
889+
if (oauthToken == null) {
890+
if (apiKey == null) throw new IllegalArgumentException("Must supply api_key");
891+
if (apiSecret == null) throw new IllegalArgumentException("Must supply api_secret");
892+
}
893+
}
894+
895+
protected String getAuthorizationHeaderValue(String apiKey, String apiSecret, String oauthToken) {
896+
if (oauthToken != null){
897+
return "Bearer " + oauthToken;
898+
} else {
899+
return "Basic " + Base64Coder.encodeString(apiKey + ":" + apiSecret);
900+
}
901+
}
902+
903+
protected String createApiUrl (Iterable<String> uri, Map options){
904+
String version = ObjectUtils.asString(options.get("api_version"), "v1_1");
905+
String prefix = ObjectUtils.asString(options.get("upload_prefix"), ObjectUtils.asString(this.cloudinary.config.uploadPrefix, "https://api.cloudinary.com"));
906+
String cloudName = ObjectUtils.asString(options.get("cloud_name"), this.cloudinary.config.cloudName);
907+
if (cloudName == null) throw new IllegalArgumentException("Must supply cloud_name");
908+
String apiUrl = StringUtils.join(Arrays.asList(prefix, version, cloudName), "/");
909+
for (String component : uri) {
910+
component = SmartUrlEncoder.encode(component);
911+
apiUrl = apiUrl + "/" + component;
912+
913+
}
914+
return apiUrl;
915+
}
874916
}

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

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,10 @@ public class Cloudinary {
2222

2323
private static List<String> UPLOAD_STRATEGIES = new ArrayList<String>(Arrays.asList(
2424
"com.cloudinary.android.UploaderStrategy",
25-
"com.cloudinary.http42.UploaderStrategy",
26-
"com.cloudinary.http43.UploaderStrategy",
27-
"com.cloudinary.http44.UploaderStrategy",
28-
"com.cloudinary.http45.UploaderStrategy"));
25+
"com.cloudinary.http5.UploaderStrategy"));
2926
public static List<String> API_STRATEGIES = new ArrayList<String>(Arrays.asList(
3027
"com.cloudinary.android.ApiStrategy",
31-
"com.cloudinary.http42.ApiStrategy",
32-
"com.cloudinary.http43.ApiStrategy",
33-
"com.cloudinary.http44.ApiStrategy",
34-
"com.cloudinary.http45.ApiStrategy"));
28+
"com.cloudinary.http5.ApiStrategy"));
3529

3630
public final static String CF_SHARED_CDN = "d3jpl91pxevbkh.cloudfront.net";
3731
public final static String OLD_AKAMAI_SHARED_CDN = "cloudinary-a.akamaihd.net";

cloudinary-core/src/main/java/com/cloudinary/provisioning/Account.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
import com.cloudinary.Cloudinary;
55
import com.cloudinary.Util;
66
import com.cloudinary.api.ApiResponse;
7+
import com.cloudinary.utils.Base64Coder;
78
import com.cloudinary.utils.ObjectUtils;
9+
import com.cloudinary.utils.StringUtils;
10+
811
import java.util.*;
912

1013
/**
@@ -76,7 +79,25 @@ private ApiResponse callAccountApi(Api.HttpMethod method, List<String> uri, Map<
7679
}
7780

7881
Util.clearEmpty(params);
79-
return api.getStrategy().callAccountApi(method, uri, params, options);
82+
83+
if (options == null) {
84+
options = ObjectUtils.emptyMap();
85+
}
86+
87+
String prefix = ObjectUtils.asString(options.get("upload_prefix"), "https://api.cloudinary.com");
88+
String apiKey = ObjectUtils.asString(options.get("provisioning_api_key"));
89+
if (apiKey == null) throw new IllegalArgumentException("Must supply provisioning_api_key");
90+
String apiSecret = ObjectUtils.asString(options.get("provisioning_api_secret"));
91+
if (apiSecret == null) throw new IllegalArgumentException("Must supply provisioning_api_secret");
92+
93+
String apiUrl = StringUtils.join(Arrays.asList(prefix, "v1_1"), "/");
94+
for (String component : uri) {
95+
apiUrl = apiUrl + "/" + component;
96+
}
97+
98+
String authorizationHeader = getAuthorizationHeaderValue(apiKey, apiSecret, null);
99+
100+
return api.getStrategy().callAccountApi(method, apiUrl, params, options, authorizationHeader);
80101
}
81102

82103
/**
@@ -707,4 +728,12 @@ private Map<String, Object> verifyOptions(Map<String, Object> options) {
707728

708729
return options;
709730
}
731+
732+
protected String getAuthorizationHeaderValue(String apiKey, String apiSecret, String oauthToken) {
733+
if (oauthToken != null){
734+
return "Bearer " + oauthToken;
735+
} else {
736+
return "Basic " + Base64Coder.encodeString(apiKey + ":" + apiSecret);
737+
}
738+
}
710739
}

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

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -18,37 +18,8 @@ public void init(Api api) {
1818
this.api = api;
1919
}
2020

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), "/");
27-
for (String component : uri) {
28-
component = SmartUrlEncoder.encode(component);
29-
apiUrl = apiUrl + "/" + component;
30-
31-
}
32-
return apiUrl;
33-
}
34-
3521
@SuppressWarnings("rawtypes")
36-
public abstract ApiResponse callApi(HttpMethod method, Iterable<String> uri, Map<String, ? extends Object> params, Map options) throws Exception;
37-
38-
public abstract ApiResponse callAccountApi(HttpMethod method, Iterable<String> uri, Map<String, ? extends Object> params, Map options) throws Exception;
22+
public abstract ApiResponse callApi(HttpMethod method, String apiUrl, Map<String, ? extends Object> params, Map options, String authorizationHeader) throws Exception;
3923

40-
protected String getAuthorizationHeaderValue(String apiKey, String apiSecret, String oauthToken) {
41-
if (oauthToken != null){
42-
return "Bearer " + oauthToken;
43-
} else {
44-
return "Basic " + Base64Coder.encodeString(apiKey + ":" + apiSecret);
45-
}
46-
}
47-
48-
protected void validateAuthorization(String apiKey, String apiSecret, String oauthToken) {
49-
if (oauthToken == null) {
50-
if (apiKey == null) throw new IllegalArgumentException("Must supply api_key");
51-
if (apiSecret == null) throw new IllegalArgumentException("Must supply api_secret");
52-
}
53-
}
24+
public abstract ApiResponse callAccountApi(HttpMethod method, String apiUrl, Map<String, ? extends Object> params, Map options, String authorizationHeader) throws Exception;
5425
}

cloudinary-http42/build.gradle

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

0 commit comments

Comments
 (0)