package org.fluxtream.core.services; import org.fluxtream.core.connectors.Connector; import org.fluxtream.core.domain.ApiKey; import org.fluxtream.core.domain.Guest; import org.fluxtream.core.domain.GuestDetails; import org.fluxtream.core.domain.ResetPasswordToken; import org.fluxtream.core.services.impl.ExistingEmailException; import org.fluxtream.core.services.impl.UsernameAlreadyTakenException; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.util.List; import java.util.Map; import java.util.Set; public interface GuestService { public void addRole(long guestId, String role); public void removeRole(long guestId, String role); public List<Guest> getAllGuests(); public Guest createGuest(String username, String firstname, String lastname, String password, String email, Guest.RegistrationMethod registrationMethod, final String appId) throws UsernameAlreadyTakenException, ExistingEmailException; public void eraseGuestInfo(String username) throws Exception; public void eraseGuestInfo(long id) throws Exception; public boolean isUsernameAvailable(String username); public void checkIn (long guestId, String ipAddress) throws IOException; public Guest getGuestByEmail(String email); public Guest getGuestById(long id); public Guest getGuest(String username); public void setPassword(long guestId, String password); public ApiKey createApiKey(long guestId, Connector connector); public ApiKey setApiKeyAttribute(ApiKey apiKey, String key, String value); public Map<String, String> getApiKeyAttributes(long apiKeyId); public String getApiKeyAttribute(ApiKey apiKey, String key); public ApiKey getApiKey(long apiKeyId); public List<ApiKey> getApiKeys(long guestId); public boolean hasApiKey(long guestId, Connector connector); public List<ApiKey> getApiKeys(long guestId, Connector connector); public void setApiKeyStatus(long apiKeyId, ApiKey.Status status, String stackTrace, String reason); public void setApiKeyToSynching(long apiKeyId, boolean synching); /** * Multiple apiKeys per connector per user are now allowed. This call is maintained for * backward compatibility, and we will hopefully soon be able to completely get rid of it * @param guestId guest id * @param connector connector * @return the first api key matching passed arguments */ @Deprecated public ApiKey getApiKey(long guestId, Connector connector); public void removeApiKeys(long guestId, Connector connector); public void removeApiKey(long apiKeyId); public void setApiKeySettings(long apiKeyId, Object settings); public ResetPasswordToken getToken(String token); public ResetPasswordToken createToken(long guestId); public void deleteToken(String token); public void removeApiKeyAttribute(long apiKeyId, String key); public void setAutoLoginToken(long guestId, String s); public boolean checkPassword(long guestId, String currentPassword); void populateApiKey(long apiKeyId); Set<String> getParseInstallations(long guestId); @Transactional(readOnly=false) void addParseInstallation(long guestId, String parseInstallationId); @Transactional(readOnly=false) GuestDetails getGuestDetails(long guestId); List<String> getDeviceIds(long guestId); void deleteConnectorProfile(ApiKey apiKey); }