package io.fathom.cloud.identity;
import io.fathom.cloud.OpenstackExtensionBase;
import io.fathom.cloud.ServiceType;
import io.fathom.cloud.identity.api.os.resources.BrokenClientsFilter;
import io.fathom.cloud.identity.api.os.resources.CredentialsResource;
import io.fathom.cloud.identity.api.os.resources.DomainsResource;
import io.fathom.cloud.identity.api.os.resources.GroupsResource;
import io.fathom.cloud.identity.api.os.resources.IdentityVersionsResource;
import io.fathom.cloud.identity.api.os.resources.ProjectsResource;
import io.fathom.cloud.identity.api.os.resources.RolesResource;
import io.fathom.cloud.identity.api.os.resources.TenantsResource;
import io.fathom.cloud.identity.api.os.resources.TokensResource;
import io.fathom.cloud.identity.api.os.resources.UsersResource;
import io.fathom.cloud.identity.api.os.resources.V2TokensResource;
import io.fathom.cloud.identity.api.os.resources.extensions.AttachmentsResource;
import io.fathom.cloud.identity.api.os.resources.extensions.ClientAppsResource;
import io.fathom.cloud.identity.api.os.resources.extensions.RegisterResource;
import io.fathom.cloud.identity.services.AttachmentsImpl;
import io.fathom.cloud.identity.services.IdentityService;
import io.fathom.cloud.identity.services.IdentityServiceImpl;
import io.fathom.cloud.server.auth.SharedSecretTokenService;
import io.fathom.cloud.server.auth.TokenEncoder;
import io.fathom.cloud.server.model.Project;
import io.fathom.cloud.services.Attachments;
import io.fathom.cloud.services.AuthService;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.fathomdb.extensions.HttpConfiguration;
import com.google.common.collect.Lists;
public class IdentityExtension extends OpenstackExtensionBase {
private static final Logger log = LoggerFactory.getLogger(IdentityExtension.class);
@Override
public void addHttpExtensions(HttpConfiguration http) {
http.bind(V2TokensResource.class);
http.bind(TokensResource.class);
http.bind(TenantsResource.class);
http.bind(ProjectsResource.class);
http.bind(DomainsResource.class);
http.bind(GroupsResource.class);
http.bind(UsersResource.class);
http.bind(RolesResource.class);
http.bind(CredentialsResource.class);
http.bind(IdentityVersionsResource.class);
http.bind(AttachmentsResource.class);
http.bind(ClientAppsResource.class);
http.bind(RegisterResource.class);
http.bind(BrokenClientsFilter.class);
}
@Override
protected void configure() {
bind(TokenEncoder.class).to(SharedSecretTokenService.class);
bind(IdentityService.class).to(IdentityServiceImpl.class);
bind(LoginService.class).to(LoginServiceImpl.class);
// External services
bind(AuthService.class).to(AuthServiceImpl.class);
bind(Attachments.class).to(AttachmentsImpl.class);
}
@Override
public List<ServiceType> getServices(Project project, String baseUrl) {
List<ServiceType> serviceTypes = Lists.newArrayList();
serviceTypes.add(ServiceType.IDENTITY);
return serviceTypes;
}
}