SUPPORT-8817: add and use new proto class for empty extract
This commit is contained in:
parent
4138cce521
commit
ba6e3c54da
2 changed files with 63 additions and 28 deletions
|
|
@ -3,6 +3,7 @@ package ru.micord.ervu.controller;
|
|||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import com.google.protobuf.ByteString;
|
||||
import com.google.protobuf.InvalidProtocolBufferException;
|
||||
import org.apache.kafka.common.utils.Bytes;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
|
|
@ -48,37 +49,44 @@ public class ExtractController {
|
|||
@GetMapping(value = "/extract/{formatRegistry}")
|
||||
public ResponseEntity<Resource> getExtract(@PathVariable String formatRegistry) {
|
||||
UserIdsPair userIdsPair = SecurityUtil.getUserIdsPair();
|
||||
|
||||
String ervuId = userIdsPair.getErvuId();
|
||||
byte[] reply;
|
||||
|
||||
if (ervuId != null) {
|
||||
ExtractRequestDto request = new ExtractRequestDto(ervuId, formatRegistry);
|
||||
reply = replyingKafkaService.sendMessageAndGetReply(registryExtractRequestTopic,
|
||||
registryExtractReplyTopic, request
|
||||
).get();
|
||||
}
|
||||
else {
|
||||
String esiaUserId = userIdsPair.getEsiaUserId(); // esiaUserid is not null here
|
||||
String esiaAccessToken = EsiaTokensStore.getAccessToken(esiaUserId);
|
||||
PersonModel personModel = personalDataService.getPersonModel(esiaAccessToken);
|
||||
|
||||
ExtractEmptyRequestDto emptyRequest = new ExtractEmptyRequestDto(
|
||||
personModel.getLastName(),
|
||||
personModel.getFirstName(), personModel.getMiddleName(), personModel.getBirthDate(),
|
||||
personModel.getSnils(), formatRegistry
|
||||
);
|
||||
reply = replyingKafkaService.sendMessageAndGetReply(registryExtractEmptyRequestTopic,
|
||||
registryExtractReplyTopic, emptyRequest
|
||||
).get();
|
||||
}
|
||||
String fileName;
|
||||
ByteString file;
|
||||
|
||||
try {
|
||||
ResponseData responseData = ResponseData.parseFrom(reply);
|
||||
ExtractRegistry extractRegistry = responseData.getDataRegistryInformation()
|
||||
.getExtractRegistry();
|
||||
String encodedFilename = URLEncoder.encode(extractRegistry.getFileName(), StandardCharsets.UTF_8);
|
||||
InputStreamResource resource = new InputStreamResource(extractRegistry.getFile().newInput());
|
||||
if (ervuId != null) {
|
||||
ExtractRequestDto request = new ExtractRequestDto(ervuId, formatRegistry);
|
||||
byte[] reply = replyingKafkaService.sendMessageAndGetReply(registryExtractRequestTopic,
|
||||
registryExtractReplyTopic, request).get();
|
||||
ResponseData responseData = ResponseData.parseFrom(reply);
|
||||
ExtractRegistry extractRegistry = responseData.getDataRegistryInformation()
|
||||
.getExtractRegistry();
|
||||
fileName = extractRegistry.getFileName();
|
||||
file = extractRegistry.getFile();
|
||||
|
||||
}
|
||||
else {
|
||||
String esiaUserId = userIdsPair.getEsiaUserId(); // esiaUserid is not null here
|
||||
String esiaAccessToken = EsiaTokensStore.getAccessToken(esiaUserId);
|
||||
PersonModel personModel = personalDataService.getPersonModel(esiaAccessToken);
|
||||
|
||||
ExtractEmptyRequestDto emptyRequest = new ExtractEmptyRequestDto(
|
||||
personModel.getLastName(),
|
||||
personModel.getFirstName(), personModel.getMiddleName(), personModel.getBirthDate(),
|
||||
personModel.getSnils(), formatRegistry
|
||||
);
|
||||
byte[] reply = replyingKafkaService.sendMessageAndGetReply(registryExtractEmptyRequestTopic,
|
||||
registryExtractReplyTopic, emptyRequest).get();
|
||||
rtl.pgs.ervu.proto.emptyrequest.ResponseData responseData = rtl.pgs.ervu.proto.emptyrequest.ResponseData
|
||||
.parseFrom(reply);
|
||||
rtl.pgs.ervu.proto.emptyrequest.ExtractRegistry extractRegistry = responseData.getDataRegistryInformation()
|
||||
.getExtractRegistry();
|
||||
fileName = extractRegistry.getFileName();
|
||||
file = extractRegistry.getFile();
|
||||
}
|
||||
|
||||
String encodedFilename = URLEncoder.encode(fileName, StandardCharsets.UTF_8);
|
||||
InputStreamResource resource = new InputStreamResource(file.newInput());
|
||||
return ResponseEntity.ok()
|
||||
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename*=UTF-8''" + encodedFilename)
|
||||
.contentType(MediaType.APPLICATION_OCTET_STREAM)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package rtl.pgs.ervu.proto.emptyrequest;
|
||||
import "google/protobuf/timestamp.proto";
|
||||
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "LkrpUnknownRecruitResponse";
|
||||
option java_package = "rtl.pgs.ervu.proto.emptyrequest";
|
||||
|
||||
message ExtractRegistry {
|
||||
string fileName = 1;
|
||||
string fileType = 2;
|
||||
string fileDatetime = 3;
|
||||
bytes file = 4;
|
||||
};
|
||||
|
||||
message DataRegistryInformation {
|
||||
ExtractRegistry extractRegistry = 1;
|
||||
};
|
||||
|
||||
message ResponseData {
|
||||
string lastName = 1;
|
||||
string firstName = 2;
|
||||
string middleName = 3;
|
||||
string birthDate = 4;
|
||||
DataRegistryInformation dataRegistryInformation = 5;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue