mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-03-04 03:10:50 +01:00
remove type from full export endpoint
This commit is contained in:
@@ -89,7 +89,7 @@ public class RepositoryExportResource {
|
||||
* @since 2.13.0
|
||||
*/
|
||||
@GET
|
||||
@Path("{type}")
|
||||
@Path("{type: ^(?!full$)[^/]+$}")
|
||||
@Consumes(VndMediaType.REPOSITORY)
|
||||
@Operation(summary = "Exports the repository", description = "Exports the repository.", tags = "Repository")
|
||||
@ApiResponse(
|
||||
@@ -129,12 +129,11 @@ public class RepositoryExportResource {
|
||||
* @param uriInfo uri info
|
||||
* @param namespace namespace of the repository
|
||||
* @param name name of the repository
|
||||
* @param type type of the repository
|
||||
* @return response with readable stream of repository dump
|
||||
* @since 2.13.0
|
||||
*/
|
||||
@GET
|
||||
@Path("{type}/full")
|
||||
@Path("full")
|
||||
@Consumes(VndMediaType.REPOSITORY)
|
||||
@Operation(summary = "Exports the repository", description = "Exports the repository with metadata and environment information.", tags = "Repository")
|
||||
@ApiResponse(
|
||||
@@ -159,10 +158,9 @@ public class RepositoryExportResource {
|
||||
)
|
||||
public Response exportFullRepository(@Context UriInfo uriInfo,
|
||||
@PathParam("namespace") String namespace,
|
||||
@PathParam("name") String name,
|
||||
@Pattern(regexp = "\\w{1,10}") @PathParam("type") String type
|
||||
@PathParam("name") String name
|
||||
) {
|
||||
Repository repository = getVerifiedRepository(namespace, name, type);
|
||||
Repository repository = getVerifiedRepository(namespace, name);
|
||||
StreamingOutput output = os -> fullScmRepositoryExporter.export(repository, os);
|
||||
|
||||
return Response
|
||||
@@ -171,9 +169,14 @@ public class RepositoryExportResource {
|
||||
.build();
|
||||
}
|
||||
|
||||
private Repository getVerifiedRepository(@PathParam("namespace") String namespace, @PathParam("name") String name, @PathParam("type") @Pattern(regexp = "\\w{1,10}") String type) {
|
||||
private Repository getVerifiedRepository(String namespace, String name) {
|
||||
Repository repository = manager.get(new NamespaceAndName(namespace, name));
|
||||
RepositoryPermissions.read().check(repository);
|
||||
return repository;
|
||||
}
|
||||
|
||||
private Repository getVerifiedRepository(String namespace, String name, String type) {
|
||||
Repository repository = getVerifiedRepository(namespace, name);
|
||||
|
||||
if (!type.equals(repository.getType())) {
|
||||
throw new WrongTypeException(repository);
|
||||
|
||||
@@ -109,8 +109,7 @@ public class FullScmRepositoryImporter {
|
||||
|
||||
private Repository importRepositoryFromFile(Repository repository, TarArchiveInputStream tais) throws IOException {
|
||||
ArchiveEntry repositoryEntry = tais.getNextEntry();
|
||||
String repositoryEntryFileExtension = resolveFileExtensionForRepository(repository);
|
||||
if (repositoryEntry.getName().endsWith(repositoryEntryFileExtension) && !repositoryEntry.isDirectory()) {
|
||||
if (!repositoryEntry.isDirectory()) {
|
||||
return repositoryManager.create(repository, repo -> {
|
||||
try (RepositoryService service = serviceFactory.create(repo)) {
|
||||
service.getUnbundleCommand().unbundle(new NoneClosingInputStream(tais));
|
||||
@@ -130,12 +129,6 @@ public class FullScmRepositoryImporter {
|
||||
}
|
||||
}
|
||||
|
||||
private String resolveFileExtensionForRepository(Repository repository) {
|
||||
try (RepositoryService repoService = serviceFactory.create(repository)) {
|
||||
return "." + repoService.getBundleCommand().getFileExtension();
|
||||
}
|
||||
}
|
||||
|
||||
private void checkScmEnvironment(Repository repository, TarArchiveInputStream tais) throws IOException {
|
||||
ArchiveEntry environmentEntry = tais.getNextEntry();
|
||||
if (environmentEntry.getName().equals(SCM_ENVIRONMENT_FILE_NAME) && !environmentEntry.isDirectory() && environmentEntry.getSize() < _1_MB) {
|
||||
|
||||
@@ -775,7 +775,7 @@ public class RepositoryRootResourceTest extends RepositoryTestBase {
|
||||
when(service.getBundleCommand()).thenReturn(bundleCommandBuilder);
|
||||
|
||||
MockHttpRequest request = MockHttpRequest
|
||||
.get("/" + RepositoryRootResource.REPOSITORIES_PATH_V2 + "space/repo/export/svn/full");
|
||||
.get("/" + RepositoryRootResource.REPOSITORIES_PATH_V2 + "space/repo/export/full");
|
||||
MockHttpResponse response = new MockHttpResponse();
|
||||
|
||||
dispatcher.invoke(request, response);
|
||||
|
||||
@@ -60,7 +60,7 @@ import static org.mockito.Mockito.when;
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class FullScmRepositoryImporterTest {
|
||||
|
||||
private static final Repository REPOSITORY = RepositoryTestData.createHeartOfGold();
|
||||
private static final Repository REPOSITORY = RepositoryTestData.createHeartOfGold("svn");
|
||||
|
||||
@Mock
|
||||
private RepositoryServiceFactory serviceFactory;
|
||||
@@ -105,6 +105,7 @@ class FullScmRepositoryImporterTest {
|
||||
void shouldImportScmRepositoryArchive() throws IOException {
|
||||
when(compatibilityChecker.check(any())).thenReturn(true);
|
||||
when(repositoryManager.create(eq(REPOSITORY), any())).thenReturn(REPOSITORY);
|
||||
when(service.getBundleCommand().getFileExtension()).thenReturn("dump");
|
||||
|
||||
Repository repository = fullImporter.importFromStream(REPOSITORY, Resources.getResource("sonia/scm/repository/import/scm-import.tar.gz").openStream());
|
||||
assertThat(repository).isEqualTo(REPOSITORY);
|
||||
|
||||
Reference in New Issue
Block a user