diff --git a/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/HashingServiceApplication.java b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/HashingServiceApplication.java new file mode 100644 index 0000000000000000000000000000000000000000..1e35bd1d33a191bc338682b34722b2f28f17e7e9 --- /dev/null +++ b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/HashingServiceApplication.java @@ -0,0 +1,11 @@ +package eu.fairkom.faircommons.hashing_service; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class HashingServiceApplication { + public static void main(String[] args) { + SpringApplication.run(HashingServiceApplication.class, args); + } +} diff --git a/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/config/HashingServiceConfiguration.java b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/config/HashingServiceConfiguration.java new file mode 100644 index 0000000000000000000000000000000000000000..962c93e35210a87c6d7e0b34c7ac7bc5959bf6d7 --- /dev/null +++ b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/config/HashingServiceConfiguration.java @@ -0,0 +1,11 @@ +package eu.fairkom.faircommons.hashing_service.config; + +import eu.fairkom.faircommons.common.rabbitmq.RabbitMqConfiguration; +import org.springframework.amqp.rabbit.annotation.EnableRabbit; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan(basePackageClasses = RabbitMqConfiguration.class) +public class HashingServiceConfiguration { +} diff --git a/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/service/HashingService.java b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/service/HashingService.java new file mode 100644 index 0000000000000000000000000000000000000000..aec3622c0ce351d915ff54b3f2969d446e93066e --- /dev/null +++ b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/service/HashingService.java @@ -0,0 +1,35 @@ +package eu.fairkom.faircommons.hashing_service.service; + +import org.springframework.stereotype.Service; + +import java.io.InputStream; +import java.security.DigestInputStream; +import java.security.MessageDigest; + +@Service +public class HashingService { + + public String getChecksum(InputStream inputStream, String algorithm) { + try { + var messageDigest = MessageDigest.getInstance("SHA-256"); + + try (InputStream is = inputStream) { + var digestInputStream = new DigestInputStream(is, messageDigest); + while (digestInputStream.read() != -1) ; //empty loop to clear the data + messageDigest = digestInputStream.getMessageDigest(); + } + + return bytesToHex(messageDigest.digest()); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private String bytesToHex(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + for (byte b : bytes) { + sb.append(String.format("%02x", b)); + } + return sb.toString(); + } +} diff --git a/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/service/HashingServiceReceiver.java b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/service/HashingServiceReceiver.java new file mode 100644 index 0000000000000000000000000000000000000000..54f2da46ce024f054150e92a174c8a5a008f8c12 --- /dev/null +++ b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/service/HashingServiceReceiver.java @@ -0,0 +1,27 @@ +package eu.fairkom.faircommons.hashing_service.service; + +import eu.fairkom.faircommons.common.rabbitmq.RabbitMqReceiver; +import eu.fairkom.faircommons.common.rabbitmq.message.HashingMessage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.stereotype.Component; + +import static eu.fairkom.faircommons.common.rabbitmq.RabbitMqConfiguration.HASHING_QUEUE; + +@Component +@RabbitListener(queues = HASHING_QUEUE) +public class HashingServiceReceiver implements RabbitMqReceiver<HashingMessage> { + private final HashingService hashingService; + + public HashingServiceReceiver(HashingService hashingService) { + this.hashingService = hashingService; + } + + private final Logger logger = LoggerFactory.getLogger(HashingServiceReceiver.class); + + @Override + public void receive(HashingMessage message) { + logger.info("Message received: " + message.toString()); + } +} diff --git a/faircommons-services/hashing-service/src/main/resources/application-local.yml b/faircommons-services/hashing-service/src/main/resources/application-local.yml new file mode 100644 index 0000000000000000000000000000000000000000..7f59de91baf53c56144d74a1bb2e1619a4e02d0f --- /dev/null +++ b/faircommons-services/hashing-service/src/main/resources/application-local.yml @@ -0,0 +1,6 @@ +spring: + rabbitmq: + host: localhost + username: user + password: password + port: 5672 \ No newline at end of file diff --git a/faircommons-services/hashing-service/src/main/resources/application.yml b/faircommons-services/hashing-service/src/main/resources/application.yml new file mode 100644 index 0000000000000000000000000000000000000000..90612549ba465a1da4d231d5c2a3211407e5a0bf --- /dev/null +++ b/faircommons-services/hashing-service/src/main/resources/application.yml @@ -0,0 +1,8 @@ +spring: + application: + name: hashing-service + +server: + port: 8081 + servlet: + context-path: /${spring.application.name} \ No newline at end of file