Skip to content

Commit 4a0f70d

Browse files
committed
added basic functions
1 parent 2ab00fa commit 4a0f70d

File tree

11 files changed

+249
-3
lines changed

11 files changed

+249
-3
lines changed

.idea/jarRepositories.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 96 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,104 @@
11
package com.amirshiati.androidwoocommercesdk;
22

3+
34
import android.content.Context;
4-
import android.widget.Toast;
5+
import android.os.Build;
6+
import android.util.Base64;
7+
8+
import com.amirshiati.androidwoocommercesdk.helper.JsonConverter;
9+
import com.amirshiati.androidwoocommercesdk.helper.RequestQueueSingleton;
10+
import com.amirshiati.androidwoocommercesdk.helper.UriBuilder;
11+
import com.amirshiati.androidwoocommercesdk.interfaces.OnGetProductsFinished;
12+
import com.amirshiati.androidwoocommercesdk.model.Product;
13+
import com.android.volley.AuthFailureError;
14+
import com.android.volley.DefaultRetryPolicy;
15+
import com.android.volley.Request;
16+
import com.android.volley.Response;
17+
import com.android.volley.VolleyError;
18+
import com.android.volley.toolbox.JsonArrayRequest;
19+
20+
import org.json.JSONArray;
21+
22+
import java.io.UnsupportedEncodingException;
23+
import java.util.ArrayList;
24+
import java.util.HashMap;
25+
import java.util.Map;
526

