diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index d4733bb..1bec35e 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -1,18 +1,8 @@ - - - - - - diff --git a/.idea/misc.xml b/.idea/misc.xml index 7bfef59..703e5d4 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,10 @@ + + + + + diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt b/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt index 6586e0e..ead34f6 100644 --- a/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt +++ b/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt @@ -12,7 +12,7 @@ open class BaseActivity : AppCompatActivity() { val woocommerce = Woocommerce.Builder() .setSiteUrl("http://157.230.131.179") - .setApiVersion(Woocommerce.API_V2) + .setApiVersion(Woocommerce.API_V3) .setConsumerKey("ck_26c61abd7eeff238d87dc56585bf26cb2d1a1ec3") .setConsumerSecret("cs_062e8e3a7ae0ce08fdebc0c39f8f834d5e87598e") .build() diff --git a/app/src/main/java/me/gilo/wc/ui/ShopActivity.kt b/app/src/main/java/me/gilo/wc/ui/ShopActivity.kt index 402dd8f..34798f3 100644 --- a/app/src/main/java/me/gilo/wc/ui/ShopActivity.kt +++ b/app/src/main/java/me/gilo/wc/ui/ShopActivity.kt @@ -2,7 +2,9 @@ package me.gilo.wc.ui import android.os.Bundle import android.support.v7.widget.GridLayoutManager +import android.widget.Toast import kotlinx.android.synthetic.main.activity_shop.* +import kotlinx.android.synthetic.main.content_coupon.* import kotlinx.android.synthetic.main.content_shop.* import me.gilo.wc.R import me.gilo.wc.adapter.ProductAdapter @@ -12,6 +14,7 @@ import retrofit2.Call import retrofit2.Callback import retrofit2.Response import java.util.* +import kotlin.collections.HashMap class ShopActivity : BaseActivity() { @@ -42,19 +45,27 @@ class ShopActivity : BaseActivity() { private fun products() { val woocommerce = Woocommerce.Builder() .setSiteUrl("http://157.230.131.179") - .setApiVersion(Woocommerce.API_V2) + .setApiVersion(Woocommerce.API_V3) .setConsumerKey("ck_26c61abd7eeff238d87dc56585bf26cb2d1a1ec3") .setConsumerSecret("cs_062e8e3a7ae0ce08fdebc0c39f8f834d5e87598e") .build() - woocommerce.ProductRepository().products().enqueue(object : Callback> { - override fun onResponse(call: Call>, response: Response>) { - val productsResponse = response.body() - for (product in productsResponse!!) { - products.add(product) - } + val filters = HashMap() + filters["search"] = "ship" - adapter.notifyDataSetChanged() + woocommerce.ProductRepository().filter(filters).enqueue(object : Callback> { + override fun onResponse(call: Call>, response: Response>) { + + if (response.isSuccessful) { + val productsResponse = response.body() + for (product in productsResponse!!) { + products.add(product) + } + + adapter.notifyDataSetChanged() + }else{ + Toast.makeText(baseContext, "" + response.code() + " : " + response.message(), Toast.LENGTH_SHORT).show() + } } override fun onFailure(call: Call>, t: Throwable) { diff --git a/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.java b/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.java index 33a2023..6bace9a 100644 --- a/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.java +++ b/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.java @@ -12,6 +12,7 @@ public class Woocommerce { public static final ApiVersion API_V1 = ApiVersion.API_VERSION1; public static final ApiVersion API_V2 = ApiVersion.API_VERSION2; + public static final ApiVersion API_V3 = ApiVersion.API_VERSION3; final OrderNoteRepository orderNoteRepository; final RefundRepository refundRepository; diff --git a/woodroid/src/main/java/me/gilo/woodroid/data/auth/AuthIntercepter.java b/woodroid/src/main/java/me/gilo/woodroid/data/auth/AuthIntercepter.java index 9d617f4..4952f30 100644 --- a/woodroid/src/main/java/me/gilo/woodroid/data/auth/AuthIntercepter.java +++ b/woodroid/src/main/java/me/gilo/woodroid/data/auth/AuthIntercepter.java @@ -1,6 +1,7 @@ package me.gilo.woodroid.data.auth; import android.util.Base64; +import android.util.Log; import okhttp3.HttpUrl; import okhttp3.Interceptor; import okhttp3.Request; @@ -13,11 +14,11 @@ import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.io.IOException; import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; import java.net.URLEncoder; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; -import java.util.ArrayList; -import java.util.Collections; +import java.util.*; public class AuthIntercepter implements Interceptor { @@ -58,6 +59,31 @@ public class AuthIntercepter implements Interceptor { public ArrayList getOauthParams(Chain chain) { ArrayList params = new ArrayList<>(); + String request_url = chain.request().url().toString(); + + Iterator iterator = getQueryParams(request_url).entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry pair = (Map.Entry)iterator.next(); + + String key = (String) pair.getKey(); + List values = (List) pair.getValue(); + String value = ""; + + //why there would be multiple values for single key is not so clear to me, will keep this here though + if (values.size() == 1){ + value = values.get(0); + } + + params.add(new BasicNameValuePair(key, value)); + + iterator.remove(); + } + + if (request_url.contains("?")){ + int request_url_end = request_url.indexOf("?"); + request_url = request_url.substring(0, request_url_end); + } + oauth_nonce = getOauth_nonce(); oauth_timestamp = getOauth_timestamp(); @@ -68,7 +94,7 @@ public class AuthIntercepter implements Interceptor { Collections.sort(params, new AlphabeticSorter()); String encodedParams = URLEncodedUtils.format(params, "utf-8"); - oauth_signature = getOauth_signature(chain.request().method(), chain.request().url().toString(), consumerSecret, encodedParams ); + oauth_signature = getOauth_signature(chain.request().method(), request_url, consumerSecret, encodedParams ); params.add(new BasicNameValuePair("oauth_signature", oauth_signature)); @@ -115,4 +141,33 @@ public class AuthIntercepter implements Interceptor { long stamp = (long) (System.currentTimeMillis() / 1000D); return (new StringBuilder(String.valueOf(stamp))).toString(); } + + public static Map> getQueryParams(String url) { + try { + Map> params = new HashMap>(); + String[] urlParts = url.split("\\?"); + if (urlParts.length > 1) { + String query = urlParts[1]; + for (String param : query.split("&")) { + String[] pair = param.split("="); + String key = URLDecoder.decode(pair[0], "UTF-8"); + String value = ""; + if (pair.length > 1) { + value = URLDecoder.decode(pair[1], "UTF-8"); + } + + List values = params.get(key); + if (values == null) { + values = new ArrayList(); + params.put(key, values); + } + values.add(value); + } + } + + return params; + } catch (UnsupportedEncodingException ex) { + throw new AssertionError(ex); + } + } } diff --git a/woodroid/src/main/java/me/gilo/woodroid/repo/ProductRepository.java b/woodroid/src/main/java/me/gilo/woodroid/repo/ProductRepository.java index 2838efb..621a0a6 100644 --- a/woodroid/src/main/java/me/gilo/woodroid/repo/ProductRepository.java +++ b/woodroid/src/main/java/me/gilo/woodroid/repo/ProductRepository.java @@ -6,6 +6,7 @@ import retrofit2.Call; import java.util.HashMap; import java.util.List; +import java.util.Map; public class ProductRepository extends WooRepository { @@ -29,6 +30,10 @@ public class ProductRepository extends WooRepository { return apiService.list(); } + public Call> filter(Map filters) { + return apiService.filter(filters); + } + public Call update(int id, Product product) { return apiService.update(id, product); } diff --git a/woodroid/src/main/java/me/gilo/woodroid/repo/WooRepository.java b/woodroid/src/main/java/me/gilo/woodroid/repo/WooRepository.java index c276dba..b930a4d 100644 --- a/woodroid/src/main/java/me/gilo/woodroid/repo/WooRepository.java +++ b/woodroid/src/main/java/me/gilo/woodroid/repo/WooRepository.java @@ -10,7 +10,7 @@ import java.util.concurrent.TimeUnit; public class WooRepository { - //TODO Apply DI or single instance on this + //TODO ('Apply DI or single instance on this') public Retrofit retrofit; public WooRepository(String baseUrl, String consumerKey, String consumerSecret) {