mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-09-02 05:36:06 +02:00
public gpg key download on management screen
This commit is contained in:
@@ -61,6 +61,7 @@ public abstract class PublicKeyMapper {
|
||||
if (UserPermissions.changePublicKeys(rawGpgKey.getOwner()).isPermitted() && !rawGpgKey.isReadonly()) {
|
||||
linksBuilder.single(Link.link("delete", createDeleteLink(rawGpgKey)));
|
||||
}
|
||||
linksBuilder.single(Link.link("raw", createDownloadLink(rawGpgKey)));
|
||||
return new RawGpgKeyDto(linksBuilder.build());
|
||||
}
|
||||
|
||||
@@ -77,4 +78,11 @@ public abstract class PublicKeyMapper {
|
||||
.parameters(rawGpgKey.getOwner(), rawGpgKey.getId())
|
||||
.href();
|
||||
}
|
||||
|
||||
private String createDownloadLink(RawGpgKey rawGpgKey) {
|
||||
return new LinkBuilder(scmPathInfoStore.get().get(), PublicKeyResource.class)
|
||||
.method("findByIdGpg")
|
||||
.parameters(rawGpgKey.getId())
|
||||
.href();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,7 +90,9 @@ public class PublicKeyResource {
|
||||
public Response findByIdGpg(@PathParam("id") String id) {
|
||||
Optional<RawGpgKey> byId = store.findById(id);
|
||||
if (byId.isPresent()) {
|
||||
return Response.ok(byId.get().getRaw()).build();
|
||||
return Response.ok(byId.get().getRaw())
|
||||
.header("Content-Disposition", "attachment; filename=\"" + byId.get().getDisplayName() + ".asc\"")
|
||||
.build();
|
||||
}
|
||||
return Response.status(Response.Status.NOT_FOUND).build();
|
||||
}
|
||||
|
||||
@@ -206,7 +206,7 @@ class MeDtoFactoryTest {
|
||||
when(subject.isPermitted("user:changePublicKeys:trillian")).thenReturn(true);
|
||||
|
||||
MeDto dto = meDtoFactory.create();
|
||||
assertThat(dto.getLinks().getLinkBy("publicKeys").get().getHref()).isEqualTo("https://scm.hitchhiker.com/scm/v2/public_keys/trillian");
|
||||
assertThat(dto.getLinks().getLinkBy("publicKeys").get().getHref()).isEqualTo("https://scm.hitchhiker.com/scm/v2/users/trillian/public_keys");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -86,7 +86,7 @@ class PublicKeyCollectionMapperTest {
|
||||
List<HalRepresentation> embedded = collection.getEmbedded().getItemsBy("keys");
|
||||
assertThat(embedded).hasSize(2);
|
||||
|
||||
assertThat(collection.getLinks().getLinkBy("self").get().getHref()).isEqualTo("/v2/public_keys/trillian");
|
||||
assertThat(collection.getLinks().getLinkBy("self").get().getHref()).isEqualTo("/v2/users/trillian/public_keys");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -94,7 +94,7 @@ class PublicKeyCollectionMapperTest {
|
||||
when(subject.isPermitted("user:changePublicKeys:trillian")).thenReturn(true);
|
||||
|
||||
HalRepresentation collection = collectionMapper.map("trillian", Lists.newArrayList());
|
||||
assertThat(collection.getLinks().getLinkBy("create").get().getHref()).isEqualTo("/v2/public_keys/trillian");
|
||||
assertThat(collection.getLinks().getLinkBy("create").get().getHref()).isEqualTo("/v2/users/trillian/public_keys");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -76,8 +76,9 @@ class PublicKeyMapperTest {
|
||||
|
||||
assertThat(dto.getDisplayName()).isEqualTo(key.getDisplayName());
|
||||
assertThat(dto.getCreated()).isEqualTo(key.getCreated());
|
||||
assertThat(dto.getLinks().getLinkBy("self").get().getHref()).isEqualTo("/v2/public_keys/1");
|
||||
assertThat(dto.getLinks().getLinkBy("delete").get().getHref()).isEqualTo("/v2/public_keys/delete/1");
|
||||
assertThat(dto.getLinks().getLinkBy("self").get().getHref()).isEqualTo("/v2/users/trillian/public_keys/1");
|
||||
assertThat(dto.getLinks().getLinkBy("delete").get().getHref()).isEqualTo("/v2/users/trillian/public_keys/1");
|
||||
assertThat(dto.getLinks().getLinkBy("raw").get().getHref()).isEqualTo("/v2/public_keys/1");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user