diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemClient.java index 2d22b4fa..b769f3f9 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemClient.java @@ -1,4 +1,53 @@ package com.cappielloantonio.play.subsonic.api.system; +import android.util.Log; + +import com.cappielloantonio.play.subsonic.Subsonic; +import com.cappielloantonio.play.subsonic.models.SubsonicResponse; + +import java.util.List; +import java.util.Map; + +import okhttp3.OkHttpClient; +import okhttp3.logging.HttpLoggingInterceptor; +import retrofit2.Call; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; + public class SystemClient { + private static final String TAG = "SystemClient"; + + private Subsonic subsonic; + private Retrofit retrofit; + private SystemService systemService; + + public SystemClient(Subsonic subsonic) { + this.subsonic = subsonic; + + this.retrofit = new Retrofit.Builder() + .baseUrl(subsonic.getUrl()) + .addConverterFactory(GsonConverterFactory.create()) + .client(getOkHttpClient()) + .build(); + + this.systemService = retrofit.create(SystemService.class); + } + + public Call ping(){ + Log.d(TAG, "Requesting ping"); + return systemService.ping(subsonic.getParams()); + } + + private OkHttpClient getOkHttpClient() { + return new OkHttpClient.Builder() + .addInterceptor(getHttpLoggingInterceptor()) + .build(); + } + + private HttpLoggingInterceptor getHttpLoggingInterceptor() { + HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(); + loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + return loggingInterceptor; + } } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemService.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemService.java index d5e3458e..3abac2d3 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemService.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemService.java @@ -2,12 +2,13 @@ package com.cappielloantonio.play.subsonic.api.system; import com.cappielloantonio.play.subsonic.models.SubsonicResponse; -import java.util.List; +import java.util.Map; import retrofit2.Call; import retrofit2.http.GET; +import retrofit2.http.QueryMap; public interface SystemService { @GET("ping") - Call> ping(); + Call ping(@QueryMap Map params); } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/LoginFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/LoginFragment.java index 3cfadbfd..f24d9d81 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/LoginFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/LoginFragment.java @@ -2,6 +2,7 @@ package com.cappielloantonio.play.ui.fragment; import android.os.Bundle; import android.text.TextUtils; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -13,12 +14,14 @@ import androidx.fragment.app.Fragment; import com.cappielloantonio.play.App; import com.cappielloantonio.play.databinding.FragmentLoginBinding; +import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.util.PreferenceUtil; -import org.jellyfin.apiclient.interaction.Response; -import org.jellyfin.apiclient.model.system.SystemInfo; -import org.jellyfin.apiclient.model.users.AuthenticationResult; +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; public class LoginFragment extends Fragment { private static final String TAG = "LoginFragment"; @@ -51,7 +54,7 @@ public class LoginFragment extends Fragment { private void init() { bind.loginButton.setOnClickListener(v -> { if (validateInput()) { - saveServerPreference(username, server); + saveServerPreference(server, username, password); authenticate(); } }); @@ -75,44 +78,36 @@ public class LoginFragment extends Fragment { return true; } - private void saveServerPreference(String user, String server) { + private void saveServerPreference(String server, String user, String password) { PreferenceUtil.getInstance(requireContext()).setUser(user); PreferenceUtil.getInstance(requireContext()).setServer(server); + PreferenceUtil.getInstance(requireContext()).setPassword(password); } private void authenticate() { - App.getApiClientInstance(requireContext()).ChangeServerLocation(server); - App.getApiClientInstance(requireContext()).AuthenticateUserAsync(username, password, new Response() { - @Override - public void onResponse(AuthenticationResult result) { - if (result.getAccessToken() == null) return; - enter(result.getUser().getId(), result.getAccessToken()); - } + App.getSubsonicClientInstance(requireContext()) + .getSystemClient() + .ping() + .enqueue(new Callback() { + @Override + public void onResponse(Call call, retrofit2.Response response) { + if (!response.isSuccessful()) { + Log.d(TAG, "+++ onResponse() unsuccesful"); + Log.d(TAG, "+++ " + response.message()); + Toast.makeText(requireContext(), response.message(), Toast.LENGTH_LONG).show(); + return; + } - @Override - public void onError(Exception exception) { - if (exception.getMessage().contains("AuthFailureError")) { - Toast.makeText(requireContext(), "Fail to authenticate", Toast.LENGTH_SHORT).show(); - } else { - Toast.makeText(requireContext(), "Server unreachable", Toast.LENGTH_SHORT).show(); - } - } - }); - } + Log.d(TAG, "+++ onResponse() succesful"); + Toast.makeText(requireContext(), "Login succesful", Toast.LENGTH_LONG).show(); + } - private void enter(String user, String token) { - App.getApiClientInstance(requireContext()).GetSystemInfoAsync(new Response() { - @Override - public void onResponse(SystemInfo result) { - if (result.getVersion().charAt(0) == '1') { - PreferenceUtil.getInstance(requireContext()).setUser(user); - PreferenceUtil.getInstance(requireContext()).setToken(token); - - activity.goFromLogin(); - } else { - Toast.makeText(requireContext(), "Error version", Toast.LENGTH_SHORT).show(); - } - } - }); + @Override + public void onFailure(Call call, Throwable t) { + Log.d(TAG, "+++ onFailure()"); + Log.d(TAG, "+++ " + t.getMessage()); + Toast.makeText(requireContext(), t.getMessage(), Toast.LENGTH_LONG).show(); + } + }); } }