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