Browse Source

Adds get all Devices API call.

pull/4/head
Mushegh Sahakyan 4 years ago
parent
commit
fd45787440
4 changed files with 45 additions and 0 deletions
  1. +1
    -0
      ui/src/main/java/com/wireguard/android/api/ApiConstants.java
  2. +8
    -0
      ui/src/main/java/com/wireguard/android/api/network/ClientApi.java
  3. +30
    -0
      ui/src/main/java/com/wireguard/android/repository/DataRepository.java
  4. +6
    -0
      ui/src/main/java/com/wireguard/android/viewmodel/LoginViewModel.java

+ 1
- 0
ui/src/main/java/com/wireguard/android/api/ApiConstants.java View File

@@ -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";
}

+ 8
- 0
ui/src/main/java/com/wireguard/android/api/network/ClientApi.java View File

@@ -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<User> login(@Body HashMap<String,String> params);

@GET(ApiConstants.ALL_DEVICES_URL)
Call<List<Device>> getAllDevices(@HeaderMap HashMap<String,String> header);
}

+ 30
- 0
ui/src/main/java/com/wireguard/android/repository/DataRepository.java View File

@@ -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<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) {
return "Error: User agent: " + System.getProperty("http.agent") + ", Request body: " + call.request().body() + ", URL: " +


+ 6
- 0
ui/src/main/java/com/wireguard/android/viewmodel/LoginViewModel.java View File

@@ -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<StatusResource<User>> login(String username,String password, Context context){
return DataRepository.getRepositoryInstance().login(username,password,context);
}

public LiveData<StatusResource<Device>> getAllDevices(Context context){
return DataRepository.getRepositoryInstance().getAllDevices(context);
}

}

Loading…
Cancel
Save