package com.example.agathe.tsgtest;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.TextView;
import com.android.volley.AuthFailureError;
import com.android.volley.Cache;
import com.android.volley.Network;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.BasicNetwork;
import com.android.volley.toolbox.DiskBasedCache;
import com.android.volley.toolbox.HurlStack;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.example.agathe.tsgtest.dto.Contact;
import com.olab.smplibrary.DataResponseCallback;
import com.olab.smplibrary.SMPLibrary;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by agathe on 23/01/17.
*/
public class ContactsTask {
private static final String LOG_TAG = "ContactsTask";
private Context context;
private String[] tokens;
List<List<Contact>> contacts = null;
public ContactsTask(Context context, String tokens[]) {
this.context = context;
this.tokens = tokens;
}
public void getContactsList(final VolleyCallback callback) {
final List<List<Contact>> contacts = new ArrayList<>();
RequestQueue queue;
Cache cache = new DiskBasedCache(context.getCacheDir(), 1024 * 1024); // 1MB cap
Network network = new BasicNetwork(new HurlStack());
queue = new RequestQueue(cache, network);
queue.start();
// Request a string response from the provided URL.
final List<String> types = new ArrayList<>();
types.add("frequent_contacts");
types.add("business_contacts");
types.add("private_contacts");
for (final String s : types) {
final List<Contact> subContacts = new ArrayList<>();
String url = "http://217.96.70.94/dsn-smp/" + s + "/8";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// Display the first 500 characters of the response string.
Contact type = new Contact();
type.setName(s);
subContacts.add(type);
Log.i(LOG_TAG, "Response is: " + response);
String[] parts = response.split("phoneNumbers");
for (String contact : parts) {
if (contact.contains("+")) {
boolean dup = false;
// to avoid dublons
for (Contact c : subContacts) {
if (c.getPhoneNumber().equals("+" + contact.split("\\+")[1].split("\"")[0])) {
dup = true;
}
}
if (dup == false) {
Contact c = new Contact();
c.setName(contact.split("name\":\"")[1].split("\"")[0]);
c.setPhoneNumber("+" + contact.split("\\+")[1].split("\"")[0]);
c.setRelationStrength(contact.split("relationStrength\":")[1].split("\\}")[0]);
subContacts.add(c);
}
}
}
contacts.add(subContacts);
if (contacts.size() == 3) {
callback.onSuccess(contacts);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i(LOG_TAG, "That didn't work!");
}
}
){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("Authorization", "Bearer " + tokens[0]);
return params;
}
};
queue.add(stringRequest);
}
}
public interface VolleyCallback{
void onSuccess(List<List<Contact>> contacts);
}
}