Skip to content

Commit 5bc4f55

Browse files
committed
fix issue calatonsystems#36 by adding COLON in SpecialSymbol and apply in OAuthSignature
1 parent efdaabc commit 5bc4f55

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

src/main/java/com/icoderman/woocommerce/oauth/OAuthSignature.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public static Map<String, String> getAsMap(OAuthConfig config, String endpoint,
3838
authParams.put(OAuthHeader.OAUTH_TIMESTAMP.getValue(), String.valueOf(System.currentTimeMillis() / 1000L));
3939
authParams.put(OAuthHeader.OAUTH_NONCE.getValue(), UUID.randomUUID().toString());
4040
authParams.put(OAuthHeader.OAUTH_SIGNATURE_METHOD.getValue(), SIGNATURE_METHOD_HMAC_SHA256);
41-
authParams.putAll(params);
41+
authParams.putAll(colonEncodeValue(params));
4242

4343
// WooCommerce specified param
4444
if (HttpMethod.DELETE.equals(httpMethod)) {
@@ -139,4 +139,14 @@ private static String percentEncode(String s) {
139139
private static Map<String, String> getSortedParameters(Map<String, String> parameters) {
140140
return new TreeMap<>(parameters);
141141
}
142+
143+
private static Map<String, String> colonEncodeValue(Map<String, String> parameter) {
144+
Map<String, String> encoded = new HashMap<>();
145+
146+
for (Map.Entry<String, String> param : parameter.entrySet()) {
147+
encoded.put(param.getKey(), param.getValue().replace(SpecialSymbol.COLON.getPlain(), SpecialSymbol.COLON.getEncoded()));
148+
}
149+
150+
return encoded;
151+
}
142152
}

src/main/java/com/icoderman/woocommerce/oauth/SpecialSymbol.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ public enum SpecialSymbol {
99
EQUAL("=", "%3D"),
1010
PLUS("+", "%2B"),
1111
STAR("*", "%2A"),
12-
TILDE("~", "%7E");
12+
TILDE("~", "%7E"),
13+
COLON(":", "%3A");
1314

1415
private String plain;
1516
private String encoded;

src/test/java/com/icoderman/woocommerce/integration/WooCommerceClientTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ public void apiGetAllProductsTest() {
4747
Map<String, String> params = new HashMap<>();
4848
params.put("per_page","100");
4949
params.put("offset","0");
50+
params.put("after", "2020-01-01T00:00:00.000Z");
51+
params.put("before", "2020-01-15T00:00:00.000Z");
5052
Object products = wooCommerce.getAll(EndpointBaseType.PRODUCTS.getValue(), params);
5153
Assert.assertNotNull(products);
5254
}

0 commit comments

Comments
 (0)