
org.johnnei.enjin.spec.impl.UserImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of enjin-api-impl Show documentation
Show all versions of enjin-api-impl Show documentation
The specification of the Enjin API
The newest version!
package org.johnnei.enjin.spec.impl;
import java.lang.reflect.Type;
import java.util.Optional;
import org.johnnei.enjin.internal.AnnotationUtils;
import org.johnnei.enjin.internal.EnjinError;
import org.johnnei.enjin.internal.RequestWrapper;
import org.johnnei.enjin.internal.ResponseWrapper;
import org.johnnei.enjin.internal.http.IRequestExecuter;
import org.johnnei.enjin.spec.EnjinMethod;
import org.johnnei.enjin.spec.IUser;
import org.johnnei.enjin.spec.dto.CheckSession;
import org.johnnei.enjin.spec.dto.CheckSessionResult;
import org.johnnei.enjin.spec.dto.Credentials;
import org.johnnei.enjin.spec.dto.User;
import com.google.gson.reflect.TypeToken;
public class UserImpl implements IUser {
private static final Type USER_RESPONSE_TYPE = new TypeToken>() {}.getType();
private static final Type CHECK_SESSION_RESPONSE_TYPE =
new TypeToken>() {}.getType();
private static int ERROR_INVALID_CREDENTIALS = -32000;
private EnjinApiImpl enjinApiImpl;
private IRequestExecuter requestExecuter;
public UserImpl(EnjinApiImpl enjinApiImpl, IRequestExecuter requestExecuter) {
this.enjinApiImpl = enjinApiImpl;
this.requestExecuter = requestExecuter;
}
@Override
public Optional login(Credentials credentials) {
final EnjinMethod method = AnnotationUtils.getMethod(IUser.class, "login", Credentials.class);
RequestWrapper request = enjinApiImpl.createRequest(method, Optional.empty(), credentials);
ResponseWrapper result = requestExecuter.executeRequest(request, USER_RESPONSE_TYPE);
if (result.isInErrorState()) {
EnjinError error = result.getError();
if (error.getCode() == ERROR_INVALID_CREDENTIALS) {
// Invalid login, error is no unexpected error.
return Optional.empty();
}
error.throwAsException();
}
return Optional.of(result.getResponse());
}
@Override
public Optional checkSession(String sessionId) {
if (sessionId == null || sessionId.isEmpty()) {
// No session available, session can't possibly be valid
return Optional.empty();
}
final EnjinMethod method = AnnotationUtils.getMethod(IUser.class, "checkSession", String.class);
CheckSession session = new CheckSession.Builder().setSessionId(sessionId).build();
RequestWrapper request = enjinApiImpl.createRequest(method, Optional.empty(), session);
ResponseWrapper response =
requestExecuter.executeRequest(request, CHECK_SESSION_RESPONSE_TYPE);
CheckSessionResult result = response.getResponse();
if (!result.getHasIdentity()) {
return Optional.empty();
}
return Optional.of(new User(sessionId, result));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy