@@ -3,6 +3,7 @@ package com.wireguard.android.api; | |||||
public class ApiConstants { | public class ApiConstants { | ||||
public static final String BASE_URL = "https://jtest2.bubblesecure.com:1443/api/"; | public static final String BASE_URL = "https://jtest2.bubblesecure.com:1443/api/"; | ||||
public static final String LOGIN_URL = "auth/login"; | public static final String LOGIN_URL = "auth/login"; | ||||
public static final String ALL_DEVICES_URL = "me/devices"; | |||||
public static final String USERNAME = "username"; | public static final String USERNAME = "username"; | ||||
public static final String PASSWORD = "password"; | public static final String PASSWORD = "password"; | ||||
} | } |
@@ -1,14 +1,19 @@ | |||||
package com.wireguard.android.api.network; | package com.wireguard.android.api.network; | ||||
import com.wireguard.android.api.ApiConstants; | import com.wireguard.android.api.ApiConstants; | ||||
import com.wireguard.android.model.Device; | |||||
import com.wireguard.android.model.User; | import com.wireguard.android.model.User; | ||||
import java.util.HashMap; | import java.util.HashMap; | ||||
import java.util.List; | |||||
import retrofit2.Call; | import retrofit2.Call; | ||||
import retrofit2.http.Body; | import retrofit2.http.Body; | ||||
import retrofit2.http.GET; | |||||
import retrofit2.http.HeaderMap; | |||||
import retrofit2.http.POST; | import retrofit2.http.POST; | ||||
/** | /** | ||||
Interface for API Calls | Interface for API Calls | ||||
**/ | **/ | ||||
@@ -16,4 +21,7 @@ public interface ClientApi { | |||||
@POST(ApiConstants.LOGIN_URL) | @POST(ApiConstants.LOGIN_URL) | ||||
Call<User> login(@Body HashMap<String,String> params); | Call<User> login(@Body HashMap<String,String> params); | ||||
@GET(ApiConstants.ALL_DEVICES_URL) | |||||
Call<List<Device>> getAllDevices(@HeaderMap HashMap<String,String> header); | |||||
} | } |
@@ -2,15 +2,19 @@ package com.wireguard.android.repository; | |||||
import android.content.Context; | import android.content.Context; | ||||
import com.wireguard.android.activity.LoginActivity; | |||||
import com.wireguard.android.api.ApiConstants; | import com.wireguard.android.api.ApiConstants; | ||||
import com.wireguard.android.api.network.ClientApi; | import com.wireguard.android.api.network.ClientApi; | ||||
import com.wireguard.android.api.network.ClientService; | import com.wireguard.android.api.network.ClientService; | ||||
import com.wireguard.android.api.network.NetworkBoundStatusResource; | import com.wireguard.android.api.network.NetworkBoundStatusResource; | ||||
import com.wireguard.android.model.Device; | |||||
import com.wireguard.android.model.User; | import com.wireguard.android.model.User; | ||||
import com.wireguard.android.resource.StatusResource; | import com.wireguard.android.resource.StatusResource; | ||||
import com.wireguard.android.util.UserStore; | import com.wireguard.android.util.UserStore; | ||||
import java.util.HashMap; | import java.util.HashMap; | ||||
import java.util.List; | |||||
import androidx.lifecycle.MutableLiveData; | import androidx.lifecycle.MutableLiveData; | ||||
import retrofit2.Call; | import retrofit2.Call; | ||||
import retrofit2.Callback; | import retrofit2.Callback; | ||||
@@ -71,6 +75,32 @@ public class DataRepository { | |||||
}.getMutableLiveData(); | }.getMutableLiveData(); | ||||
} | } | ||||
public MutableLiveData<StatusResource<Device>> getAllDevices(Context context) { | |||||
return new NetworkBoundStatusResource<Device>() { | |||||
@Override protected void createCall() { | |||||
final String token = UserStore.getInstance(context).getToken(); | |||||
final HashMap<String,String> header = new HashMap<>(); | |||||
header.put("X-Bubble-Session",token); | |||||
clientApi.getAllDevices(header).enqueue(new Callback<List<Device>>() { | |||||
@Override public void onResponse(final Call<List<Device>> call, final Response<List<Device>> response) { | |||||
if (response.isSuccessful()) { | |||||
List<Device> list = response.body(); | |||||
setMutableLiveData(StatusResource.success()); | |||||
} else { | |||||
String errorMessage = createErrorMessage(call, response); | |||||
setMutableLiveData(StatusResource.error(errorMessage)); | |||||
} | |||||
} | |||||
@Override public void onFailure(final Call<List<Device>> call, final Throwable t) { | |||||
if (t instanceof Exception) { | |||||
setMutableLiveData(StatusResource.error(NO_INTERNET_CONNECTION)); | |||||
} | |||||
} | |||||
}); | |||||
} | |||||
}.getMutableLiveData(); | |||||
} | |||||
private String createErrorMessage(Call call, retrofit2.Response response) { | private String createErrorMessage(Call call, retrofit2.Response response) { | ||||
return "Error: User agent: " + System.getProperty("http.agent") + ", Request body: " + call.request().body() + ", URL: " + | return "Error: User agent: " + System.getProperty("http.agent") + ", Request body: " + call.request().body() + ", URL: " + | ||||
@@ -2,6 +2,7 @@ package com.wireguard.android.viewmodel; | |||||
import android.content.Context; | import android.content.Context; | ||||
import com.wireguard.android.model.Device; | |||||
import com.wireguard.android.model.User; | import com.wireguard.android.model.User; | ||||
import com.wireguard.android.repository.DataRepository; | import com.wireguard.android.repository.DataRepository; | ||||
import com.wireguard.android.resource.StatusResource; | import com.wireguard.android.resource.StatusResource; | ||||
@@ -15,4 +16,9 @@ public class LoginViewModel extends ViewModel { | |||||
public LiveData<StatusResource<User>> login(String username,String password, Context context){ | public LiveData<StatusResource<User>> login(String username,String password, Context context){ | ||||
return DataRepository.getRepositoryInstance().login(username,password,context); | return DataRepository.getRepositoryInstance().login(username,password,context); | ||||
} | } | ||||
public LiveData<StatusResource<Device>> getAllDevices(Context context){ | |||||
return DataRepository.getRepositoryInstance().getAllDevices(context); | |||||
} | |||||
} | } |