Browse Source

Implements Login API Call in DataRepository.

pull/3/head
Mushegh Sahakyan 4 years ago
parent
commit
9391cb56ea
3 changed files with 56 additions and 0 deletions
  1. +1
    -0
      ui/src/main/java/com/wireguard/android/api/ApiConstants.java
  2. +14
    -0
      ui/src/main/java/com/wireguard/android/api/network/ClientApi.java
  3. +41
    -0
      ui/src/main/java/com/wireguard/android/repository/DataRepository.java

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

@@ -2,4 +2,5 @@ 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";
}

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

@@ -1,6 +1,20 @@
package com.wireguard.android.api.network;

import com.wireguard.android.api.ApiConstants;
import com.wireguard.android.model.User;

import java.util.Map;

import retrofit2.Call;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

/**
Interface for API Calls
**/
public interface ClientApi {
@FormUrlEncoded
@POST(ApiConstants.LOGIN_URL)
Call<User> login(@FieldMap Map<String,String> params);
}

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

@@ -2,10 +2,19 @@ package com.wireguard.android.repository;

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.User;
import com.wireguard.android.resource.StatusResource;
import java.util.HashMap;
import androidx.lifecycle.MutableLiveData;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class DataRepository {
private static volatile DataRepository instance;
private ClientApi clientApi;
public static final String NO_INTERNET_CONNECTION = "no_internet_connection";

private DataRepository()
{
@@ -26,4 +35,36 @@ public class DataRepository {
return instance;
}

public MutableLiveData<StatusResource<User>> login(final HashMap<String,String> params){
return new NetworkBoundStatusResource<User>(){

@Override protected void createCall() {
clientApi.login(params).enqueue(new Callback<User>() {
@Override public void onResponse(final Call<User> call, final Response<User> response) {
if(response.isSuccessful()) {
setMutableLiveData(StatusResource.success());
}
else {
String errorMessage = createErrorMessage(call,response);
setMutableLiveData(StatusResource.error(errorMessage));
}
}

@Override public void onFailure(final Call<User> 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: " +
call.request().url() + ", Code: " + response.code() + ", Message: " +
response.message();
}

}

Loading…
Cancel
Save