mirror of
https://github.com/antebudimir/tempus.git
synced 2026-01-03 19:01:39 +00:00
Added authentication via Subsonic API
This commit is contained in:
parent
8a2e2f7000
commit
27cc3b8570
3 changed files with 83 additions and 38 deletions
|
|
@ -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<AuthenticationResult>() {
|
||||
@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<SubsonicResponse>() {
|
||||
@Override
|
||||
public void onResponse(Call<SubsonicResponse> call, retrofit2.Response<SubsonicResponse> 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<SystemInfo>() {
|
||||
@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<SubsonicResponse> call, Throwable t) {
|
||||
Log.d(TAG, "+++ onFailure()");
|
||||
Log.d(TAG, "+++ " + t.getMessage());
|
||||
Toast.makeText(requireContext(), t.getMessage(), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue