diff --git a/app/build.gradle b/app/build.gradle
index 89d8f74..2e195a7 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -41,9 +41,10 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
+ implementation 'com.android.support:design:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c272962..d01fa86 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -11,7 +11,11 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
-
+
+
diff --git a/app/src/main/java/me/gilo/wc_app/MainActivity.kt b/app/src/main/java/me/gilo/wc_app/MainActivity.kt
index 5dc3de6..75e54b1 100644
--- a/app/src/main/java/me/gilo/wc_app/MainActivity.kt
+++ b/app/src/main/java/me/gilo/wc_app/MainActivity.kt
@@ -8,6 +8,7 @@ import kotlinx.android.synthetic.main.activity_main.*
import me.gilo.woodroid.Woocommerce
import me.gilo.woodroid.Woocommerce.Builder
import me.gilo.woodroid.callback.Status
+import me.gilo.woodroid.models.Coupon
import me.gilo.woodroid.models.Product
import java.util.ArrayList
import retrofit2.Call
@@ -29,16 +30,40 @@ class MainActivity : AppCompatActivity() {
.setConsumerSecret("cs_062e8e3a7ae0ce08fdebc0c39f8f834d5e87598e")
.build()
+// tvText.append("\n")
+// tvText.append("\n")
+// tvText.append("Products")
+// tvText.append("\n")
+// tvText.append("\n")
+//
+// woocommerce.products.enqueue(object : Callback> {
+// override fun onResponse(call: Call>, response: Response>) {
+// val products = response.body()
+// for (product in products!!) {
+// tvText.append(product.title + "\n")
+// }
+// }
+//
+// override fun onFailure(call: Call>, t: Throwable) {
+//
+// }
+// })
+//
+// tvText.append("\n")
+// tvText.append("\n")
+// tvText.append("Coupons")
+// tvText.append("\n")
+// tvText.append("\n")
- woocommerce.products.enqueue(object : Callback> {
- override fun onResponse(call: Call>, response: Response>) {
- val products = response.body()
- for (product in products!!) {
- tvText.append(product.title)
+ woocommerce.Coupon().coupons().enqueue(object : Callback> {
+ override fun onResponse(call: Call>, response: Response>) {
+ val coupons = response.body()
+ for (coupon in coupons!!) {
+ tvText.append(coupon.description + "\n")
}
}
- override fun onFailure(call: Call>, t: Throwable) {
+ override fun onFailure(call: Call>, t: Throwable) {
}
})
diff --git a/app/src/main/java/me/gilo/wc_app/ui/ShopActivity.kt b/app/src/main/java/me/gilo/wc_app/ui/ShopActivity.kt
new file mode 100644
index 0000000..6c8a803
--- /dev/null
+++ b/app/src/main/java/me/gilo/wc_app/ui/ShopActivity.kt
@@ -0,0 +1,23 @@
+package me.gilo.wc_app.ui
+
+import android.os.Bundle
+import android.support.design.widget.Snackbar
+import android.support.v7.app.AppCompatActivity;
+import me.gilo.wc_app.R
+
+import kotlinx.android.synthetic.main.activity_shop.*
+
+class ShopActivity : AppCompatActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_shop)
+ setSupportActionBar(toolbar)
+
+ fab.setOnClickListener { view ->
+ Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
+ .setAction("Action", null).show()
+ }
+ }
+
+}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 555293e..edba38f 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,20 +1,18 @@
-
+ tools:context=".MainActivity"
+ android:layout_margin="16dp"
+ >
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ />
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_shop.xml b/app/src/main/res/layout/activity_shop.xml
new file mode 100644
index 0000000..bfbb155
--- /dev/null
+++ b/app/src/main/res/layout/activity_shop.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/content_shop.xml b/app/src/main/res/layout/content_shop.xml
new file mode 100644
index 0000000..e121533
--- /dev/null
+++ b/app/src/main/res/layout/content_shop.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..59a0b0c
--- /dev/null
+++ b/app/src/main/res/values/dimens.xml
@@ -0,0 +1,3 @@
+
+ 16dp
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b100bf1..7c30b86 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,3 +1,4 @@
wc-app
+ ShopActivity
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 5885930..16dbab3 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -7,5 +7,11 @@
- @color/colorPrimaryDark
- @color/colorAccent
+
+
+
diff --git a/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.java b/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.java
index 0c776d3..78ba08a 100644
--- a/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.java
+++ b/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.java
@@ -1,6 +1,9 @@
package me.gilo.woodroid;
+import me.gilo.woodroid.dto.CouponData;
+import me.gilo.woodroid.models.Coupon;
import me.gilo.woodroid.models.Product;
+import me.gilo.woodroid.repo.CouponRepository;
import me.gilo.woodroid.repo.ProductRepository;
import retrofit2.Call;
import retrofit2.Callback;
@@ -17,33 +20,7 @@ public class Woocommerce {
private String consumerSecret;
final ProductRepository productRepository;
-
- public static void main(String args[]){
- System.out.println("Hello");
-
- Woocommerce woocommerce = new Woocommerce.Builder()
- .setSiteUrl("http://iappsdevelopers.com/codecan/woodroid")
- .setApiVersion("2")
- .setConsumerKey("ck_62b755890341ad3d2bd334433d30b5070eea349f")
- .setConsumerSecret("cs_8f678fedc94cbf520e0240d6eacab4dab2954aaa")
- .build();
-
-
- woocommerce.getProducts().enqueue(new Callback>() {
- @Override
- public void onResponse(Call> call, Response> response) {
- ArrayList products = response.body();
- for (Product product : products){
- System.out.println(product.getTitle());
- }
- }
-
- @Override
- public void onFailure(Call> call, Throwable t) {
-
- }
- });
- }
+ final CouponData couponData;
public Woocommerce(String siteUrl, String apiVerion, String consumerKey, String consumerSecret) {
this.siteUrl = siteUrl;
@@ -54,6 +31,7 @@ public class Woocommerce {
this.baseUrl = siteUrl + "/wp-json/wc/v" + apiVerion + "/";
productRepository = new ProductRepository(baseUrl, consumerKey, consumerSecret);
+ couponData = new CouponData(baseUrl, consumerKey, consumerSecret);
}
@@ -98,5 +76,7 @@ public class Woocommerce {
return productRepository.products();
}
-
+ public CouponData Coupon() {
+ return couponData;
+ }
}
diff --git a/woodroid/src/main/java/me/gilo/woodroid/data/API.java b/woodroid/src/main/java/me/gilo/woodroid/data/API.java
index 3b534fa..fe66a42 100644
--- a/woodroid/src/main/java/me/gilo/woodroid/data/API.java
+++ b/woodroid/src/main/java/me/gilo/woodroid/data/API.java
@@ -77,7 +77,15 @@ public interface API {
Call loginUser2(@Path("email") String email);
////////////////////////////////////////////////////////////////////////
- //Coupons
+ /** Coupons
+ The coupons API allows you to
+ 1. create,
+ 2. view,
+ 3. update
+ 4. delete
+ individual, or a batch, of coupon codes.
+
+ **/
////////////////////////////////////////////////////////////////////////
@Headers("Content-Type: application/json")
diff --git a/woodroid/src/main/java/me/gilo/woodroid/data/CouponAPI.java b/woodroid/src/main/java/me/gilo/woodroid/data/CouponAPI.java
new file mode 100644
index 0000000..3f137a2
--- /dev/null
+++ b/woodroid/src/main/java/me/gilo/woodroid/data/CouponAPI.java
@@ -0,0 +1,45 @@
+package me.gilo.woodroid.data;
+
+
+import me.gilo.woodroid.models.Coupon;
+import retrofit2.Call;
+import retrofit2.http.*;
+
+import java.util.List;
+
+public interface CouponAPI{
+
+ /** Coupons
+ The coupons API allows you to
+ 1. create,
+ 2. view,
+ 3. update
+ 4. delete
+ individual, or a batch, of coupon codes.
+
+ **/
+
+ @Headers("Content-Type: application/json")
+ @POST("coupons")
+ Call create(@Body Coupon body);
+
+ @GET("coupons/{id}")
+ Call view(@Path("id") int id);
+
+ @GET("coupons")
+ Call> list();
+
+ @Headers("Content-Type: application/json")
+ @PUT("coupons/{id}")
+ Call update(@Path("id") int id, @Body Coupon body);
+
+ @DELETE("coupons/{id}")
+ Call delete(@Path("id") int id);
+
+ @DELETE("coupons/{id}")
+ Call delete(@Path("id") int id, @Query("force") boolean force);
+
+ @POST("coupons/batch")
+ Call batch(@Body Coupon body);
+
+}
\ No newline at end of file
diff --git a/woodroid/src/main/java/me/gilo/woodroid/data/RestAdapter.java b/woodroid/src/main/java/me/gilo/woodroid/data/RestAdapter.java
index 9b04072..4ffec5a 100644
--- a/woodroid/src/main/java/me/gilo/woodroid/data/RestAdapter.java
+++ b/woodroid/src/main/java/me/gilo/woodroid/data/RestAdapter.java
@@ -1,19 +1,16 @@
package me.gilo.woodroid.data;
import android.util.Base64;
-import android.util.Log;
import okhttp3.HttpUrl;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
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 java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URI;
@@ -103,6 +100,81 @@ public class RestAdapter {
return retrofit.create(API.class);
}
+ public API createAPI(Class service, final String endpoint, Map 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 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);
+ };
+
+
+ return interceptor;
+ }
+
public ArrayList setParams(String endpoint) {
final String uri = baseUrl + endpoint;
diff --git a/woodroid/src/main/java/me/gilo/woodroid/dto/CouponData.java b/woodroid/src/main/java/me/gilo/woodroid/dto/CouponData.java
new file mode 100644
index 0000000..d6de32b
--- /dev/null
+++ b/woodroid/src/main/java/me/gilo/woodroid/dto/CouponData.java
@@ -0,0 +1,43 @@
+package me.gilo.woodroid.dto;
+
+import me.gilo.woodroid.data.RestAdapter;
+import me.gilo.woodroid.models.Coupon;
+import me.gilo.woodroid.repo.CouponRepository;
+import retrofit2.Call;
+
+import java.util.List;
+
+public class CouponData {
+
+ final CouponRepository couponRepository;
+
+ public CouponData(String baseUrl, String consumerKey, String consumerSecret) {
+ couponRepository = new CouponRepository(baseUrl, consumerKey, consumerSecret);
+ }
+
+ public Call create(Coupon coupon) {
+ return couponRepository.create(coupon);
+ }
+
+
+ public Call coupon(int id) {
+ return couponRepository.coupon(id);
+ }
+
+ public Call> coupons() {
+ return couponRepository.coupons();
+ }
+
+ public Call update(int id, Coupon coupon) {
+ return couponRepository.update(id, coupon);
+ }
+
+ public Call delete(int id) {
+ return couponRepository.delete(id);
+ }
+
+ public Call delete(int id, boolean force) {
+ return couponRepository.delete(id, force);
+ }
+
+}
diff --git a/woodroid/src/main/java/me/gilo/woodroid/repo/CouponRepository.java b/woodroid/src/main/java/me/gilo/woodroid/repo/CouponRepository.java
new file mode 100644
index 0000000..d387b10
--- /dev/null
+++ b/woodroid/src/main/java/me/gilo/woodroid/repo/CouponRepository.java
@@ -0,0 +1,49 @@
+package me.gilo.woodroid.repo;
+
+import me.gilo.woodroid.data.CouponAPI;
+import me.gilo.woodroid.models.Coupon;
+import okhttp3.OkHttpClient;
+import okhttp3.logging.HttpLoggingInterceptor;
+import retrofit2.Call;
+import retrofit2.Retrofit;
+import retrofit2.converter.gson.GsonConverterFactory;
+
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+public class CouponRepository extends WooRepository{
+
+ private final CouponAPI apiService;
+
+ public CouponRepository(String baseUrl, String consumerKey, String consumerSecret) {
+ super(baseUrl, consumerKey, consumerSecret);
+ apiService = retrofit.create(CouponAPI.class);
+ }
+
+ public Call create(Coupon coupon) {
+ return apiService.create(coupon);
+ }
+
+
+ public Call coupon(int id) {
+ return apiService.view(id);
+ }
+
+ public Call> coupons() {
+ return apiService.list();
+ }
+
+ public Call update(int id, Coupon coupon) {
+ return apiService.update(id, coupon);
+ }
+
+ public Call delete(int id) {
+ return apiService.delete(id);
+ }
+
+ public Call delete(int id, boolean force) {
+ return apiService.delete(id, force);
+ }
+
+
+}
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 50bca37..3196643 100644
--- a/woodroid/src/main/java/me/gilo/woodroid/repo/ProductRepository.java
+++ b/woodroid/src/main/java/me/gilo/woodroid/repo/ProductRepository.java
@@ -9,26 +9,11 @@ import retrofit2.Call;
import java.util.ArrayList;
import java.util.HashMap;
-public class ProductRepository {
+public class ProductRepository extends WooRepository{
- private String baseUrl;
- private String consumerKey;
- private String consumerSecret;
-
- RestAdapter restAdapter;
public ProductRepository(String baseUrl, String consumerKey, String consumerSecret) {
- this.baseUrl = baseUrl;
- this.consumerKey = consumerKey;
- this.consumerSecret = consumerSecret;
-
- restAdapter = new RestAdapter(baseUrl, consumerKey, consumerSecret);
- }
-
- public Call> products() {
- API apiService = restAdapter.createAPI("products");
- return apiService.getProducts();
-
+ super(baseUrl, consumerKey, consumerSecret);
}
//TODO
@@ -46,25 +31,18 @@ public class ProductRepository {
}
+ public Call> products() {
+ API apiService = restAdapter.createAPI("products");
+ return apiService.getProducts();
+
+ }
+
public Call> products(HashMap filters) {
API apiService = restAdapter.createAPI("products", filters);
return apiService.filter(filters);
}
- public Call> categories() {
- API apiService = restAdapter.createAPI("products/categories");
- return apiService.getCategories();
- }
- public Call> categories(HashMap filters) {
- API apiService = restAdapter.createAPI("products/categories", filters);
- return apiService.getCategories();
- }
-
- public Call> categories(int parent_category) {
- API apiService = restAdapter.createAPI("products/categories");
- return apiService.getCategories();
- }
diff --git a/woodroid/src/main/java/me/gilo/woodroid/repo/WooRepository.java b/woodroid/src/main/java/me/gilo/woodroid/repo/WooRepository.java
new file mode 100644
index 0000000..16572d4
--- /dev/null
+++ b/woodroid/src/main/java/me/gilo/woodroid/repo/WooRepository.java
@@ -0,0 +1,54 @@
+package me.gilo.woodroid.repo;
+
+import me.gilo.woodroid.data.API;
+import me.gilo.woodroid.data.RestAdapter;
+import me.gilo.woodroid.models.Category;
+import me.gilo.woodroid.models.Product;
+import okhttp3.OkHttpClient;
+import okhttp3.logging.HttpLoggingInterceptor;
+import retrofit2.Call;
+import retrofit2.Retrofit;
+import retrofit2.converter.gson.GsonConverterFactory;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.concurrent.TimeUnit;
+
+public class WooRepository {
+
+ private String baseUrl;
+ private String consumerKey;
+ private String consumerSecret;
+
+ RestAdapter restAdapter;
+ Retrofit retrofit;
+
+ public WooRepository(String baseUrl, String consumerKey, String consumerSecret) {
+ this.baseUrl = baseUrl;
+ this.consumerKey = consumerKey;
+ this.consumerSecret = consumerSecret;
+
+ HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
+ loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
+
+ restAdapter = new RestAdapter(baseUrl, consumerKey, consumerSecret);
+
+ OkHttpClient client = new OkHttpClient.Builder()
+ .addInterceptor(restAdapter.getInterceptor("coupons", null))
+ .addInterceptor(loggingInterceptor)
+ .readTimeout(30, TimeUnit.SECONDS)
+ .writeTimeout(30, TimeUnit.SECONDS)
+ .connectTimeout(15, TimeUnit.SECONDS)
+ .build();
+
+ retrofit = new Retrofit.Builder()
+ .baseUrl(baseUrl)
+ .addConverterFactory(GsonConverterFactory.create())
+ .client(client)
+ .build();
+
+
+ }
+
+
+}