Implemented more robust auth interceptor
This commit is contained in:
parent
23e422bdf8
commit
866d25fc4b
@ -1,24 +1,17 @@
|
|||||||
package me.gilo.wc.ui
|
package me.gilo.wc.ui
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.design.widget.Snackbar
|
|
||||||
import android.support.v7.app.AppCompatActivity;
|
|
||||||
import android.support.v7.widget.GridLayoutManager
|
import android.support.v7.widget.GridLayoutManager
|
||||||
import android.support.v7.widget.LinearLayoutManager
|
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
|
||||||
import me.gilo.wc.R
|
|
||||||
|
|
||||||
import kotlinx.android.synthetic.main.activity_shop.*
|
import kotlinx.android.synthetic.main.activity_shop.*
|
||||||
import kotlinx.android.synthetic.main.content_menu.*
|
|
||||||
import kotlinx.android.synthetic.main.content_shop.*
|
import kotlinx.android.synthetic.main.content_shop.*
|
||||||
import me.gilo.wc.adapter.MenuAdapter
|
import me.gilo.wc.R
|
||||||
import me.gilo.wc.adapter.ProductAdapter
|
import me.gilo.wc.adapter.ProductAdapter
|
||||||
import me.gilo.woodroid.Woocommerce
|
import me.gilo.woodroid.Woocommerce
|
||||||
import me.gilo.woodroid.models.Product
|
import me.gilo.woodroid.models.Product
|
||||||
import retrofit2.Call
|
import retrofit2.Call
|
||||||
import retrofit2.Callback
|
import retrofit2.Callback
|
||||||
import retrofit2.Response
|
import retrofit2.Response
|
||||||
import java.util.ArrayList
|
import java.util.*
|
||||||
|
|
||||||
class ShopActivity : BaseActivity() {
|
class ShopActivity : BaseActivity() {
|
||||||
|
|
||||||
@ -54,8 +47,8 @@ class ShopActivity : BaseActivity() {
|
|||||||
.setConsumerSecret("cs_062e8e3a7ae0ce08fdebc0c39f8f834d5e87598e")
|
.setConsumerSecret("cs_062e8e3a7ae0ce08fdebc0c39f8f834d5e87598e")
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
woocommerce.products.enqueue(object : Callback<ArrayList<Product>> {
|
woocommerce.products.enqueue(object : Callback<List<Product>> {
|
||||||
override fun onResponse(call: Call<ArrayList<Product>>, response: Response<ArrayList<Product>>) {
|
override fun onResponse(call: Call<List<Product>>, response: Response<List<Product>>) {
|
||||||
val productsResponse = response.body()
|
val productsResponse = response.body()
|
||||||
for (product in productsResponse!!) {
|
for (product in productsResponse!!) {
|
||||||
products.add(product)
|
products.add(product)
|
||||||
@ -64,7 +57,7 @@ class ShopActivity : BaseActivity() {
|
|||||||
adapter.notifyDataSetChanged()
|
adapter.notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onFailure(call: Call<ArrayList<Product>>, t: Throwable) {
|
override fun onFailure(call: Call<List<Product>>, t: Throwable) {
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
package me.gilo.woodroid;
|
package me.gilo.woodroid;
|
||||||
|
|
||||||
import me.gilo.woodroid.dto.CouponData;
|
|
||||||
import me.gilo.woodroid.models.Product;
|
import me.gilo.woodroid.models.Product;
|
||||||
import me.gilo.woodroid.repo.ProductRepository;
|
import me.gilo.woodroid.repo.ProductRepository;
|
||||||
|
import me.gilo.woodroid.services.CouponData;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.List;
|
||||||
|
|
||||||
public class Woocommerce {
|
public class Woocommerce {
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ public class Woocommerce {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Call<ArrayList<Product>> getProducts() {
|
public Call<List<Product>> getProducts() {
|
||||||
return productRepository.products();
|
return productRepository.products();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,37 +1,8 @@
|
|||||||
package me.gilo.woodroid.data;
|
package me.gilo.woodroid.data;
|
||||||
|
|
||||||
import android.util.Base64;
|
|
||||||
|
|
||||||
import me.gilo.woodroid.data.api.API;
|
|
||||||
import okhttp3.HttpUrl;
|
|
||||||
import okhttp3.Interceptor;
|
|
||||||
import okhttp3.OkHttpClient;
|
|
||||||
import okhttp3.Request;
|
|
||||||
|
|
||||||
import org.apache.http.NameValuePair;
|
import org.apache.http.NameValuePair;
|
||||||
import org.apache.http.client.utils.URLEncodedUtils;
|
|
||||||
import org.apache.http.message.BasicNameValuePair;
|
|
||||||
|
|
||||||
import java.io.UnsupportedEncodingException;
|
|
||||||
import java.net.MalformedURLException;
|
|
||||||
import java.net.URI;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.net.URLEncoder;
|
|
||||||
import java.security.InvalidKeyException;
|
|
||||||
import java.security.NoSuchAlgorithmException;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import javax.crypto.Mac;
|
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
|
||||||
|
|
||||||
import okhttp3.logging.HttpLoggingInterceptor;
|
|
||||||
import retrofit2.Retrofit;
|
|
||||||
import retrofit2.converter.gson.GsonConverterFactory;
|
|
||||||
|
|
||||||
public class RestAdapter {
|
public class RestAdapter {
|
||||||
|
|
||||||
@ -51,252 +22,7 @@ public class RestAdapter {
|
|||||||
this.consumerSecret = consumerSecret;
|
this.consumerSecret = consumerSecret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public API createAPI(final String endpoint) {
|
|
||||||
return createAPI(endpoint, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public API createAPI(final String endpoint, Map<String, String> query) {
|
|
||||||
|
|
||||||
if (query != null) {
|
|
||||||
setParams(endpoint, query);
|
|
||||||
}else{
|
|
||||||
setParams(endpoint);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Define the interceptor, add authentication headers
|
|
||||||
Interceptor interceptor = chain -> {
|
|
||||||
|
|
||||||
HttpUrl.Builder builder = chain.request().url().newBuilder();
|
|
||||||
for (NameValuePair entry : params) {
|
|
||||||
builder.addQueryParameter(entry.getName(), entry.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
Request newRequest = chain.request()
|
|
||||||
.newBuilder()
|
|
||||||
.url(builder.build())
|
|
||||||
.header("Accept", "application/json")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
return chain.proceed(newRequest);
|
|
||||||
};
|
|
||||||
|
|
||||||
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
|
|
||||||
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
|
|
||||||
|
|
||||||
OkHttpClient client = new OkHttpClient.Builder()
|
|
||||||
.addInterceptor(interceptor)
|
|
||||||
.addInterceptor(loggingInterceptor)
|
|
||||||
.readTimeout(30, TimeUnit.SECONDS)
|
|
||||||
.writeTimeout(30, TimeUnit.SECONDS)
|
|
||||||
.connectTimeout(15, TimeUnit.SECONDS)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
Retrofit retrofit = new Retrofit.Builder()
|
|
||||||
.baseUrl(baseUrl)
|
|
||||||
//.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
|
|
||||||
.addConverterFactory(GsonConverterFactory.create())
|
|
||||||
.client(client)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
return retrofit.create(API.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public API createAPI(Class<API> service, final String endpoint, Map<String, String> query) {
|
|
||||||
|
|
||||||
if (query != null) {
|
|
||||||
setParams(endpoint, query);
|
|
||||||
}else{
|
|
||||||
setParams(endpoint);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Define the interceptor, add authentication headers
|
|
||||||
Interceptor interceptor = chain -> {
|
|
||||||
|
|
||||||
HttpUrl.Builder builder = chain.request().url().newBuilder();
|
|
||||||
for (NameValuePair entry : params) {
|
|
||||||
builder.addQueryParameter(entry.getName(), entry.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
Request newRequest = chain.request()
|
|
||||||
.newBuilder()
|
|
||||||
.url(builder.build())
|
|
||||||
.header("Accept", "application/json")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
return chain.proceed(newRequest);
|
|
||||||
};
|
|
||||||
|
|
||||||
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
|
|
||||||
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
|
|
||||||
|
|
||||||
OkHttpClient client = new OkHttpClient.Builder()
|
|
||||||
.addInterceptor(interceptor)
|
|
||||||
.addInterceptor(loggingInterceptor)
|
|
||||||
.readTimeout(30, TimeUnit.SECONDS)
|
|
||||||
.writeTimeout(30, TimeUnit.SECONDS)
|
|
||||||
.connectTimeout(15, TimeUnit.SECONDS)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
Retrofit retrofit = new Retrofit.Builder()
|
|
||||||
.baseUrl(baseUrl)
|
|
||||||
//.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
|
|
||||||
.addConverterFactory(GsonConverterFactory.create())
|
|
||||||
.client(client)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
return retrofit.create(API.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Interceptor getInterceptor(final String endpoint, Map<String, String> query) {
|
|
||||||
|
|
||||||
if (query != null) {
|
|
||||||
setParams(endpoint, query);
|
|
||||||
}else{
|
|
||||||
setParams(endpoint);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Define the interceptor, add authentication headers
|
|
||||||
Interceptor interceptor = chain -> {
|
|
||||||
|
|
||||||
chain.request().method();
|
|
||||||
|
|
||||||
HttpUrl.Builder builder = chain.request().url().newBuilder();
|
|
||||||
for (NameValuePair entry : params) {
|
|
||||||
builder.addQueryParameter(entry.getName(), entry.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
Request newRequest = chain.request()
|
|
||||||
.newBuilder()
|
|
||||||
.url(builder.build())
|
|
||||||
.header("Accept", "application/json")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
return chain.proceed(newRequest);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
return interceptor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ArrayList<NameValuePair> setParams(String endpoint) {
|
|
||||||
final String uri = baseUrl + endpoint;
|
|
||||||
|
|
||||||
URI uri1 = URI.create(baseUrl + endpoint);
|
|
||||||
String urlString = "";
|
|
||||||
try {
|
|
||||||
URL url = uri1.toURL();
|
|
||||||
urlString = url.toString();
|
|
||||||
} catch (MalformedURLException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
oauth_nonce = getOauth_nonce();
|
|
||||||
oauth_timestamp = getOauth_timestamp();
|
|
||||||
|
|
||||||
params = new ArrayList<>();
|
|
||||||
params.add(new BasicNameValuePair("oauth_consumer_key", consumerKey));
|
|
||||||
params.add(new BasicNameValuePair("oauth_nonce", oauth_nonce));
|
|
||||||
params.add(new BasicNameValuePair("oauth_timestamp", oauth_timestamp));
|
|
||||||
params.add(new BasicNameValuePair("oauth_signature_method", oauth_signature_method));
|
|
||||||
|
|
||||||
Collections.sort(params, new SortParams());
|
|
||||||
|
|
||||||
String encodedParams = URLEncodedUtils.format(params, "utf-8");
|
|
||||||
|
|
||||||
String string_to_sign = "";
|
|
||||||
try {
|
|
||||||
string_to_sign = (new StringBuilder("GET&")).append(URLEncoder.encode(uri, "utf-8")).append("&").append(URLEncoder.encode(encodedParams, "utf-8")).toString();
|
|
||||||
} catch (UnsupportedEncodingException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
try {
|
|
||||||
Mac mac = Mac.getInstance("HMAC-SHA1");
|
|
||||||
String secret = consumerSecret + "&";
|
|
||||||
|
|
||||||
mac.init(new SecretKeySpec(secret.getBytes("utf-8"), "HMAC-SHA1"));
|
|
||||||
String signature = Base64.encodeToString(mac.doFinal(string_to_sign.getBytes("utf-8")), 0).trim();
|
|
||||||
params.add(new BasicNameValuePair("oauth_signature", signature));
|
|
||||||
} catch (NoSuchAlgorithmException | InvalidKeyException | UnsupportedEncodingException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
return params;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ArrayList<NameValuePair> setParams(String endpoint, Map<String, String> query) {
|
|
||||||
final String uri = baseUrl + endpoint;
|
|
||||||
|
|
||||||
URI uri1 = URI.create(baseUrl + endpoint);
|
|
||||||
String urlString = "";
|
|
||||||
try {
|
|
||||||
URL url = uri1.toURL();
|
|
||||||
urlString = url.toString();
|
|
||||||
} catch (MalformedURLException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
oauth_nonce = getOauth_nonce();
|
|
||||||
oauth_timestamp = getOauth_timestamp();
|
|
||||||
|
|
||||||
params = new ArrayList<>();
|
|
||||||
|
|
||||||
Iterator it = query.entrySet().iterator();
|
|
||||||
while (it.hasNext()) {
|
|
||||||
Map.Entry pair = (Map.Entry)it.next();
|
|
||||||
params.add(new BasicNameValuePair((String) pair.getKey(), (String) pair.getValue()));
|
|
||||||
|
|
||||||
it.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
params.add(new BasicNameValuePair("oauth_consumer_key", consumerKey));
|
|
||||||
params.add(new BasicNameValuePair("oauth_nonce", oauth_nonce));
|
|
||||||
params.add(new BasicNameValuePair("oauth_timestamp", oauth_timestamp));
|
|
||||||
params.add(new BasicNameValuePair("oauth_signature_method", oauth_signature_method));
|
|
||||||
|
|
||||||
Collections.sort(params, new SortParams());
|
|
||||||
|
|
||||||
String encodedParams = URLEncodedUtils.format(params, "utf-8");
|
|
||||||
|
|
||||||
String string_to_sign = "";
|
|
||||||
try {
|
|
||||||
string_to_sign = (new StringBuilder("GET&")).append(URLEncoder.encode(uri, "utf-8")).append("&").append(URLEncoder.encode(encodedParams, "utf-8")).toString();
|
|
||||||
} catch (UnsupportedEncodingException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
try {
|
|
||||||
Mac mac = Mac.getInstance("HMAC-SHA1");
|
|
||||||
String secret = consumerSecret;
|
|
||||||
//if (API.WP_API_VERSION.equals("3")) {
|
|
||||||
secret = consumerSecret + "&";
|
|
||||||
//}
|
|
||||||
mac.init(new SecretKeySpec(secret.getBytes("utf-8"), "HMAC-SHA1"));
|
|
||||||
String signature = Base64.encodeToString(mac.doFinal(string_to_sign.getBytes("utf-8")), 0).trim();
|
|
||||||
params.add(new BasicNameValuePair("oauth_signature", signature));
|
|
||||||
} catch (NoSuchAlgorithmException | InvalidKeyException | UnsupportedEncodingException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
return params;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getOauth_nonce() {
|
|
||||||
return (new StringBuilder(String.valueOf(Math.random() * 100000000D))).toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getOauth_timestamp() {
|
|
||||||
long stamp = (long) (System.currentTimeMillis() / 1000D);
|
|
||||||
return (new StringBuilder(String.valueOf(stamp))).toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
static class SortParams implements Comparator<NameValuePair> {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int compare(NameValuePair nameValuePair1, NameValuePair nameValuePair2) {
|
|
||||||
return nameValuePair1.getName().compareTo(nameValuePair2.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,14 +1,12 @@
|
|||||||
package me.gilo.woodroid.data.api;
|
package me.gilo.woodroid.data.api;
|
||||||
|
|
||||||
|
|
||||||
import me.gilo.woodroid.data.callbacks.*;
|
import me.gilo.woodroid.models.Product;
|
||||||
import me.gilo.woodroid.data.callbacks.Data;
|
|
||||||
import me.gilo.woodroid.models.*;
|
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.http.*;
|
import retrofit2.http.*;
|
||||||
import rx.Observable;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public interface ProductAPI {
|
public interface ProductAPI {
|
||||||
@ -27,9 +25,33 @@ public interface ProductAPI {
|
|||||||
Call<ArrayList<Product>> search(@Query("search") String search);
|
Call<ArrayList<Product>> search(@Query("search") String search);
|
||||||
|
|
||||||
@GET("products")
|
@GET("products")
|
||||||
Call<ArrayList<Product>> filter(@QueryMap Map<String, String> filter);
|
Call<List<Product>> filter(@QueryMap Map<String, String> filter);
|
||||||
|
|
||||||
@GET("products/count")
|
@GET("products/count")
|
||||||
Call<ArrayList<Product>> getProductsCount();
|
Call<List<Product>> getProductsCount();
|
||||||
|
|
||||||
|
|
||||||
|
@Headers("Content-Type: application/json")
|
||||||
|
@POST("products")
|
||||||
|
Call<Product> create(@Body Product body);
|
||||||
|
|
||||||
|
@GET("products/{id}")
|
||||||
|
Call<Product> view(@Path("id") int id);
|
||||||
|
|
||||||
|
@GET("products")
|
||||||
|
Call<List<Product>> list();
|
||||||
|
|
||||||
|
@Headers("Content-Type: application/json")
|
||||||
|
@PUT("products/{id}")
|
||||||
|
Call<Product> update(@Path("id") int id, @Body Product body);
|
||||||
|
|
||||||
|
@DELETE("products/{id}")
|
||||||
|
Call<Product> delete(@Path("id") int id);
|
||||||
|
|
||||||
|
@DELETE("products/{id}")
|
||||||
|
Call<Product> delete(@Path("id") int id, @Query("force") boolean force);
|
||||||
|
|
||||||
|
@POST("products/batch")
|
||||||
|
Call<String> batch(@Body Product body);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package me.gilo.woodroid.data.auth;
|
||||||
|
|
||||||
|
import org.apache.http.NameValuePair;
|
||||||
|
|
||||||
|
import java.util.Comparator;
|
||||||
|
|
||||||
|
public class AlphabeticSorter implements Comparator<NameValuePair> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compare(NameValuePair nameValuePair1, NameValuePair nameValuePair2) {
|
||||||
|
return nameValuePair1.getName().compareTo(nameValuePair2.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,118 @@
|
|||||||
|
package me.gilo.woodroid.data.auth;
|
||||||
|
|
||||||
|
import android.util.Base64;
|
||||||
|
import okhttp3.HttpUrl;
|
||||||
|
import okhttp3.Interceptor;
|
||||||
|
import okhttp3.Request;
|
||||||
|
import okhttp3.Response;
|
||||||
|
import org.apache.http.NameValuePair;
|
||||||
|
import org.apache.http.client.utils.URLEncodedUtils;
|
||||||
|
import org.apache.http.message.BasicNameValuePair;
|
||||||
|
|
||||||
|
import javax.crypto.Mac;
|
||||||
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.security.InvalidKeyException;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
public class AuthIntercepter implements Interceptor {
|
||||||
|
|
||||||
|
|
||||||
|
static String oauth_nonce = "";
|
||||||
|
static String oauth_timestamp = "";
|
||||||
|
static String oauth_signature_method = "HMAC-SHA1";
|
||||||
|
private String oauth_signature = "";
|
||||||
|
|
||||||
|
private String consumerKey;
|
||||||
|
private String consumerSecret;
|
||||||
|
|
||||||
|
|
||||||
|
public AuthIntercepter(String consumerKey, String consumerSecret) {
|
||||||
|
this.consumerKey = consumerKey;
|
||||||
|
this.consumerSecret = consumerSecret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response intercept(Chain chain) throws IOException {
|
||||||
|
ArrayList<NameValuePair> params = getOauthParams(chain);
|
||||||
|
|
||||||
|
HttpUrl.Builder builder = chain.request().url().newBuilder();
|
||||||
|
for (NameValuePair entry : params) {
|
||||||
|
builder.addQueryParameter(entry.getName(), entry.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
Request newRequest = chain.request()
|
||||||
|
.newBuilder()
|
||||||
|
.url(builder.build())
|
||||||
|
.header("Accept", "application/json")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
return chain.proceed(newRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<NameValuePair> getOauthParams(Chain chain) {
|
||||||
|
ArrayList<NameValuePair> params = new ArrayList<>();
|
||||||
|
|
||||||
|
oauth_nonce = getOauth_nonce();
|
||||||
|
oauth_timestamp = getOauth_timestamp();
|
||||||
|
|
||||||
|
params.add(new BasicNameValuePair("oauth_consumer_key", consumerKey));
|
||||||
|
params.add(new BasicNameValuePair("oauth_nonce", oauth_nonce));
|
||||||
|
params.add(new BasicNameValuePair("oauth_timestamp", oauth_timestamp));
|
||||||
|
params.add(new BasicNameValuePair("oauth_signature_method", oauth_signature_method));
|
||||||
|
|
||||||
|
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 );
|
||||||
|
|
||||||
|
params.add(new BasicNameValuePair("oauth_signature", oauth_signature));
|
||||||
|
|
||||||
|
return params;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOauth_nonce() {
|
||||||
|
return (new StringBuilder(String.valueOf(Math.random() * 100000000D))).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStringToSign(String method, String url, String parameters) {
|
||||||
|
String string_to_sign = "";
|
||||||
|
try {
|
||||||
|
string_to_sign = (new StringBuilder(method + "&"))
|
||||||
|
.append(URLEncoder.encode(url, "utf-8")).append("&")
|
||||||
|
.append(URLEncoder.encode(parameters, "utf-8"))
|
||||||
|
.toString();
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return string_to_sign;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getOauth_signature(String method, String url, String consumerSecret, String parameters) {
|
||||||
|
String signature = "";
|
||||||
|
String string_to_sign = getStringToSign(method, url, parameters);
|
||||||
|
|
||||||
|
try {
|
||||||
|
Mac mac = Mac.getInstance(oauth_signature_method);
|
||||||
|
String secret = consumerSecret + "&";
|
||||||
|
mac.init(new SecretKeySpec(secret.getBytes("utf-8"), oauth_signature_method));
|
||||||
|
signature = Base64.encodeToString(mac.doFinal(string_to_sign.getBytes("utf-8")), 0).trim();
|
||||||
|
} catch (NoSuchAlgorithmException | InvalidKeyException | UnsupportedEncodingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return signature;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getOauth_timestamp() {
|
||||||
|
long stamp = (long) (System.currentTimeMillis() / 1000D);
|
||||||
|
return (new StringBuilder(String.valueOf(stamp))).toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -8,9 +8,6 @@ import me.gilo.woodroid.models.Category;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by Aron on 12/8/2015.
|
|
||||||
*/
|
|
||||||
public class CategoriesCallback {
|
public class CategoriesCallback {
|
||||||
@SerializedName("product_categories")
|
@SerializedName("product_categories")
|
||||||
ArrayList<Category> categories;
|
ArrayList<Category> categories;
|
||||||
|
|||||||
@ -11,7 +11,7 @@ public class CouponRepository extends WooRepository{
|
|||||||
private final CouponAPI apiService;
|
private final CouponAPI apiService;
|
||||||
|
|
||||||
public CouponRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
public CouponRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
||||||
super("coupon", baseUrl, consumerKey, consumerSecret);
|
super( baseUrl, consumerKey, consumerSecret);
|
||||||
apiService = retrofit.create(CouponAPI.class);
|
apiService = retrofit.create(CouponAPI.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,9 +1,7 @@
|
|||||||
package me.gilo.woodroid.repo;
|
package me.gilo.woodroid.repo;
|
||||||
|
|
||||||
import me.gilo.woodroid.data.api.CustomerAPI;
|
import me.gilo.woodroid.data.api.CustomerAPI;
|
||||||
import me.gilo.woodroid.data.api.OrderAPI;
|
|
||||||
import me.gilo.woodroid.models.Customer;
|
import me.gilo.woodroid.models.Customer;
|
||||||
import me.gilo.woodroid.models.Order;
|
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -13,7 +11,7 @@ public class CustomerRepository extends WooRepository{
|
|||||||
private final CustomerAPI apiService;
|
private final CustomerAPI apiService;
|
||||||
|
|
||||||
public CustomerRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
public CustomerRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
||||||
super("customers", baseUrl, consumerKey, consumerSecret);
|
super(baseUrl, consumerKey, consumerSecret);
|
||||||
apiService = retrofit.create(CustomerAPI.class);
|
apiService = retrofit.create(CustomerAPI.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@ public class OrderRepository extends WooRepository {
|
|||||||
RefundRepository refundRepository;
|
RefundRepository refundRepository;
|
||||||
|
|
||||||
public OrderRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
public OrderRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
||||||
super("orders", baseUrl, consumerKey, consumerSecret);
|
super(baseUrl, consumerKey, consumerSecret);
|
||||||
apiService = retrofit.create(OrderAPI.class);
|
apiService = retrofit.create(OrderAPI.class);
|
||||||
|
|
||||||
orderNoteRepository = new OrderNoteRepository(baseUrl, consumerKey, consumerSecret);
|
orderNoteRepository = new OrderNoteRepository(baseUrl, consumerKey, consumerSecret);
|
||||||
|
|||||||
@ -1,53 +1,49 @@
|
|||||||
package me.gilo.woodroid.repo;
|
package me.gilo.woodroid.repo;
|
||||||
|
|
||||||
import me.gilo.woodroid.data.api.API;
|
|
||||||
import me.gilo.woodroid.data.api.ProductAPI;
|
import me.gilo.woodroid.data.api.ProductAPI;
|
||||||
import me.gilo.woodroid.data.api.ProductCategoryAPI;
|
|
||||||
import me.gilo.woodroid.models.Product;
|
import me.gilo.woodroid.models.Product;
|
||||||
import me.gilo.woodroid.repo.WooRepository;
|
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class ProductRepository extends WooRepository {
|
public class ProductRepository extends WooRepository {
|
||||||
|
|
||||||
private final ProductAPI apiService;
|
private final ProductAPI apiService;
|
||||||
|
|
||||||
public ProductRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
public ProductRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
||||||
super("products", baseUrl, consumerKey, consumerSecret);
|
super(baseUrl, consumerKey, consumerSecret);
|
||||||
apiService = retrofit.create(ProductAPI.class);
|
apiService = retrofit.create(ProductAPI.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO
|
public Call<Product> create(Product product) {
|
||||||
public void create(Product product) {
|
return apiService.create(product);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO
|
|
||||||
public void update() {
|
|
||||||
|
|
||||||
|
public Call<Product> product(int id) {
|
||||||
|
return apiService.view(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO
|
public Call<List<Product>> products() {
|
||||||
public void delete() {
|
return apiService.list();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Call<ArrayList<Product>> products() {
|
public Call<Product> update(int id, Product product) {
|
||||||
API apiService = restAdapter.createAPI("products");
|
return apiService.update(id, product);
|
||||||
return apiService.getProducts();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Call<ArrayList<Product>> products(HashMap<String, String> filters) {
|
public Call<Product> delete(int id) {
|
||||||
API apiService = restAdapter.createAPI("products", filters);
|
return apiService.delete(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Call<Product> delete(int id, boolean force) {
|
||||||
|
return apiService.delete(id, force);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Call<List<Product>> products(HashMap<String, String> filters) {
|
||||||
return apiService.filter(filters);
|
return apiService.filter(filters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,38 +1,24 @@
|
|||||||
package me.gilo.woodroid.repo;
|
package me.gilo.woodroid.repo;
|
||||||
|
|
||||||
import me.gilo.woodroid.data.RestAdapter;
|
import me.gilo.woodroid.data.auth.AuthIntercepter;
|
||||||
import me.gilo.woodroid.data.api.CouponAPI;
|
|
||||||
import me.gilo.woodroid.models.Coupon;
|
|
||||||
import okhttp3.OkHttpClient;
|
import okhttp3.OkHttpClient;
|
||||||
import okhttp3.logging.HttpLoggingInterceptor;
|
import okhttp3.logging.HttpLoggingInterceptor;
|
||||||
import retrofit2.Call;
|
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
import retrofit2.converter.gson.GsonConverterFactory;
|
import retrofit2.converter.gson.GsonConverterFactory;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class WooRepository {
|
public class WooRepository {
|
||||||
|
|
||||||
private String baseUrl;
|
//TODO Apply DI or single instance on this
|
||||||
private String consumerKey;
|
|
||||||
private String consumerSecret;
|
|
||||||
|
|
||||||
public RestAdapter restAdapter;
|
|
||||||
public Retrofit retrofit;
|
public Retrofit retrofit;
|
||||||
|
|
||||||
public WooRepository(String method, String baseUrl, String consumerKey, String consumerSecret) {
|
public WooRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
||||||
this.baseUrl = baseUrl;
|
|
||||||
this.consumerKey = consumerKey;
|
|
||||||
this.consumerSecret = consumerSecret;
|
|
||||||
|
|
||||||
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
|
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
|
||||||
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
|
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
|
||||||
|
|
||||||
restAdapter = new RestAdapter(baseUrl, consumerKey, consumerSecret);
|
|
||||||
|
|
||||||
OkHttpClient client = new OkHttpClient.Builder()
|
OkHttpClient client = new OkHttpClient.Builder()
|
||||||
.addInterceptor(restAdapter.getInterceptor(method, null))
|
.addInterceptor(new AuthIntercepter(consumerKey, consumerSecret))
|
||||||
.addInterceptor(loggingInterceptor)
|
.addInterceptor(loggingInterceptor)
|
||||||
.readTimeout(30, TimeUnit.SECONDS)
|
.readTimeout(30, TimeUnit.SECONDS)
|
||||||
.writeTimeout(30, TimeUnit.SECONDS)
|
.writeTimeout(30, TimeUnit.SECONDS)
|
||||||
|
|||||||
@ -13,7 +13,7 @@ public class OrderNoteRepository extends WooRepository {
|
|||||||
private final OrderNoteAPI apiService;
|
private final OrderNoteAPI apiService;
|
||||||
|
|
||||||
public OrderNoteRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
public OrderNoteRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
||||||
super("orders", baseUrl, consumerKey, consumerSecret);
|
super(baseUrl, consumerKey, consumerSecret);
|
||||||
apiService = retrofit.create(OrderNoteAPI.class);
|
apiService = retrofit.create(OrderNoteAPI.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,7 @@ public class RefundRepository extends WooRepository {
|
|||||||
private final RefundAPI apiService;
|
private final RefundAPI apiService;
|
||||||
|
|
||||||
public RefundRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
public RefundRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
||||||
super("orders", baseUrl, consumerKey, consumerSecret);
|
super(baseUrl, consumerKey, consumerSecret);
|
||||||
apiService = retrofit.create(RefundAPI.class);
|
apiService = retrofit.create(RefundAPI.class);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +1,7 @@
|
|||||||
package me.gilo.woodroid.repo.product;
|
package me.gilo.woodroid.repo.product;
|
||||||
|
|
||||||
import me.gilo.woodroid.data.api.ProductAttributeAPI;
|
import me.gilo.woodroid.data.api.ProductAttributeAPI;
|
||||||
import me.gilo.woodroid.data.api.ProductCategoryAPI;
|
|
||||||
import me.gilo.woodroid.models.Attribute;
|
import me.gilo.woodroid.models.Attribute;
|
||||||
import me.gilo.woodroid.models.Category;
|
|
||||||
import me.gilo.woodroid.repo.WooRepository;
|
import me.gilo.woodroid.repo.WooRepository;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
|
|
||||||
@ -14,7 +12,7 @@ public class AttributeRepository extends WooRepository {
|
|||||||
private final ProductAttributeAPI apiService;
|
private final ProductAttributeAPI apiService;
|
||||||
|
|
||||||
public AttributeRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
public AttributeRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
||||||
super("products/attributes", baseUrl, consumerKey, consumerSecret);
|
super(baseUrl, consumerKey, consumerSecret);
|
||||||
apiService = retrofit.create(ProductAttributeAPI.class);
|
apiService = retrofit.create(ProductAttributeAPI.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,8 @@
|
|||||||
package me.gilo.woodroid.repo.product;
|
package me.gilo.woodroid.repo.product;
|
||||||
|
|
||||||
import me.gilo.woodroid.data.api.ProductAttributeTermAPI;
|
import me.gilo.woodroid.data.api.ProductAttributeTermAPI;
|
||||||
import me.gilo.woodroid.data.api.ProductCategoryAPI;
|
|
||||||
import me.gilo.woodroid.models.Attribute;
|
import me.gilo.woodroid.models.Attribute;
|
||||||
import me.gilo.woodroid.models.AttributeTerm;
|
import me.gilo.woodroid.models.AttributeTerm;
|
||||||
import me.gilo.woodroid.models.Category;
|
|
||||||
import me.gilo.woodroid.repo.WooRepository;
|
import me.gilo.woodroid.repo.WooRepository;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
|
|
||||||
@ -17,7 +15,7 @@ public class AttributeTermRepository extends WooRepository {
|
|||||||
Attribute attribute;
|
Attribute attribute;
|
||||||
|
|
||||||
public AttributeTermRepository(String baseUrl, String consumerKey, String consumerSecret, Attribute attribute) {
|
public AttributeTermRepository(String baseUrl, String consumerKey, String consumerSecret, Attribute attribute) {
|
||||||
super("products/categories", baseUrl, consumerKey, consumerSecret);
|
super(baseUrl, consumerKey, consumerSecret);
|
||||||
apiService = retrofit.create(ProductAttributeTermAPI.class);
|
apiService = retrofit.create(ProductAttributeTermAPI.class);
|
||||||
|
|
||||||
this.attribute = attribute;
|
this.attribute = attribute;
|
||||||
|
|||||||
@ -1,9 +1,7 @@
|
|||||||
package me.gilo.woodroid.repo.product;
|
package me.gilo.woodroid.repo.product;
|
||||||
|
|
||||||
import me.gilo.woodroid.data.api.CustomerAPI;
|
|
||||||
import me.gilo.woodroid.data.api.ProductCategoryAPI;
|
import me.gilo.woodroid.data.api.ProductCategoryAPI;
|
||||||
import me.gilo.woodroid.models.Category;
|
import me.gilo.woodroid.models.Category;
|
||||||
import me.gilo.woodroid.models.Customer;
|
|
||||||
import me.gilo.woodroid.repo.WooRepository;
|
import me.gilo.woodroid.repo.WooRepository;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
|
|
||||||
@ -14,7 +12,7 @@ public class CategoryRepository extends WooRepository {
|
|||||||
private final ProductCategoryAPI apiService;
|
private final ProductCategoryAPI apiService;
|
||||||
|
|
||||||
public CategoryRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
public CategoryRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
||||||
super("products/categories", baseUrl, consumerKey, consumerSecret);
|
super(baseUrl, consumerKey, consumerSecret);
|
||||||
apiService = retrofit.create(ProductCategoryAPI.class);
|
apiService = retrofit.create(ProductCategoryAPI.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
package me.gilo.woodroid.repo.product;
|
package me.gilo.woodroid.repo.product;
|
||||||
|
|
||||||
import me.gilo.woodroid.data.api.ProductCategoryAPI;
|
|
||||||
import me.gilo.woodroid.data.api.ProductReviewAPI;
|
import me.gilo.woodroid.data.api.ProductReviewAPI;
|
||||||
import me.gilo.woodroid.models.Category;
|
|
||||||
import me.gilo.woodroid.models.ProductReview;
|
import me.gilo.woodroid.models.ProductReview;
|
||||||
import me.gilo.woodroid.repo.WooRepository;
|
import me.gilo.woodroid.repo.WooRepository;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
@ -14,7 +12,7 @@ public class ReviewRepository extends WooRepository {
|
|||||||
private final ProductReviewAPI apiService;
|
private final ProductReviewAPI apiService;
|
||||||
|
|
||||||
public ReviewRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
public ReviewRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
||||||
super("products/reviews", baseUrl, consumerKey, consumerSecret);
|
super(baseUrl, consumerKey, consumerSecret);
|
||||||
apiService = retrofit.create(ProductReviewAPI.class);
|
apiService = retrofit.create(ProductReviewAPI.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
package me.gilo.woodroid.repo.product;
|
package me.gilo.woodroid.repo.product;
|
||||||
|
|
||||||
import me.gilo.woodroid.data.api.ProductCategoryAPI;
|
|
||||||
import me.gilo.woodroid.data.api.ShippingClassAPI;
|
import me.gilo.woodroid.data.api.ShippingClassAPI;
|
||||||
import me.gilo.woodroid.models.Category;
|
|
||||||
import me.gilo.woodroid.models.ShippingClass;
|
import me.gilo.woodroid.models.ShippingClass;
|
||||||
import me.gilo.woodroid.repo.WooRepository;
|
import me.gilo.woodroid.repo.WooRepository;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
@ -14,7 +12,7 @@ public class ShippingClassRepository extends WooRepository {
|
|||||||
private final ShippingClassAPI apiService;
|
private final ShippingClassAPI apiService;
|
||||||
|
|
||||||
public ShippingClassRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
public ShippingClassRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
||||||
super("products/categories", baseUrl, consumerKey, consumerSecret);
|
super(baseUrl, consumerKey, consumerSecret);
|
||||||
apiService = retrofit.create(ShippingClassAPI.class);
|
apiService = retrofit.create(ShippingClassAPI.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
package me.gilo.woodroid.repo.product;
|
package me.gilo.woodroid.repo.product;
|
||||||
|
|
||||||
import me.gilo.woodroid.data.api.ProductCategoryAPI;
|
|
||||||
import me.gilo.woodroid.data.api.ProductTagAPI;
|
import me.gilo.woodroid.data.api.ProductTagAPI;
|
||||||
import me.gilo.woodroid.models.Category;
|
|
||||||
import me.gilo.woodroid.models.Tag;
|
import me.gilo.woodroid.models.Tag;
|
||||||
import me.gilo.woodroid.repo.WooRepository;
|
import me.gilo.woodroid.repo.WooRepository;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
@ -14,7 +12,7 @@ public class TagRepository extends WooRepository {
|
|||||||
private final ProductTagAPI apiService;
|
private final ProductTagAPI apiService;
|
||||||
|
|
||||||
public TagRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
public TagRepository(String baseUrl, String consumerKey, String consumerSecret) {
|
||||||
super("products/categories", baseUrl, consumerKey, consumerSecret);
|
super( baseUrl, consumerKey, consumerSecret);
|
||||||
apiService = retrofit.create(ProductTagAPI.class);
|
apiService = retrofit.create(ProductTagAPI.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
package me.gilo.woodroid.repo.product;
|
package me.gilo.woodroid.repo.product;
|
||||||
|
|
||||||
import me.gilo.woodroid.data.api.ProductCategoryAPI;
|
|
||||||
import me.gilo.woodroid.data.api.ProductVariationAPI;
|
import me.gilo.woodroid.data.api.ProductVariationAPI;
|
||||||
import me.gilo.woodroid.models.Category;
|
|
||||||
import me.gilo.woodroid.models.Product;
|
import me.gilo.woodroid.models.Product;
|
||||||
import me.gilo.woodroid.models.Variation;
|
import me.gilo.woodroid.models.Variation;
|
||||||
import me.gilo.woodroid.repo.WooRepository;
|
import me.gilo.woodroid.repo.WooRepository;
|
||||||
@ -16,7 +14,7 @@ public class VariationRepository extends WooRepository {
|
|||||||
Product product;
|
Product product;
|
||||||
|
|
||||||
public VariationRepository(String baseUrl, String consumerKey, String consumerSecret, Product product) {
|
public VariationRepository(String baseUrl, String consumerKey, String consumerSecret, Product product) {
|
||||||
super("products/categories", baseUrl, consumerKey, consumerSecret);
|
super(baseUrl, consumerKey, consumerSecret);
|
||||||
apiService = retrofit.create(ProductVariationAPI.class);
|
apiService = retrofit.create(ProductVariationAPI.class);
|
||||||
|
|
||||||
this.product = product;
|
this.product = product;
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package me.gilo.woodroid.dto;
|
package me.gilo.woodroid.services;
|
||||||
|
|
||||||
import me.gilo.woodroid.data.RestAdapter;
|
|
||||||
import me.gilo.woodroid.models.Coupon;
|
import me.gilo.woodroid.models.Coupon;
|
||||||
import me.gilo.woodroid.repo.CouponRepository;
|
import me.gilo.woodroid.repo.CouponRepository;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
@ -0,0 +1,42 @@
|
|||||||
|
package me.gilo.woodroid.services;
|
||||||
|
|
||||||
|
import me.gilo.woodroid.models.Product;
|
||||||
|
import me.gilo.woodroid.repo.ProductRepository;
|
||||||
|
import retrofit2.Call;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ProductService {
|
||||||
|
|
||||||
|
final ProductRepository productRepository;
|
||||||
|
|
||||||
|
public ProductService(String baseUrl, String consumerKey, String consumerSecret) {
|
||||||
|
productRepository = new ProductRepository(baseUrl, consumerKey, consumerSecret);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Call<Product> create(Product product) {
|
||||||
|
return productRepository.create(product);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Call<Product> product(int id) {
|
||||||
|
return productRepository.product(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Call<List<Product>> products() {
|
||||||
|
return productRepository.products();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Call<Product> update(int id, Product product) {
|
||||||
|
return productRepository.update(id, product);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Call<Product> delete(int id) {
|
||||||
|
return productRepository.delete(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Call<Product> delete(int id, boolean force) {
|
||||||
|
return productRepository.delete(id, force);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user