627
public class WooSDK {
728

8-
public static void makeToast(Context context) {
9-
Toast.makeText(context, "Toast", Toast.LENGTH_SHORT).show();
29+
private Context context;
30+
private String ckKey;
31+
private String csKey;
32+
private String domainName;
33+
34+
private int timeOut = 10000;
35+
36+
public WooSDK(Context context, String ckKey, String csKey, String domainName) {
37+
this.context = context;
38+
this.ckKey = ckKey;
39+
this.csKey = csKey;
40+
this.domainName = domainName;
1041
}
42+
43+
public void getProducts(long page, long perPage, OnGetProductsFinished onGetProductFinished) {
44+
final ArrayList<Product> result = new ArrayList<Product>();
45+
46+
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, UriBuilder.getProducts(domainName, page, perPage), null, new Response.Listener<JSONArray>() {
47+
@Override
48+
public void onResponse(JSONArray response) {
49+
try {
50+
51+
for (int i = 0; i < response.length(); i++)
52+
result.add(JsonConverter.jsonToProduct(response.getJSONObject(i)));
53+
54+
onGetProductFinished.onSuccess(result);
55+
56+
} catch (Exception e) {
57+
onGetProductFinished.onFail(e.getMessage());
58+
}
59+
}
60+
}, new Response.ErrorListener() {
61+
@Override
62+
public void onErrorResponse(VolleyError error) {
63+
error.printStackTrace();
64+
String body = "";
65+
//String statusCode = String.valueOf(error.networkResponse.statusCode);
66+
if (error.networkResponse.data != null) {
67+
try {
68+
body = new String(error.networkResponse.data, "UTF-8");
69+
} catch (UnsupportedEncodingException e) {
70+
e.printStackTrace();
71+
}
72+
}
73+
74+
onGetProductFinished.onFail(body);
75+
76+
}
77+
}) {
78+
@Override
79+
public Map<String, String> getHeaders() throws AuthFailureError {
80+
Map<String, String> params = new HashMap<String, String>();
81+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
82+
params.put("Authorization",
83+
String.format("Basic %s", Base64.encodeToString(String.format("%s:%s", ckKey, csKey).getBytes(), Base64.NO_WRAP)));
84+
}
85+
params.put("username", ckKey);
86+
params.put("password", csKey);
87+
return params;
88+
}
89+
90+
@Override
91+
public Request.Priority getPriority() {
92+
return Priority.IMMEDIATE;
93+
}
94+
};
95+
96+
jsonArrayRequest.setRetryPolicy(new
97+
DefaultRetryPolicy(
98+
timeOut,
99+
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
100+
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
101+
RequestQueueSingleton.getInstance(context).addToRequestQueue(jsonArrayRequest);
102+
}
103+
11104
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.amirshiati.androidwoocommercesdk.helper;
2+
3+
import com.amirshiati.androidwoocommercesdk.model.Product;
4+
5+
import org.json.JSONException;
6+
import org.json.JSONObject;
7+
8+
public class JsonConverter {
9+
10+
public static Product jsonToProduct(JSONObject toConvert) throws JSONException {
11+
return new Product(toConvert.getLong("id"), toConvert.getString("name"),
12+
toConvert.getString("slug"), toConvert.getString("permalink")
13+
);
14+
}
15+
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.amirshiati.androidwoocommercesdk.helper;
2+
3+
import android.content.Context;
4+
5+
import com.android.volley.Request;
6+
import com.android.volley.RequestQueue;
7+
import com.android.volley.toolbox.Volley;
8+
9+
public class RequestQueueSingleton {
10+
11+
private static RequestQueueSingleton instance;
12+
private RequestQueue requestQueue;
13+
private static Context ctx;
14+
15+
private RequestQueueSingleton(Context context) {
16+
ctx = context;
17+
requestQueue = getRequestQueue();
18+
19+
}
20+
21+
public static synchronized RequestQueueSingleton getInstance(Context context) {
22+
if (instance == null) {
23+
instance = new RequestQueueSingleton(context);
24+
}
25+
return instance;
26+
}
27+
28+
public RequestQueue getRequestQueue() {
29+
if (requestQueue == null) {
30+
requestQueue = Volley.newRequestQueue(ctx.getApplicationContext());
31+
}
32+
return requestQueue;
33+
}
34+
35+
public <T> void addToRequestQueue(Request<T> req) {
36+
getRequestQueue().add(req);
37+
}
38+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.amirshiati.androidwoocommercesdk.helper;
2+
3+
import android.net.Uri;
4+
5+
public class UriBuilder {
6+
7+
public static String getProducts(String domainName, long page, long perPage) {
8+
Uri.Builder builder = new Uri.Builder();
9+
builder.scheme("https")
10+
.authority(domainName)
11+
.appendPath("wp-json")
12+
.appendPath("wc")
13+
.appendPath("v3")
14+
.appendPath("products")
15+
.appendQueryParameter("page", String.valueOf(page))
16+
.appendQueryParameter("per_page", String.valueOf(perPage));
17+
18+
return builder.build().toString();
19+
}
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.amirshiati.androidwoocommercesdk.interfaces;
2+
3+
import com.amirshiati.androidwoocommercesdk.model.Product;
4+
5+
import java.util.ArrayList;
6+
7+
public interface OnGetProductsFinished {
8+
9+
void onSuccess(ArrayList<Product> products);
10+
11+
void onFail(String message);
12+
13+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.amirshiati.androidwoocommercesdk.model;
2+
3+
import java.io.Serializable;
4+
5+
public class Product implements Serializable {
6+
private Long id;
7+
private String name;
8+
private String slug;
9+
private String permaLink;
10+
11+
public Product(Long id, String name, String slug, String permaLink) {
12+
this.id = id;
13+
this.name = name;
14+
this.slug = slug;
15+
this.permaLink = permaLink;
16+
}
17+
18+
public Long getId() {
19+
return id;
20+
}
21+
22+
public void setId(Long id) {
23+
this.id = id;
24+
}
25+
26+
public String getName() {
27+
return name;
28+
}
29+
30+
public void setName(String name) {
31+
this.name = name;
32+
}
33+
34+
public String getSlug() {
35+
return slug;
36+
}
37+
38+
public void setSlug(String slug) {
39+
this.slug = slug;
40+
}
41+
42+
public String getPermaLink() {
43+
return permaLink;
44+
}
45+
46+
public void setPermaLink(String permaLink) {
47+
this.permaLink = permaLink;
48+
}
49+
}

app/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,6 @@ dependencies {
3636
testImplementation 'junit:junit:4.+'
3737
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
3838
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
39+
40+
implementation 'com.github.amir-shiati:android-woocommerce-sdk:0.0.2'
3941
}

app/src/main/java/com/amirshiati/woocommercesdk/MainActivity.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@
44

55
import android.os.Bundle;
66

7+
import com.amirshiati.androidwoocommercesdk.WooSDK;
8+
79
public class MainActivity extends AppCompatActivity {
810

911
@Override
1012
protected void onCreate(Bundle savedInstanceState) {
1113
super.onCreate(savedInstanceState);
1214
setContentView(R.layout.activity_main);
15+
1316
}
1417
}

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ allprojects {
1616
repositories {
1717
google()
1818
jcenter()
19+
maven { url 'https://jitpack.io' }
1920
}
2021
}
2122

0 commit comments

Comments
 (0)