Skip to content
Snippets Groups Projects
Commit 1384ae5d authored by Martin Weise's avatar Martin Weise
Browse files

WIP

Former-commit-id: c7a97b9f
parent b0d236fd
No related branches found
No related tags found
1 merge request!42Fixed the query service tests
Showing
with 1312 additions and 44 deletions
package at.tuwien.api.zenodo.deposit; package at.tuwien.api.zenodo.deposit;
import at.tuwien.api.zenodo.files.FileDto; import at.tuwien.api.zenodo.files.FileResponseDto;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*; import lombok.*;
...@@ -40,7 +40,7 @@ public class DepositChangeResponseDto { ...@@ -40,7 +40,7 @@ public class DepositChangeResponseDto {
private CreatorDto[] contributors; private CreatorDto[] contributors;
private List<FileDto> files; private List<FileResponseDto> files;
private Long id; private Long id;
......
package at.tuwien.api.zenodo.deposit; package at.tuwien.api.zenodo.deposit;
import at.tuwien.api.zenodo.files.FileDto; import at.tuwien.api.zenodo.files.FileResponseDto;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*; import lombok.*;
...@@ -46,7 +46,7 @@ public class DepositResponseDto { ...@@ -46,7 +46,7 @@ public class DepositResponseDto {
private CreatorDto[] contributors; private CreatorDto[] contributors;
private List<FileDto> files; private List<FileResponseDto> files;
private Long id; private Long id;
......
package at.tuwien.api.zenodo.deposit;
import lombok.*;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.http.HttpEntity;
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class FileBinaryRequestDto {
private HttpEntity<ByteArrayResource> file;
}
package at.tuwien.api.zenodo.deposit;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.*;
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class FileRequestDto {
private String name;
}
...@@ -7,7 +7,7 @@ import lombok.*; ...@@ -7,7 +7,7 @@ import lombok.*;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class FileDto { public class FileResponseDto {
private String checksum; private String checksum;
......
package at.tuwien; package at.tuwien;
import at.tuwien.api.zenodo.deposit.*; import at.tuwien.api.zenodo.deposit.*;
import at.tuwien.api.zenodo.files.FileDto; import at.tuwien.api.zenodo.files.FileResponseDto;
import at.tuwien.api.zenodo.files.FileLinksDto; import at.tuwien.api.zenodo.files.FileLinksDto;
import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang.RandomStringUtils;
import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.TestPropertySource;
...@@ -37,6 +37,11 @@ public abstract class BaseUnitTest { ...@@ -37,6 +37,11 @@ public abstract class BaseUnitTest {
public final static String CREATOR_2_AFFIL = "TU Graz"; public final static String CREATOR_2_AFFIL = "TU Graz";
public final static String CREATOR_2_ORCID = "0000-0002-2606-4059"; public final static String CREATOR_2_ORCID = "0000-0002-2606-4059";
public final static String FILE_1_ID = "deadbeef-deafdeed";
public final static String FILE_1_NAME = "testdata-othername.csv";
public final static String FILE_1_CHECKSUM = "d393c7fa1240c18473133793f7901aaa";
public final static Long FILE_1_SIZE = 34614L;
public final static Long DEPOSIT_2_ID = 2L; public final static Long DEPOSIT_2_ID = 2L;
public final static String DEPOSIT_2_TITLE = "Test Document " + RandomStringUtils.randomAlphanumeric(10); public final static String DEPOSIT_2_TITLE = "Test Document " + RandomStringUtils.randomAlphanumeric(10);
public final static String DEPOSIT_2_DESCRIPTION = "Test Description " + RandomStringUtils.randomAlphanumeric(100); public final static String DEPOSIT_2_DESCRIPTION = "Test Description " + RandomStringUtils.randomAlphanumeric(100);
...@@ -46,12 +51,6 @@ public abstract class BaseUnitTest { ...@@ -46,12 +51,6 @@ public abstract class BaseUnitTest {
public final static String DEPOSIT_2_STATE = "draft"; public final static String DEPOSIT_2_STATE = "draft";
public final static Boolean DEPOSIT_2_SUBMITTED = false; public final static Boolean DEPOSIT_2_SUBMITTED = false;
public final static String FILE_1_CHECKSUM = "deadbeef";
public final static String FILE_1_NAME = "data.csv";
public final static String FILE_1_ID = "73d5674b-2bda-400c-844e-4eef309afe5e";
public final static Long FILE_1_SIZE = 3943498L;
public final static String FILE_1_LINKS_DOWNLOAD = "http://localhost:5500/file/" + FILE_1_ID + "/download"; public final static String FILE_1_LINKS_DOWNLOAD = "http://localhost:5500/file/" + FILE_1_ID + "/download";
public final static String FILE_1_LINKS_SELF = "http://localhost:5500/file/" + FILE_1_ID; public final static String FILE_1_LINKS_SELF = "http://localhost:5500/file/" + FILE_1_ID;
...@@ -82,7 +81,7 @@ public abstract class BaseUnitTest { ...@@ -82,7 +81,7 @@ public abstract class BaseUnitTest {
.self(FILE_1_LINKS_SELF) .self(FILE_1_LINKS_SELF)
.build(); .build();
public final static FileDto FILE_1 = FileDto.builder() public final static FileResponseDto FILE_1 = FileResponseDto.builder()
.checksum(FILE_1_CHECKSUM) .checksum(FILE_1_CHECKSUM)
.filename(FILE_1_NAME) .filename(FILE_1_NAME)
.id(FILE_1_ID) .id(FILE_1_ID)
......
package at.tuwien.service;
import at.tuwien.BaseUnitTest;
import at.tuwien.api.zenodo.deposit.DepositChangeRequestDto;
import at.tuwien.api.zenodo.deposit.DepositChangeResponseDto;
import at.tuwien.api.zenodo.deposit.FileRequestDto;
import at.tuwien.api.zenodo.files.FileResponseDto;
import at.tuwien.config.ReadyConfig;
import at.tuwien.exception.ZenodoApiException;
import at.tuwien.exception.ZenodoAuthenticationException;
import at.tuwien.exception.ZenodoNotFoundException;
import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.util.ResourceUtils;
import org.springframework.web.client.RestTemplate;
import java.io.FileNotFoundException;
import java.io.IOException;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.when;
@SpringBootTest
@ExtendWith(SpringExtension.class)
public class FileServiceIntegrationTest extends BaseUnitTest {
@MockBean
private ReadyConfig readyConfig;
@Autowired
private ZenodoFileService fileService;
@Autowired
private ZenodoMetadataService metadataService;
@Test
public void createResource_succeeds() throws IOException, ZenodoApiException, ZenodoNotFoundException, ZenodoAuthenticationException {
// final DepositChangeResponseDto deposit = metadataService.storeCitation();
final byte[] file = FileUtils.readFileToByteArray(ResourceUtils.getFile("classpath:testdata.csv"));
/* test */
final FileResponseDto response = fileService.createResource(1L, FILE_1_NAME, file);
assertEquals(FILE_1_NAME, response.getFilename());
assertEquals(FILE_1_CHECKSUM, response.getChecksum());
assertEquals(FILE_1_SIZE, response.getFilesize());
}
}
\ No newline at end of file
package at.tuwien.service;
import at.tuwien.BaseUnitTest;
import at.tuwien.api.zenodo.deposit.*;
import at.tuwien.api.zenodo.files.FileResponseDto;
import at.tuwien.config.ReadyConfig;
import at.tuwien.exception.ZenodoApiException;
import at.tuwien.exception.ZenodoAuthenticationException;
import at.tuwien.exception.ZenodoNotFoundException;
import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.util.ResourceUtils;
import org.springframework.web.client.RestTemplate;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.anyLong;
import static org.mockito.Mockito.when;
@SpringBootTest
@ExtendWith(SpringExtension.class)
public class FileServiceUnitTest extends BaseUnitTest {
@MockBean
private ReadyConfig readyConfig;
@Autowired
private ZenodoFileService fileService;
@MockBean
private RestTemplate zenodoTemplate;
@Test
public void createResource_succeeds() throws IOException, ZenodoApiException, ZenodoNotFoundException,
ZenodoAuthenticationException {
final byte[] file = FileUtils.readFileToByteArray(ResourceUtils.getFile("classpath:testdata.csv"));
when(zenodoTemplate.exchange(anyString(), eq(HttpMethod.POST), Mockito.any(),
eq(FileResponseDto.class), anyLong(), anyString()))
.thenReturn(ResponseEntity.status(HttpStatus.OK)
.body(FILE_1));
/* test */
final FileResponseDto response = fileService.createResource(DEPOSIT_1_ID, FILE_1_NAME, file);
assertEquals(FILE_1_NAME, response.getFilename());
assertEquals(FILE_1_CHECKSUM, response.getChecksum());
assertEquals(FILE_1_SIZE, response.getFilesize());
}
@Test
public void createResource_notExists_fails() throws IOException {
final byte[] file = FileUtils.readFileToByteArray(ResourceUtils.getFile("classpath:testdata.csv"));
when(zenodoTemplate.exchange(anyString(), eq(HttpMethod.POST), Mockito.any(),
eq(FileResponseDto.class), anyLong(), anyString()))
.thenReturn(ResponseEntity.status(HttpStatus.BAD_REQUEST)
.build());
/* test */
assertThrows(ZenodoNotFoundException.class, () -> {
fileService.createResource(DEPOSIT_1_ID, FILE_1_NAME, file);
});
}
}
\ No newline at end of file
...@@ -17,4 +17,4 @@ spring.jpa.show-sql=false ...@@ -17,4 +17,4 @@ spring.jpa.show-sql=false
fda.mapping.path: /tmp fda.mapping.path: /tmp
fda.table.path: /tmp fda.table.path: /tmp
zenodo.endpoint: https://sandbox.zenodo.org/ zenodo.endpoint: http://sandbox.zenodo.org/
\ No newline at end of file \ No newline at end of file
#!/usr/bin/env python3
import socket
HOST = '' # Symbolic name meaning all available interfaces
PORT = 50000 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print ('Connected by' + str(addr))
while 1:
data = conn.recv(1024)
if not data: break
print("===> recv " + str(data))
conn.close()
\ No newline at end of file
This diff is collapsed.
package at.tuwien.config; package at.tuwien.config;
import at.tuwien.exception.ZenodoAuthenticationException; import at.tuwien.exception.ZenodoAuthenticationException;
import at.tuwien.utils.ZenodoTemplateInterceptor; import at.tuwien.utils.ApiTemplateInterceptor;
import com.fasterxml.jackson.databind.DeserializationFeature; import at.tuwien.utils.UploadTemplateInterceptor;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import lombok.Getter; import lombok.Getter;
...@@ -49,13 +48,23 @@ public class ZenodoConfig { ...@@ -49,13 +48,23 @@ public class ZenodoConfig {
.registerModule(new Jdk8Module()); .registerModule(new Jdk8Module());
} }
@Bean @Bean("apiTemplate")
public RestTemplate zenodo() { public RestTemplate apiTemplate() {
final UriBuilderFactory factory = new DefaultUriBuilderFactory(zenodoEndpoint);
final RestTemplate template = new RestTemplateBuilder()
.uriTemplateHandler(factory)
.build();
template.setInterceptors(List.of(new ApiTemplateInterceptor()));
return template;
}
@Bean("uploadTemplate")
public RestTemplate uploadTemplate() {
final UriBuilderFactory factory = new DefaultUriBuilderFactory(zenodoEndpoint); final UriBuilderFactory factory = new DefaultUriBuilderFactory(zenodoEndpoint);
final RestTemplate template = new RestTemplateBuilder() final RestTemplate template = new RestTemplateBuilder()
.uriTemplateHandler(factory) .uriTemplateHandler(factory)
.build(); .build();
template.setInterceptors(List.of(new ZenodoTemplateInterceptor())); template.setInterceptors(List.of(new UploadTemplateInterceptor()));
return template; return template;
} }
......
package at.tuwien.mapper;
import at.tuwien.api.zenodo.deposit.FileBinaryRequestDto;
import at.tuwien.api.zenodo.deposit.FileRequestDto;
import org.mapstruct.Mapper;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import java.util.List;
import java.util.Map;
@Mapper(componentModel = "spring")
public interface ZenodoMapper {
default HttpEntity<MultiValueMap<String, Object>> resourceToHttpEntity(String name, byte[] resource) {
final HttpHeaders headers = new HttpHeaders();
headers.setAccept(List.of(MediaType.APPLICATION_JSON));
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
final HttpHeaders parts = new HttpHeaders();
parts.setContentType(MediaType.TEXT_PLAIN);
final ByteArrayResource byteArrayResource = new ByteArrayResource(resource) {
@Override
public String getFilename() {
return name;
}
};
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("file", new HttpEntity<>(byteArrayResource, parts));
body.add("data", new HttpEntity<>(name, parts));
return new HttpEntity<>(body, headers);
}
}
package at.tuwien.service; package at.tuwien.service;
import at.tuwien.api.zenodo.files.FileResponseDto;
import at.tuwien.exception.ZenodoApiException;
import at.tuwien.exception.ZenodoAuthenticationException;
import at.tuwien.exception.ZenodoNotFoundException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service @Service
public interface FileService { public interface FileService {
FileResponseDto createResource(Long id, String name, byte[] resource)
throws ZenodoAuthenticationException, ZenodoApiException, ZenodoNotFoundException;
} }
package at.tuwien.service; package at.tuwien.service;
import at.tuwien.api.zenodo.files.FileResponseDto;
import at.tuwien.config.ZenodoConfig;
import at.tuwien.exception.ZenodoApiException;
import at.tuwien.exception.ZenodoAuthenticationException;
import at.tuwien.exception.ZenodoNotFoundException;
import at.tuwien.mapper.ZenodoMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service @Service
public class ZenodoFileService implements FileService { public class ZenodoFileService implements FileService {
private final RestTemplate apiTemplate;
private final RestTemplate uploadTemplate;
private final ZenodoConfig zenodoConfig;
private final ZenodoMapper zenodoMapper;
@Autowired
public ZenodoFileService(RestTemplate apiTemplate, RestTemplate uploadTemplate, ZenodoConfig zenodoConfig,
ZenodoMapper zenodoMapper) {
this.apiTemplate = apiTemplate;
this.uploadTemplate = uploadTemplate;
this.zenodoConfig = zenodoConfig;
this.zenodoMapper = zenodoMapper;
}
@Override
public FileResponseDto createResource(Long id, String name, byte[] resource)
throws ZenodoAuthenticationException, ZenodoApiException, ZenodoNotFoundException {
final ResponseEntity<FileResponseDto> response = uploadTemplate.exchange("/api/deposit/depositions/{deposit_id}/files?access_token={token}",
HttpMethod.POST, zenodoMapper.resourceToHttpEntity(name, resource), FileResponseDto.class, id,
zenodoConfig.getApiKey());
if (response.getStatusCode().equals(HttpStatus.UNAUTHORIZED)) {
throw new ZenodoAuthenticationException("Token is missing or invalid.");
}
if (response.getStatusCode().equals(HttpStatus.BAD_REQUEST)) {
throw new ZenodoNotFoundException("Did not find the deposit with this id");
}
if (response.getBody() == null) {
throw new ZenodoApiException("Endpoint returned null body");
}
return response.getBody();
}
} }
...@@ -16,18 +16,18 @@ import java.util.List; ...@@ -16,18 +16,18 @@ import java.util.List;
@Service @Service
public class ZenodoMetadataService implements MetadataService { public class ZenodoMetadataService implements MetadataService {
private final RestTemplate zenodoRestTemplate; private final RestTemplate apiTemplate;
private final ZenodoConfig zenodoConfig; private final ZenodoConfig zenodoConfig;
@Autowired @Autowired
public ZenodoMetadataService(RestTemplate zenodoRestTemplate, ZenodoConfig zenodoConfig) { public ZenodoMetadataService(RestTemplate apiTemplate, ZenodoConfig zenodoConfig) {
this.zenodoRestTemplate = zenodoRestTemplate; this.apiTemplate = apiTemplate;
this.zenodoConfig = zenodoConfig; this.zenodoConfig = zenodoConfig;
} }
@Override @Override
public List<DepositResponseDto> listCitations() throws ZenodoAuthenticationException, ZenodoApiException { public List<DepositResponseDto> listCitations() throws ZenodoAuthenticationException, ZenodoApiException {
final ResponseEntity<DepositResponseDto[]> response = zenodoRestTemplate.exchange("/api/deposit/depositions?access_token={token}", final ResponseEntity<DepositResponseDto[]> response = apiTemplate.exchange("/api/deposit/depositions?access_token={token}",
HttpMethod.GET, null, DepositResponseDto[].class, zenodoConfig.getApiKey()); HttpMethod.GET, null, DepositResponseDto[].class, zenodoConfig.getApiKey());
if (response.getStatusCode().equals(HttpStatus.UNAUTHORIZED)) { if (response.getStatusCode().equals(HttpStatus.UNAUTHORIZED)) {
throw new ZenodoAuthenticationException("Token is missing or invalid."); throw new ZenodoAuthenticationException("Token is missing or invalid.");
...@@ -40,7 +40,7 @@ public class ZenodoMetadataService implements MetadataService { ...@@ -40,7 +40,7 @@ public class ZenodoMetadataService implements MetadataService {
@Override @Override
public DepositChangeResponseDto storeCitation() throws ZenodoAuthenticationException, ZenodoApiException { public DepositChangeResponseDto storeCitation() throws ZenodoAuthenticationException, ZenodoApiException {
final ResponseEntity<DepositChangeResponseDto> response = zenodoRestTemplate.exchange("/api/deposit/depositions?access_token={token}", final ResponseEntity<DepositChangeResponseDto> response = apiTemplate.exchange("/api/deposit/depositions?access_token={token}",
HttpMethod.POST, new HttpEntity<>("{}"), DepositChangeResponseDto.class, zenodoConfig.getApiKey()); HttpMethod.POST, new HttpEntity<>("{}"), DepositChangeResponseDto.class, zenodoConfig.getApiKey());
if (response.getStatusCode().equals(HttpStatus.UNAUTHORIZED)) { if (response.getStatusCode().equals(HttpStatus.UNAUTHORIZED)) {
throw new ZenodoAuthenticationException("Token is missing or invalid."); throw new ZenodoAuthenticationException("Token is missing or invalid.");
...@@ -57,7 +57,7 @@ public class ZenodoMetadataService implements MetadataService { ...@@ -57,7 +57,7 @@ public class ZenodoMetadataService implements MetadataService {
@Override @Override
public DepositChangeResponseDto updateCitation(Long id, DepositChangeRequestDto data) throws ZenodoAuthenticationException, public DepositChangeResponseDto updateCitation(Long id, DepositChangeRequestDto data) throws ZenodoAuthenticationException,
ZenodoApiException, ZenodoNotFoundException { ZenodoApiException, ZenodoNotFoundException {
final ResponseEntity<DepositChangeResponseDto> response = zenodoRestTemplate.exchange("/api/deposit/depositions/{deposit_id}?access_token={token}", final ResponseEntity<DepositChangeResponseDto> response = apiTemplate.exchange("/api/deposit/depositions/{deposit_id}?access_token={token}",
HttpMethod.PUT, new HttpEntity<>(data), DepositChangeResponseDto.class, id, zenodoConfig.getApiKey()); HttpMethod.PUT, new HttpEntity<>(data), DepositChangeResponseDto.class, id, zenodoConfig.getApiKey());
if (response.getStatusCode().equals(HttpStatus.UNAUTHORIZED)) { if (response.getStatusCode().equals(HttpStatus.UNAUTHORIZED)) {
throw new ZenodoAuthenticationException("Token is missing or invalid."); throw new ZenodoAuthenticationException("Token is missing or invalid.");
...@@ -76,7 +76,7 @@ public class ZenodoMetadataService implements MetadataService { ...@@ -76,7 +76,7 @@ public class ZenodoMetadataService implements MetadataService {
@Override @Override
public void deleteCitation(Long id) throws ZenodoAuthenticationException, ZenodoApiException { public void deleteCitation(Long id) throws ZenodoAuthenticationException, ZenodoApiException {
final ResponseEntity<String> response = zenodoRestTemplate.exchange("/api/deposit/depositions/{deposit_id}?access_token={token}", final ResponseEntity<String> response = apiTemplate.exchange("/api/deposit/depositions/{deposit_id}?access_token={token}",
HttpMethod.DELETE, null, String.class, id, zenodoConfig.getApiKey()); HttpMethod.DELETE, null, String.class, id, zenodoConfig.getApiKey());
if (response.getStatusCode().equals(HttpStatus.UNAUTHORIZED)) { if (response.getStatusCode().equals(HttpStatus.UNAUTHORIZED)) {
throw new ZenodoAuthenticationException("Token is missing or invalid."); throw new ZenodoAuthenticationException("Token is missing or invalid.");
......
...@@ -9,7 +9,7 @@ import org.springframework.stereotype.Service; ...@@ -9,7 +9,7 @@ import org.springframework.stereotype.Service;
import java.io.IOException; import java.io.IOException;
@Service @Service
public class ZenodoTemplateInterceptor implements ClientHttpRequestInterceptor { public class ApiTemplateInterceptor implements ClientHttpRequestInterceptor {
@Override @Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
......
package at.tuwien.utils;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.stereotype.Service;
import java.io.IOException;
@Service
public class UploadTemplateInterceptor implements ClientHttpRequestInterceptor {
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
throws IOException {
request.getHeaders().set("Content-Type", "multipart/form-data");
request.getHeaders().set("Accept", "application/json");
return execution.execute(request, body);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment