package com.hubspot.blazar.util;
import javax.ws.rs.core.UriBuilder;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.hubspot.blazar.base.GitInfo;
import com.hubspot.blazar.base.Module;
import com.hubspot.blazar.base.ModuleBuild;
import com.hubspot.blazar.base.RepositoryBuild;
import com.hubspot.blazar.config.BlazarConfiguration;
import com.hubspot.blazar.config.UiConfiguration;
import com.hubspot.blazar.data.service.ModuleService;
import com.hubspot.blazar.data.service.RepositoryBuildService;
import java.net.URI;
@Singleton
public class BlazarUrlHelper {
private final RepositoryBuildService repositoryBuildService;
private final ModuleService moduleService;
private final UiConfiguration uiConfiguration;
@Inject
public BlazarUrlHelper(RepositoryBuildService repositoryBuildService,
ModuleService moduleService,
BlazarConfiguration configuration) {
this.repositoryBuildService = repositoryBuildService;
this.moduleService = moduleService;
this.uiConfiguration = configuration.getUiConfiguration();
}
public URI getBlazarUiLink(GitInfo gitInfo) {
return getBlazarUiLink(gitInfo.getId().get());
}
public String getBlazarUiLink(RepositoryBuild build) {
return UriBuilder.fromUri(getBlazarUiLink(build.getBranchId()))
.segment("build")
.segment(Integer.toString(build.getBuildNumber()))
.build()
.toString();
}
public String getBlazarUiLink(ModuleBuild build) {
RepositoryBuild repoBuild = repositoryBuildService.get(build.getRepoBuildId()).get();
Module module = moduleService.get(build.getModuleId()).get();
return UriBuilder.fromUri(getBlazarUiLink(repoBuild))
.segment("module")
.segment(module.getName())
.build()
.toString();
}
private URI getBlazarUiLink(int branchId) {
return UriBuilder.fromUri(uiConfiguration.getBaseUrl())
.segment("builds")
.segment("branch")
.segment(Integer.toString(branchId))
.build();
}
}