TedeeApiTokenGenerator.java

package org.sanmibuh.tedee.lock.infrastructure.secondary;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.HexFormat;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;

@RequiredArgsConstructor
final class TedeeApiTokenGenerator {

  private static final String HASH_ALGORITHM = "SHA-256";

  private final String token;

  String generate(final long timestampMillis) {
    return sha256Hex(token + timestampMillis) + timestampMillis;
  }

  @SneakyThrows
  private String sha256Hex(final String value) {
    final var digest =
        MessageDigest.getInstance(HASH_ALGORITHM).digest(value.getBytes(StandardCharsets.UTF_8));
    return HexFormat.of().formatHex(digest);
  }
}