package org.fluxtream.core.services;
import org.fluxtream.core.domain.oauth2.Application;
import org.fluxtream.core.domain.oauth2.AuthorizationCode;
import org.fluxtream.core.domain.oauth2.AuthorizationCodeResponse;
import org.fluxtream.core.domain.oauth2.AuthorizationToken;
import org.fluxtream.core.mvc.models.AuthorizationTokenModel;
import java.util.List;
import java.util.Set;
/**
* User: candide
* Date: 10/04/14
* Time: 11:59
*/
public interface OAuth2MgmtService {
Application getApplicationForClientId(final String clientId);
Application getApplicationForToken(AuthorizationToken token);
AuthorizationCode issueAuthorizationCode(Long id, Set<String> scopes, String state);
AuthorizationCode getCode(String code);
AuthorizationCodeResponse getResponse(String code);
void storeVerification(AuthorizationCodeResponse codeResponse);
void storeToken(AuthorizationToken token);
AuthorizationToken issueAuthorizationToken(long guestId, long applicationId);
AuthorizationToken getTokenFromRefreshToken(String refreshToken);
AuthorizationToken getTokenFromAccessToken(String accessToken);
List<AuthorizationTokenModel> getTokens(final long guestId);
void revokeAccessToken(final long guestId, final String accessToken);
AuthorizationToken getAuthorizationToken(long guestId, String deviceId, long millis);
}