diff --git a/src/main/java/io/carbone/CarboneServices.java b/src/main/java/io/carbone/CarboneServices.java index 30828b6..b4bdc2a 100644 --- a/src/main/java/io/carbone/CarboneServices.java +++ b/src/main/java/io/carbone/CarboneServices.java @@ -53,6 +53,27 @@ public boolean checkPathIsAbsolute(String path) { return p.isAbsolute(); } + @Override + public String generateTemplateId(byte[] fileBytes) { + MessageDigest digest; + try { + digest = MessageDigest.getInstance("SHA-256"); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + return null; + } + + digest.update(fileBytes); + byte[] hashByte = digest.digest(); + StringBuilder hexString = new StringBuilder(); + for (byte b : hashByte) { + String hex = Integer.toHexString(0xff & b); + if (hex.length() == 1) hexString.append(0); + hexString.append(hex); + } + return hexString.toString(); + } + public String generateTemplateId(String path) { try { File file = new File(path); @@ -64,23 +85,7 @@ public String generateTemplateId(String path) { return null; } - MessageDigest digest; - try { - digest = MessageDigest.getInstance("SHA-256"); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - return null; - } - - digest.update(fileBytes); - byte[] hashByte = digest.digest(); - StringBuilder hexString = new StringBuilder(); - for (byte b : hashByte) { - String hex = Integer.toHexString(0xff & b); - if (hex.length() == 1) hexString.append(0); - hexString.append(hex); - } - return hexString.toString(); + return generateTemplateId(fileBytes); } catch (Exception e) { e.printStackTrace(); return null; diff --git a/src/main/java/io/carbone/ICarboneServices.java b/src/main/java/io/carbone/ICarboneServices.java index 91fd522..f1d79af 100644 --- a/src/main/java/io/carbone/ICarboneServices.java +++ b/src/main/java/io/carbone/ICarboneServices.java @@ -77,5 +77,12 @@ public interface ICarboneServices { * @return give a precalculates templateId */ String generateTemplateId(String path); + + /** + * precalculates the template id + * @param fileBytes byte content of the template file + * @return give a precalculates templateId + */ + String generateTemplateId(byte[] fileBytes); } diff --git a/src/test/java/io/carbone/CarboneTest.java b/src/test/java/io/carbone/CarboneTest.java index ee81644..fa6287d 100644 --- a/src/test/java/io/carbone/CarboneTest.java +++ b/src/test/java/io/carbone/CarboneTest.java @@ -483,4 +483,16 @@ public void Test_Carbon_Service_Fectory_With_No_Argument() throws CarboneExcepti String status = carboneService.getStatus(); assertEquals(status.contains("\"success\":true,\"code\":200"), true); } + + @Test + public void Test_Generate_Template_Id_From_Byte_Array() throws CarboneException, IOException + { + String filename = "/src/test/java/io/carbone/template3.odt"; + Path filePath = Paths.get(directory, filename); + byte[] fileBytes = Files.readAllBytes(filePath); + + String templateId = carboneServices.generateTemplateId(fileBytes); + + assertEquals(templateId, "fb9241ea2218ffd8f974110e539386384620244618c2efbf182b7bd47242987a"); + } }