From 08e9345b8401b1d53969d396b436c05d90de1fc1 Mon Sep 17 00:00:00 2001 From: Sina Madani Date: Thu, 13 Feb 2025 11:22:19 +0000 Subject: [PATCH 1/7] refactor: Object-oriented AggregateSnippets --- src/main/java/AggregateSnippets.java | 132 +++++++++++++++++---------- 1 file changed, 82 insertions(+), 50 deletions(-) diff --git a/src/main/java/AggregateSnippets.java b/src/main/java/AggregateSnippets.java index fc7d594..83fa59b 100644 --- a/src/main/java/AggregateSnippets.java +++ b/src/main/java/AggregateSnippets.java @@ -4,23 +4,53 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; -import java.util.Objects; +import java.util.*; -public class AggregateSnippets { - public static void main(String[] args) throws Throwable { - final var repoRoot = Paths.get("").toAbsolutePath(); - final var snippetsSrcRoot = repoRoot.resolve("src/main/java/com/vonage/quickstart"); - final var classFileName = "AggregateSnippets.java"; - var sb = new StringBuilder(1 << 17) - .append("# Vonage Java SDK Code Snippets\n") +public final class AggregateSnippets { + record CodeSnippetFile( + Path file, + int mainStartIndex, int mainEndIndex, + int clientStartIndex, int clientEndIndex + ) { + + } + + private final StringBuilder sb = new StringBuilder(1 << 17); + private final Path snippetsSrcRoot; + private final Collection snippetFiles = new LinkedHashSet<>(256); + + public AggregateSnippets(Path snippetsSrcRoot) { + this.snippetsSrcRoot = Objects.requireNonNull(snippetsSrcRoot); + } + + public String computeContents() throws IOException { + final String classFileName = "AggregateSnippets.java"; + sb.append("# Vonage Java SDK Code Snippets\n") .append("Here are all the snippets in this repository.\n") .append("This file was generated by running [").append(classFileName) .append("](src/main/java/").append(classFileName) .append(") from the root of the repository.") .append("\n\n## Contents"); - var allDirs = Files.list(snippetsSrcRoot) - .filter(Files::isDirectory) + var allDirs = getAllDirsSorted(); + + for (var file : allDirs) { + var title = toHeadingTitle(file.getName()); + sb.append("\n- [**").append(title).append("**](#") + .append(title.toLowerCase().replace(' ', '-')).append(")"); + } + sb.append("\n"); + + for (var file : allDirs) { + appendSnippetContent(file, 2); + } + + return sb.toString(); + } + + private List getAllDirsSorted() { + try (var pathStream = Files.list(snippetsSrcRoot)) { + return pathStream.filter(Files::isDirectory) .map(Path::toFile) .sorted((f1, f2) -> { if (isInitialize(f1)) return -1; @@ -28,28 +58,51 @@ public static void main(String[] args) throws Throwable { return f1.getName().compareToIgnoreCase(f2.getName()); }) .toList(); + } + catch (IOException ex) { + System.err.println("Could not read "+snippetsSrcRoot+": " + ex.getMessage()); + return List.of(); + } + } - for (var file : allDirs) { - var title = toHeadingTitle(file.getName()); - sb.append("\n- [**").append(title).append("**](#") - .append(title.toLowerCase().replace(' ', '-')).append(")"); + private void appendSnippetContent(File path, int level) throws IOException { + var fileName = path.getName(); + if (path.isFile()) { + fileName = fileName.substring(0, fileName.lastIndexOf('.')); } - sb.append("\n"); + if (fileName.trim().length() < 3) return; - for (var file : allDirs) { - appendSnippetContent(sb, file, 2); + sb.append("#".repeat(level)).append(' ').append(toHeadingTitle(fileName)).append('\n'); + if (path.isDirectory()) { + for (var file : Objects.requireNonNull(path.listFiles())) { + appendSnippetContent(file, level + 1); + } } + else if (level > 2 && path.getName().endsWith(".java")) { + final String fileContent = Files.readString(path.toPath()), + clientInitEndStr = ".build();\n\n", + clientInitStartStr = "VonageClient client"; - var destPath = repoRoot.resolve("SNIPPETS.md"); - Files.deleteIfExists(destPath); - Files.writeString(destPath, sb.toString(), StandardOpenOption.CREATE_NEW); + final int clientInitStartIndex = fileContent.indexOf(clientInitStartStr) - 8, + clientInitEndIndex = fileContent.indexOf(clientInitEndStr) + 11, + endIndex = fileContent.lastIndexOf('}', fileContent.lastIndexOf('}') - 1) - 1, + startIndex = Math.min(endIndex, clientInitStartIndex > 0 ? + (isInitialize(path.getParentFile()) ? clientInitStartIndex : clientInitEndIndex) : + fileContent.indexOf('{', fileContent.indexOf('{') + 1) + 2 + ); + + final String nugget = fileContent.substring(startIndex, endIndex) + .stripTrailing().stripIndent().replace("\t", " "); + + sb.append("\n```java\n").append(nugget).append("\n```\n"); + } } - static boolean isInitialize(File file) { + private static boolean isInitialize(File file) { return file.getName().equals("initialize"); } - static String toHeadingTitle(String title) { + private static String toHeadingTitle(String title) { var acronyms = new String[]{ "jwt", "id", "uuid", "url", "sim", "sms", "rcs", "mms", "psd2", "dlr", "cnam", @@ -74,33 +127,12 @@ static String toHeadingTitle(String title) { return result; } - static void appendSnippetContent(StringBuilder contentBuilder, File path, int level) throws IOException { - var fileName = path.getName(); - if (path.isFile()) { - fileName = fileName.substring(0, fileName.lastIndexOf('.')); - } - if (fileName.trim().length() < 3) return; - - contentBuilder.append("#".repeat(level)).append(' ').append(toHeadingTitle(fileName)).append('\n'); - if (path.isDirectory()) { - for (var file : Objects.requireNonNull(path.listFiles())) { - appendSnippetContent(contentBuilder, file, level + 1); - } - } - else if (level > 2 && path.getName().endsWith(".java")) { - final var fileContent = Files.readString(path.toPath()); - final var clientInitEndStr = ".build();\n\n"; - final var clientInitStartStr = "VonageClient client"; - final int endIndex = fileContent.lastIndexOf('}', fileContent.lastIndexOf('}') - 1) - 1; - final int startIndex = Math.min(endIndex, fileContent.contains(clientInitStartStr) ? - (isInitialize(path.getParentFile()) ? fileContent.indexOf(clientInitStartStr) - 8 : - fileContent.indexOf(clientInitEndStr) + clientInitEndStr.length()) : - fileContent.indexOf('{', fileContent.indexOf('{') + 1) + 2 - ); - - final var nugget = fileContent.substring(startIndex, endIndex) - .stripTrailing().stripIndent().replace("\t", " "); - contentBuilder.append("\n```java\n").append(nugget).append("\n```\n"); - } + public static void main(String[] args) throws Throwable { + final var repoRoot = Paths.get("").toAbsolutePath(); + final var snippetsSrcRoot = repoRoot.resolve("src/main/java/com/vonage/quickstart"); + final String contents = new AggregateSnippets(snippetsSrcRoot).computeContents(); + var destPath = repoRoot.resolve("SNIPPETS.md"); + Files.deleteIfExists(destPath); + Files.writeString(destPath, contents, StandardOpenOption.CREATE_NEW); } } From ac083efe7887bdee56283bd59e649bad7cd123ca Mon Sep 17 00:00:00 2001 From: Sina Madani Date: Thu, 13 Feb 2025 11:42:58 +0000 Subject: [PATCH 2/7] Separate compute method from result --- SNIPPETS.md | 1 + src/main/java/AggregateSnippets.java | 48 +++++++++++++++++++++------- 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/SNIPPETS.md b/SNIPPETS.md index 2ce87b5..7055531 100644 --- a/SNIPPETS.md +++ b/SNIPPETS.md @@ -20,6 +20,7 @@ This file was generated by running [AggregateSnippets.java](src/main/java/Aggreg - [**Verify**](#verify) - [**Verify v2**](#verify-v2) - [**Voice**](#voice) + ## Initialize ### Application Auth With Key Contents diff --git a/src/main/java/AggregateSnippets.java b/src/main/java/AggregateSnippets.java index 83fa59b..9d858f7 100644 --- a/src/main/java/AggregateSnippets.java +++ b/src/main/java/AggregateSnippets.java @@ -7,7 +7,7 @@ import java.util.*; public final class AggregateSnippets { - record CodeSnippetFile( + public record CodeSnippetFile( Path file, int mainStartIndex, int mainEndIndex, int clientStartIndex, int clientEndIndex @@ -15,17 +15,39 @@ record CodeSnippetFile( } - private final StringBuilder sb = new StringBuilder(1 << 17); + private StringBuilder sb; private final Path snippetsSrcRoot; - private final Collection snippetFiles = new LinkedHashSet<>(256); + private Collection snippetFiles; public AggregateSnippets(Path snippetsSrcRoot) { this.snippetsSrcRoot = Objects.requireNonNull(snippetsSrcRoot); } - public String computeContents() throws IOException { - final String classFileName = "AggregateSnippets.java"; - sb.append("# Vonage Java SDK Code Snippets\n") + private void checkComputed() { + if (sb == null || sb.isEmpty()) { + throw new IllegalStateException("Contents not computed yet."); + } + } + + public Collection getLineNumbers() { + checkComputed(); + return snippetFiles; + } + + public String getContents() { + checkComputed(); + return sb.toString(); + } + + public void saveToFile(Path destPath) throws IOException { + Files.writeString(destPath, getContents(), StandardOpenOption.CREATE); + } + + public void computeContents() throws IOException { + snippetFiles = new LinkedHashSet<>(256); + final String classFileName = getClass().getSimpleName() + ".java"; + sb = new StringBuilder(1 << 17) + .append("# Vonage Java SDK Code Snippets\n") .append("Here are all the snippets in this repository.\n") .append("This file was generated by running [").append(classFileName) .append("](src/main/java/").append(classFileName) @@ -39,13 +61,11 @@ public String computeContents() throws IOException { sb.append("\n- [**").append(title).append("**](#") .append(title.toLowerCase().replace(' ', '-')).append(")"); } - sb.append("\n"); + sb.append("\n\n"); for (var file : allDirs) { appendSnippetContent(file, 2); } - - return sb.toString(); } private List getAllDirsSorted() { @@ -95,6 +115,10 @@ else if (level > 2 && path.getName().endsWith(".java")) { .stripTrailing().stripIndent().replace("\t", " "); sb.append("\n```java\n").append(nugget).append("\n```\n"); + + snippetFiles.add(new CodeSnippetFile( + path.toPath(), startIndex, endIndex, clientInitStartIndex, clientInitEndIndex + )); } } @@ -130,9 +154,9 @@ private static String toHeadingTitle(String title) { public static void main(String[] args) throws Throwable { final var repoRoot = Paths.get("").toAbsolutePath(); final var snippetsSrcRoot = repoRoot.resolve("src/main/java/com/vonage/quickstart"); - final String contents = new AggregateSnippets(snippetsSrcRoot).computeContents(); + final var aggregator = new AggregateSnippets(snippetsSrcRoot); + aggregator.computeContents(); var destPath = repoRoot.resolve("SNIPPETS.md"); - Files.deleteIfExists(destPath); - Files.writeString(destPath, contents, StandardOpenOption.CREATE_NEW); + aggregator.saveToFile(destPath); } } From 2e6abf18b7681711cfe18f012de274aaafb96820 Mon Sep 17 00:00:00 2001 From: Sina Madani Date: Thu, 13 Feb 2025 11:44:11 +0000 Subject: [PATCH 3/7] Move main method to top of file --- src/main/java/AggregateSnippets.java | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/main/java/AggregateSnippets.java b/src/main/java/AggregateSnippets.java index 9d858f7..1225230 100644 --- a/src/main/java/AggregateSnippets.java +++ b/src/main/java/AggregateSnippets.java @@ -7,13 +7,21 @@ import java.util.*; public final class AggregateSnippets { + public static void main(String[] args) throws Throwable { + final var repoRoot = Paths.get("").toAbsolutePath(); + final var snippetsSrcRoot = repoRoot.resolve("src/main/java/com/vonage/quickstart"); + final var aggregator = new AggregateSnippets(snippetsSrcRoot); + aggregator.computeContents(); + var destPath = repoRoot.resolve("SNIPPETS.md"); + aggregator.saveToFile(destPath); + } + + public record CodeSnippetFile( Path file, int mainStartIndex, int mainEndIndex, int clientStartIndex, int clientEndIndex - ) { - - } + ) { } private StringBuilder sb; private final Path snippetsSrcRoot; @@ -150,13 +158,4 @@ private static String toHeadingTitle(String title) { } return result; } - - public static void main(String[] args) throws Throwable { - final var repoRoot = Paths.get("").toAbsolutePath(); - final var snippetsSrcRoot = repoRoot.resolve("src/main/java/com/vonage/quickstart"); - final var aggregator = new AggregateSnippets(snippetsSrcRoot); - aggregator.computeContents(); - var destPath = repoRoot.resolve("SNIPPETS.md"); - aggregator.saveToFile(destPath); - } } From 4badbad24a3cb75d8ce179d9d356f40ff42bfb48 Mon Sep 17 00:00:00 2001 From: Sina Madani Date: Thu, 13 Feb 2025 12:33:31 +0000 Subject: [PATCH 4/7] Generate CSV of line numbers --- snippets_line_numbers.csv | 189 +++++++++++++++++++++++++++ src/main/java/AggregateSnippets.java | 36 ++++- 2 files changed, 219 insertions(+), 6 deletions(-) create mode 100644 snippets_line_numbers.csv diff --git a/snippets_line_numbers.csv b/snippets_line_numbers.csv new file mode 100644 index 0000000..d93b254 --- /dev/null +++ b/snippets_line_numbers.csv @@ -0,0 +1,189 @@ +File,MainStart,MainEnd,ClientStart,ClientEnd +ApplicationAuthWithKeyContents.java,31,37,32,2 +FullAuth.java,32,39,33,2 +BasicAuth.java,31,33,32,2 +ApplicationAuthWithKeyPath.java,31,37,32,2 +CreateSecret.java,33,37,30,33 +ConfigureAccount.java,33,37,30,33 +RevokeSecret.java,32,35,29,32 +GetBalance.java,33,38,30,33 +GetSecret.java,33,37,30,33 +ListSecrets.java,34,41,31,34 +DeleteApplication.java,33,36,30,33 +CreateApplication.java,37,54,34,37 +GetApplication.java,34,39,31,34 +ListApplications.java,34,41,31,34 +UpdateApplication.java,38,77,35,38 +BasicInsight.java,34,42,31,34 +AdvancedInsight.java,35,67,32,35 +StandardInsight.java,34,49,31,34 +AdvancedInsightAsync.java,33,39,30,33 +AdvancedInsightWithCnam.java,34,73,33,34 +AsyncInsightTrigger.java,30,39,0,2 +ValidateInboundJwt.java,30,46,0,2 +GenerateJwt.java,32,54,0,2 +DeleteTheme.java,35,38,31,35 +ListThemes.java,34,37,31,34 +ListDialInNumbers.java,34,37,31,34 +DeleteRecording.java,35,38,31,35 +GetRoom.java,36,39,32,36 +UploadLogo.java,40,43,36,40 +CreateLongTermRoom.java,38,45,34,38 +UpdateRoom.java,38,42,34,38 +ListRecordings.java,36,39,32,36 +UpdateApplication.java,37,42,33,37 +ListRoomsByTheme.java,37,40,33,37 +UpdateTheme.java,38,42,34,38 +CreateInstantRoom.java,36,40,32,36 +GetRecording.java,36,39,32,36 +ListRooms.java,34,37,31,34 +GetTheme.java,36,39,32,36 +CreateTheme.java,36,40,32,36 +SendSmsText.java,33,41,30,33 +SendRcsText.java,33,41,30,33 +SendRcsImage.java,33,41,30,33 +SendRcsRichCard.java,35,73,32,35 +SendRcsSuggestedViewLocation.java,35,61,32,35 +RevokeMessage.java,33,35,30,33 +SendRcsSuggestedReply.java,35,59,32,35 +SendRcsRichCardCarousel.java,35,87,32,35 +SendRcsVideo.java,33,41,30,33 +SendRcsSuggestedCalendarEvent.java,36,61,33,36 +SendRcsFile.java,33,41,30,33 +SendRcsSuggestedOpenUrl.java,35,56,32,35 +SendRcsSuggestedMultipleActions.java,35,66,32,35 +SendRcsSuggestedDialNumber.java,35,57,32,35 +SendRcsSuggestedShareLocation.java,35,54,32,35 +SendMmsVideo.java,33,41,30,33 +SendMmsVcard.java,33,41,30,33 +SendMmsImage.java,33,41,30,33 +SendMmsAudio.java,33,41,30,33 +SendMessengerText.java,33,42,30,33 +SendMessengerImage.java,33,42,30,33 +SendMessengerAudio.java,33,42,30,33 +SendMessengerVideo.java,33,42,30,33 +SendMessengerFile.java,33,42,30,33 +IncomingMessage.java,29,43,0,2 +SendViberVideo.java,33,47,30,33 +SendViberImage.java,33,42,30,33 +SendViberFile.java,33,42,30,33 +SendViberText.java,33,42,30,33 +SendMessengerText.java,29,43,0,2 +SendMessengerVideo.java,29,43,0,2 +SendViberVideo.java,30,46,0,2 +SendViberText.java,30,45,0,2 +SendWhatsappLocation.java,29,44,0,2 +SendWhatsappText.java,29,43,0,2 +SendWhatsappUnreaction.java,29,42,0,2 +SendWhatsappContact.java,31,107,0,2 +SendWhatsappSticker.java,29,43,0,2 +SendWhatsappAudio.java,29,43,0,2 +SendWhatsappFile.java,29,44,0,2 +SendWhatsappImage.java,29,44,0,2 +SendWhatsappReaction.java,29,43,0,2 +SendWhatsappVideo.java,29,43,0,2 +MessageStatusWebhook.java,29,43,0,2 +SendWhatsappLocation.java,33,43,30,33 +SendWhatsappStickerUrl.java,33,41,30,33 +SendWhatsappText.java,33,41,30,33 +SendWhatsappMultiProduct.java,34,47,31,34 +SendWhatsappStickerId.java,33,41,30,33 +SendWhatsappOTP.java,34,67,31,34 +SendWhatsappQuickReplyButton.java,38,105,35,38 +SendWhatsappMediaTemplate.java,38,76,35,38 +SendWhatsappUnreaction.java,33,41,30,33 +MarkAsRead.java,33,35,30,33 +SendWhatsappContact.java,35,105,32,35 +SendWhatsappTemplate.java,36,50,33,36 +SendWhatsappSingleProduct.java,33,44,30,33 +SendWhatsappAudio.java,33,42,30,33 +SendWhatsappFile.java,33,41,30,33 +SendWhatsappImage.java,33,41,30,33 +SendWhatsappLinkButton.java,37,100,34,37 +SendWhatsappReaction.java,33,41,30,33 +SendWhatsappVideo.java,33,41,30,33 +SendWhatsappAuthenticationTemplate.java,36,74,33,36 +FraudScore.java,30,34,30,30 +SimSwap.java,30,34,30,30 +CancelNumber.java,32,35,29,32 +BuyNumber.java,32,35,29,32 +SearchNumbers.java,33,54,30,33 +UpdateNumber.java,33,42,30,33 +ListNumbers.java,33,46,30,33 +RedactATransaction.java,33,36,30,33 +RetrieveSimSwapDate.java,32,36,30,32 +SimSwapped.java,31,37,29,31 +ReceiveSignedSms.java,30,62,0,2 +ReceiveDlr.java,27,51,0,2 +ReceiveSms.java,29,75,0,2 +SendUnicodeMessage.java,33,42,32,33 +SendMessage.java,33,47,32,33 +SendSignedSms.java,2,51,33,2 +TransferCredit.java,34,41,30,34 +TransferBalance.java,34,41,30,34 +ListBalanceTransfers.java,35,39,32,35 +ListSubaccounts.java,34,36,30,34 +GetSubaccount.java,34,36,30,34 +DeactivateSubaccount.java,35,39,31,35 +RenameSubaccount.java,35,40,31,35 +CreateSubaccount.java,35,42,31,35 +TransferNumber.java,34,41,30,34 +ReactivateSubaccount.java,35,39,31,35 +ListCreditTransfers.java,35,39,32,35 +UpdateUser.java,33,41,30,33 +GetUser.java,33,36,30,33 +DeleteUser.java,32,35,29,32 +CreateUser.java,34,54,31,34 +ListUsers.java,34,37,31,34 +CancelVerification.java,33,44,30,33 +AdvanceVerification.java,33,44,30,33 +StartVerificationWithWorkflow.java,33,45,30,33 +SearchVerification.java,34,42,31,34 +CheckVerification.java,34,44,31,34 +StartVerification.java,34,44,31,34 +StartPsd2VerificationWithWorkflow.java,33,45,30,33 +StartPsd2Verification.java,34,46,31,34 +SendRequestWhatsapp.java,33,40,30,33 +SendRequestAllChannels.java,34,52,31,34 +SendRequestEmail.java,33,40,30,33 +SendRequestVoice.java,33,41,30,33 +SendRequestSms.java,33,40,30,33 +SendRequestWithFallback.java,33,41,30,33 +CheckVerificationCode.java,34,50,31,34 +SendRequestSilentAuth.java,33,40,30,33 +DeleteTemplate.java,32,34,29,32 +GetTemplate.java,32,35,29,32 +ListTemplates.java,32,35,29,32 +ListTemplateFragments.java,32,35,29,32 +CreateTemplate.java,32,35,29,32 +UpdateTemplateFragment.java,32,38,29,32 +CreateTemplateFragment.java,34,42,31,34 +UpdateTemplate.java,32,35,29,32 +GetTemplateFragment.java,32,35,29,32 +DeleteTemplateFragment.java,32,34,29,32 +SendRequestWhatsappInteractive.java,33,40,30,33 +CancelRequest.java,33,35,30,33 +RetrieveCallInfo.java,33,37,30,33 +RecordMessage.java,32,70,0,40 +OutboundTextToSpeechWithEventUrl.java,34,42,31,34 +TrackNccoProgress.java,32,68,0,42 +TransferCallNCCO.java,34,38,31,34 +MuteCall.java,32,37,29,32 +EndCall.java,33,36,30,33 +TransferCall.java,32,35,29,32 +RecordConversation.java,33,64,0,44 +DownloadRecording.java,38,55,34,38 +EarmuffCall.java,32,37,29,32 +ConferenceCall.java,31,49,0,39 +RecordCall.java,34,64,0,41 +StreamAudioToCall.java,32,37,29,32 +InboundCall.java,30,56,0,38 +RetrieveInfoForAllCalls.java,37,49,34,37 +RecordCallSplitAudio.java,31,65,0,42 +DtmfInput.java,33,71,0,40 +SendDtmfToCall.java,33,37,30,33 +ConnectInboundCall.java,32,50,0,40 +SendTalkToCall.java,33,37,30,33 +OutboundTextToSpeech.java,33,36,30,33 +AsrInput.java,35,75,0,42 +OutboundTextToSpeechWithNcco.java,36,41,33,36 diff --git a/src/main/java/AggregateSnippets.java b/src/main/java/AggregateSnippets.java index 1225230..bc030e1 100644 --- a/src/main/java/AggregateSnippets.java +++ b/src/main/java/AggregateSnippets.java @@ -12,8 +12,8 @@ public static void main(String[] args) throws Throwable { final var snippetsSrcRoot = repoRoot.resolve("src/main/java/com/vonage/quickstart"); final var aggregator = new AggregateSnippets(snippetsSrcRoot); aggregator.computeContents(); - var destPath = repoRoot.resolve("SNIPPETS.md"); - aggregator.saveToFile(destPath); + aggregator.saveContentsToFile(repoRoot.resolve("SNIPPETS.md")); + aggregator.saveLineNumbersToCsv(repoRoot.resolve("snippets_line_numbers.csv")); } @@ -47,12 +47,28 @@ public String getContents() { return sb.toString(); } - public void saveToFile(Path destPath) throws IOException { + public void saveContentsToFile(Path destPath) throws IOException { Files.writeString(destPath, getContents(), StandardOpenOption.CREATE); } + public void saveLineNumbersToCsv(Path destPath) throws IOException { + checkComputed(); + try (var writer = Files.newBufferedWriter(destPath, StandardOpenOption.CREATE)) { + writer.write("File,MainStart,MainEnd,ClientStart,ClientEnd\n"); + for (var file : snippetFiles) { + writer.write( + file.file.getFileName() + "," + + file.mainStartIndex + "," + + file.mainEndIndex + "," + + file.clientStartIndex + "," + + file.clientEndIndex + "\n" + ); + } + } + } + public void computeContents() throws IOException { - snippetFiles = new LinkedHashSet<>(256); + snippetFiles = new ArrayList<>(256); final String classFileName = getClass().getSimpleName() + ".java"; sb = new StringBuilder(1 << 17) .append("# Vonage Java SDK Code Snippets\n") @@ -124,12 +140,20 @@ else if (level > 2 && path.getName().endsWith(".java")) { sb.append("\n```java\n").append(nugget).append("\n```\n"); - snippetFiles.add(new CodeSnippetFile( - path.toPath(), startIndex, endIndex, clientInitStartIndex, clientInitEndIndex + snippetFiles.add(new CodeSnippetFile(path.toPath(), + lineNumberFromIndex(fileContent, startIndex), + lineNumberFromIndex(fileContent, endIndex), + lineNumberFromIndex(fileContent, clientInitStartIndex) + 1, + lineNumberFromIndex(fileContent, clientInitEndIndex) )); } } + private static int lineNumberFromIndex(String content, int index) { + if (index < 0) return -1; + return content.substring(0, index).split("\n").length; + } + private static boolean isInitialize(File file) { return file.getName().equals("initialize"); } From b0ef06d804a708aa7bb5ca23d9c436dfab421713 Mon Sep 17 00:00:00 2001 From: Sina Madani Date: Thu, 13 Feb 2025 12:43:14 +0000 Subject: [PATCH 5/7] Index correction --- snippets_line_numbers.csv | 376 +++++++++++++-------------- src/main/java/AggregateSnippets.java | 6 +- 2 files changed, 191 insertions(+), 191 deletions(-) diff --git a/snippets_line_numbers.csv b/snippets_line_numbers.csv index d93b254..661fba1 100644 --- a/snippets_line_numbers.csv +++ b/snippets_line_numbers.csv @@ -1,189 +1,189 @@ File,MainStart,MainEnd,ClientStart,ClientEnd -ApplicationAuthWithKeyContents.java,31,37,32,2 -FullAuth.java,32,39,33,2 -BasicAuth.java,31,33,32,2 -ApplicationAuthWithKeyPath.java,31,37,32,2 -CreateSecret.java,33,37,30,33 -ConfigureAccount.java,33,37,30,33 -RevokeSecret.java,32,35,29,32 -GetBalance.java,33,38,30,33 -GetSecret.java,33,37,30,33 -ListSecrets.java,34,41,31,34 -DeleteApplication.java,33,36,30,33 -CreateApplication.java,37,54,34,37 -GetApplication.java,34,39,31,34 -ListApplications.java,34,41,31,34 -UpdateApplication.java,38,77,35,38 -BasicInsight.java,34,42,31,34 -AdvancedInsight.java,35,67,32,35 -StandardInsight.java,34,49,31,34 -AdvancedInsightAsync.java,33,39,30,33 -AdvancedInsightWithCnam.java,34,73,33,34 -AsyncInsightTrigger.java,30,39,0,2 -ValidateInboundJwt.java,30,46,0,2 -GenerateJwt.java,32,54,0,2 -DeleteTheme.java,35,38,31,35 -ListThemes.java,34,37,31,34 -ListDialInNumbers.java,34,37,31,34 -DeleteRecording.java,35,38,31,35 -GetRoom.java,36,39,32,36 -UploadLogo.java,40,43,36,40 -CreateLongTermRoom.java,38,45,34,38 -UpdateRoom.java,38,42,34,38 -ListRecordings.java,36,39,32,36 -UpdateApplication.java,37,42,33,37 -ListRoomsByTheme.java,37,40,33,37 -UpdateTheme.java,38,42,34,38 -CreateInstantRoom.java,36,40,32,36 -GetRecording.java,36,39,32,36 -ListRooms.java,34,37,31,34 -GetTheme.java,36,39,32,36 -CreateTheme.java,36,40,32,36 -SendSmsText.java,33,41,30,33 -SendRcsText.java,33,41,30,33 -SendRcsImage.java,33,41,30,33 -SendRcsRichCard.java,35,73,32,35 -SendRcsSuggestedViewLocation.java,35,61,32,35 -RevokeMessage.java,33,35,30,33 -SendRcsSuggestedReply.java,35,59,32,35 -SendRcsRichCardCarousel.java,35,87,32,35 -SendRcsVideo.java,33,41,30,33 -SendRcsSuggestedCalendarEvent.java,36,61,33,36 -SendRcsFile.java,33,41,30,33 -SendRcsSuggestedOpenUrl.java,35,56,32,35 -SendRcsSuggestedMultipleActions.java,35,66,32,35 -SendRcsSuggestedDialNumber.java,35,57,32,35 -SendRcsSuggestedShareLocation.java,35,54,32,35 -SendMmsVideo.java,33,41,30,33 -SendMmsVcard.java,33,41,30,33 -SendMmsImage.java,33,41,30,33 -SendMmsAudio.java,33,41,30,33 -SendMessengerText.java,33,42,30,33 -SendMessengerImage.java,33,42,30,33 -SendMessengerAudio.java,33,42,30,33 -SendMessengerVideo.java,33,42,30,33 -SendMessengerFile.java,33,42,30,33 -IncomingMessage.java,29,43,0,2 -SendViberVideo.java,33,47,30,33 -SendViberImage.java,33,42,30,33 -SendViberFile.java,33,42,30,33 -SendViberText.java,33,42,30,33 -SendMessengerText.java,29,43,0,2 -SendMessengerVideo.java,29,43,0,2 -SendViberVideo.java,30,46,0,2 -SendViberText.java,30,45,0,2 -SendWhatsappLocation.java,29,44,0,2 -SendWhatsappText.java,29,43,0,2 -SendWhatsappUnreaction.java,29,42,0,2 -SendWhatsappContact.java,31,107,0,2 -SendWhatsappSticker.java,29,43,0,2 -SendWhatsappAudio.java,29,43,0,2 -SendWhatsappFile.java,29,44,0,2 -SendWhatsappImage.java,29,44,0,2 -SendWhatsappReaction.java,29,43,0,2 -SendWhatsappVideo.java,29,43,0,2 -MessageStatusWebhook.java,29,43,0,2 -SendWhatsappLocation.java,33,43,30,33 -SendWhatsappStickerUrl.java,33,41,30,33 -SendWhatsappText.java,33,41,30,33 -SendWhatsappMultiProduct.java,34,47,31,34 -SendWhatsappStickerId.java,33,41,30,33 -SendWhatsappOTP.java,34,67,31,34 -SendWhatsappQuickReplyButton.java,38,105,35,38 -SendWhatsappMediaTemplate.java,38,76,35,38 -SendWhatsappUnreaction.java,33,41,30,33 -MarkAsRead.java,33,35,30,33 -SendWhatsappContact.java,35,105,32,35 -SendWhatsappTemplate.java,36,50,33,36 -SendWhatsappSingleProduct.java,33,44,30,33 -SendWhatsappAudio.java,33,42,30,33 -SendWhatsappFile.java,33,41,30,33 -SendWhatsappImage.java,33,41,30,33 -SendWhatsappLinkButton.java,37,100,34,37 -SendWhatsappReaction.java,33,41,30,33 -SendWhatsappVideo.java,33,41,30,33 -SendWhatsappAuthenticationTemplate.java,36,74,33,36 -FraudScore.java,30,34,30,30 -SimSwap.java,30,34,30,30 -CancelNumber.java,32,35,29,32 -BuyNumber.java,32,35,29,32 -SearchNumbers.java,33,54,30,33 -UpdateNumber.java,33,42,30,33 -ListNumbers.java,33,46,30,33 -RedactATransaction.java,33,36,30,33 -RetrieveSimSwapDate.java,32,36,30,32 -SimSwapped.java,31,37,29,31 -ReceiveSignedSms.java,30,62,0,2 -ReceiveDlr.java,27,51,0,2 -ReceiveSms.java,29,75,0,2 -SendUnicodeMessage.java,33,42,32,33 -SendMessage.java,33,47,32,33 -SendSignedSms.java,2,51,33,2 -TransferCredit.java,34,41,30,34 -TransferBalance.java,34,41,30,34 -ListBalanceTransfers.java,35,39,32,35 -ListSubaccounts.java,34,36,30,34 -GetSubaccount.java,34,36,30,34 -DeactivateSubaccount.java,35,39,31,35 -RenameSubaccount.java,35,40,31,35 -CreateSubaccount.java,35,42,31,35 -TransferNumber.java,34,41,30,34 -ReactivateSubaccount.java,35,39,31,35 -ListCreditTransfers.java,35,39,32,35 -UpdateUser.java,33,41,30,33 -GetUser.java,33,36,30,33 -DeleteUser.java,32,35,29,32 -CreateUser.java,34,54,31,34 -ListUsers.java,34,37,31,34 -CancelVerification.java,33,44,30,33 -AdvanceVerification.java,33,44,30,33 -StartVerificationWithWorkflow.java,33,45,30,33 -SearchVerification.java,34,42,31,34 -CheckVerification.java,34,44,31,34 -StartVerification.java,34,44,31,34 -StartPsd2VerificationWithWorkflow.java,33,45,30,33 -StartPsd2Verification.java,34,46,31,34 -SendRequestWhatsapp.java,33,40,30,33 -SendRequestAllChannels.java,34,52,31,34 -SendRequestEmail.java,33,40,30,33 -SendRequestVoice.java,33,41,30,33 -SendRequestSms.java,33,40,30,33 -SendRequestWithFallback.java,33,41,30,33 -CheckVerificationCode.java,34,50,31,34 -SendRequestSilentAuth.java,33,40,30,33 -DeleteTemplate.java,32,34,29,32 -GetTemplate.java,32,35,29,32 -ListTemplates.java,32,35,29,32 -ListTemplateFragments.java,32,35,29,32 -CreateTemplate.java,32,35,29,32 -UpdateTemplateFragment.java,32,38,29,32 -CreateTemplateFragment.java,34,42,31,34 -UpdateTemplate.java,32,35,29,32 -GetTemplateFragment.java,32,35,29,32 -DeleteTemplateFragment.java,32,34,29,32 -SendRequestWhatsappInteractive.java,33,40,30,33 -CancelRequest.java,33,35,30,33 -RetrieveCallInfo.java,33,37,30,33 -RecordMessage.java,32,70,0,40 -OutboundTextToSpeechWithEventUrl.java,34,42,31,34 -TrackNccoProgress.java,32,68,0,42 -TransferCallNCCO.java,34,38,31,34 -MuteCall.java,32,37,29,32 -EndCall.java,33,36,30,33 -TransferCall.java,32,35,29,32 -RecordConversation.java,33,64,0,44 -DownloadRecording.java,38,55,34,38 -EarmuffCall.java,32,37,29,32 -ConferenceCall.java,31,49,0,39 -RecordCall.java,34,64,0,41 -StreamAudioToCall.java,32,37,29,32 -InboundCall.java,30,56,0,38 -RetrieveInfoForAllCalls.java,37,49,34,37 -RecordCallSplitAudio.java,31,65,0,42 -DtmfInput.java,33,71,0,40 -SendDtmfToCall.java,33,37,30,33 -ConnectInboundCall.java,32,50,0,40 -SendTalkToCall.java,33,37,30,33 -OutboundTextToSpeech.java,33,36,30,33 -AsrInput.java,35,75,0,42 -OutboundTextToSpeechWithNcco.java,36,41,33,36 +ApplicationAuthWithKeyContents.java,32,37,-1,-1 +FullAuth.java,33,39,-1,-1 +BasicAuth.java,32,33,-1,-1 +ApplicationAuthWithKeyPath.java,32,37,-1,-1 +CreateSecret.java,34,37,30,33 +ConfigureAccount.java,34,37,30,33 +RevokeSecret.java,33,35,29,32 +GetBalance.java,34,38,30,33 +GetSecret.java,34,37,30,33 +ListSecrets.java,35,41,31,34 +DeleteApplication.java,34,36,30,33 +CreateApplication.java,38,54,34,37 +GetApplication.java,35,39,31,34 +ListApplications.java,35,41,31,34 +UpdateApplication.java,39,77,35,38 +BasicInsight.java,35,42,31,34 +AdvancedInsight.java,36,67,32,35 +StandardInsight.java,35,49,31,34 +AdvancedInsightAsync.java,34,39,30,33 +AdvancedInsightWithCnam.java,35,73,33,34 +AsyncInsightTrigger.java,31,39,-1,-1 +ValidateInboundJwt.java,31,46,-1,-1 +GenerateJwt.java,33,54,-1,-1 +DeleteTheme.java,36,38,31,35 +ListThemes.java,35,37,31,34 +ListDialInNumbers.java,35,37,31,34 +DeleteRecording.java,36,38,31,35 +GetRoom.java,37,39,32,36 +UploadLogo.java,41,43,36,40 +CreateLongTermRoom.java,39,45,34,38 +UpdateRoom.java,39,42,34,38 +ListRecordings.java,37,39,32,36 +UpdateApplication.java,38,42,33,37 +ListRoomsByTheme.java,38,40,33,37 +UpdateTheme.java,39,42,34,38 +CreateInstantRoom.java,37,40,32,36 +GetRecording.java,37,39,32,36 +ListRooms.java,35,37,31,34 +GetTheme.java,37,39,32,36 +CreateTheme.java,37,40,32,36 +SendSmsText.java,34,41,30,33 +SendRcsText.java,34,41,30,33 +SendRcsImage.java,34,41,30,33 +SendRcsRichCard.java,36,73,32,35 +SendRcsSuggestedViewLocation.java,36,61,32,35 +RevokeMessage.java,34,35,30,33 +SendRcsSuggestedReply.java,36,59,32,35 +SendRcsRichCardCarousel.java,36,87,32,35 +SendRcsVideo.java,34,41,30,33 +SendRcsSuggestedCalendarEvent.java,37,61,33,36 +SendRcsFile.java,34,41,30,33 +SendRcsSuggestedOpenUrl.java,36,56,32,35 +SendRcsSuggestedMultipleActions.java,36,66,32,35 +SendRcsSuggestedDialNumber.java,36,57,32,35 +SendRcsSuggestedShareLocation.java,36,54,32,35 +SendMmsVideo.java,34,41,30,33 +SendMmsVcard.java,34,41,30,33 +SendMmsImage.java,34,41,30,33 +SendMmsAudio.java,34,41,30,33 +SendMessengerText.java,34,42,30,33 +SendMessengerImage.java,34,42,30,33 +SendMessengerAudio.java,34,42,30,33 +SendMessengerVideo.java,34,42,30,33 +SendMessengerFile.java,34,42,30,33 +IncomingMessage.java,30,43,-1,-1 +SendViberVideo.java,34,47,30,33 +SendViberImage.java,34,42,30,33 +SendViberFile.java,34,42,30,33 +SendViberText.java,34,42,30,33 +SendMessengerText.java,30,43,-1,-1 +SendMessengerVideo.java,30,43,-1,-1 +SendViberVideo.java,31,46,-1,-1 +SendViberText.java,31,45,-1,-1 +SendWhatsappLocation.java,30,44,-1,-1 +SendWhatsappText.java,30,43,-1,-1 +SendWhatsappUnreaction.java,30,42,-1,-1 +SendWhatsappContact.java,32,107,-1,-1 +SendWhatsappSticker.java,30,43,-1,-1 +SendWhatsappAudio.java,30,43,-1,-1 +SendWhatsappFile.java,30,44,-1,-1 +SendWhatsappImage.java,30,44,-1,-1 +SendWhatsappReaction.java,30,43,-1,-1 +SendWhatsappVideo.java,30,43,-1,-1 +MessageStatusWebhook.java,30,43,-1,-1 +SendWhatsappLocation.java,34,43,30,33 +SendWhatsappStickerUrl.java,34,41,30,33 +SendWhatsappText.java,34,41,30,33 +SendWhatsappMultiProduct.java,35,47,31,34 +SendWhatsappStickerId.java,34,41,30,33 +SendWhatsappOTP.java,35,67,31,34 +SendWhatsappQuickReplyButton.java,39,105,35,38 +SendWhatsappMediaTemplate.java,39,76,35,38 +SendWhatsappUnreaction.java,34,41,30,33 +MarkAsRead.java,34,35,30,33 +SendWhatsappContact.java,36,105,32,35 +SendWhatsappTemplate.java,37,50,33,36 +SendWhatsappSingleProduct.java,34,44,30,33 +SendWhatsappAudio.java,34,42,30,33 +SendWhatsappFile.java,34,41,30,33 +SendWhatsappImage.java,34,41,30,33 +SendWhatsappLinkButton.java,38,100,34,37 +SendWhatsappReaction.java,34,41,30,33 +SendWhatsappVideo.java,34,41,30,33 +SendWhatsappAuthenticationTemplate.java,37,74,33,36 +FraudScore.java,31,34,30,30 +SimSwap.java,31,34,30,30 +CancelNumber.java,33,35,29,32 +BuyNumber.java,33,35,29,32 +SearchNumbers.java,34,54,30,33 +UpdateNumber.java,34,42,30,33 +ListNumbers.java,34,46,30,33 +RedactATransaction.java,34,36,30,33 +RetrieveSimSwapDate.java,33,36,30,32 +SimSwapped.java,32,37,29,31 +ReceiveSignedSms.java,31,62,-1,-1 +ReceiveDlr.java,28,51,-1,-1 +ReceiveSms.java,30,75,-1,-1 +SendUnicodeMessage.java,34,42,32,33 +SendMessage.java,34,47,32,33 +SendSignedSms.java,3,51,-1,-1 +TransferCredit.java,35,41,30,34 +TransferBalance.java,35,41,30,34 +ListBalanceTransfers.java,36,39,32,35 +ListSubaccounts.java,35,36,30,34 +GetSubaccount.java,35,36,30,34 +DeactivateSubaccount.java,36,39,31,35 +RenameSubaccount.java,36,40,31,35 +CreateSubaccount.java,36,42,31,35 +TransferNumber.java,35,41,30,34 +ReactivateSubaccount.java,36,39,31,35 +ListCreditTransfers.java,36,39,32,35 +UpdateUser.java,34,41,30,33 +GetUser.java,34,36,30,33 +DeleteUser.java,33,35,29,32 +CreateUser.java,35,54,31,34 +ListUsers.java,35,37,31,34 +CancelVerification.java,34,44,30,33 +AdvanceVerification.java,34,44,30,33 +StartVerificationWithWorkflow.java,34,45,30,33 +SearchVerification.java,35,42,31,34 +CheckVerification.java,35,44,31,34 +StartVerification.java,35,44,31,34 +StartPsd2VerificationWithWorkflow.java,34,45,30,33 +StartPsd2Verification.java,35,46,31,34 +SendRequestWhatsapp.java,34,40,30,33 +SendRequestAllChannels.java,35,52,31,34 +SendRequestEmail.java,34,40,30,33 +SendRequestVoice.java,34,41,30,33 +SendRequestSms.java,34,40,30,33 +SendRequestWithFallback.java,34,41,30,33 +CheckVerificationCode.java,35,50,31,34 +SendRequestSilentAuth.java,34,40,30,33 +DeleteTemplate.java,33,34,29,32 +GetTemplate.java,33,35,29,32 +ListTemplates.java,33,35,29,32 +ListTemplateFragments.java,33,35,29,32 +CreateTemplate.java,33,35,29,32 +UpdateTemplateFragment.java,33,38,29,32 +CreateTemplateFragment.java,35,42,31,34 +UpdateTemplate.java,33,35,29,32 +GetTemplateFragment.java,33,35,29,32 +DeleteTemplateFragment.java,33,34,29,32 +SendRequestWhatsappInteractive.java,34,40,30,33 +CancelRequest.java,34,35,30,33 +RetrieveCallInfo.java,34,37,30,33 +RecordMessage.java,33,70,0,40 +OutboundTextToSpeechWithEventUrl.java,35,42,31,34 +TrackNccoProgress.java,33,68,0,42 +TransferCallNCCO.java,35,38,31,34 +MuteCall.java,33,37,29,32 +EndCall.java,34,36,30,33 +TransferCall.java,33,35,29,32 +RecordConversation.java,34,64,0,44 +DownloadRecording.java,39,55,34,38 +EarmuffCall.java,33,37,29,32 +ConferenceCall.java,32,49,0,39 +RecordCall.java,35,64,0,41 +StreamAudioToCall.java,33,37,29,32 +InboundCall.java,31,56,0,38 +RetrieveInfoForAllCalls.java,38,49,34,37 +RecordCallSplitAudio.java,32,65,0,42 +DtmfInput.java,34,71,0,40 +SendDtmfToCall.java,34,37,30,33 +ConnectInboundCall.java,33,50,0,40 +SendTalkToCall.java,34,37,30,33 +OutboundTextToSpeech.java,34,36,30,33 +AsrInput.java,36,75,0,42 +OutboundTextToSpeechWithNcco.java,37,41,33,36 diff --git a/src/main/java/AggregateSnippets.java b/src/main/java/AggregateSnippets.java index bc030e1..1b22b68 100644 --- a/src/main/java/AggregateSnippets.java +++ b/src/main/java/AggregateSnippets.java @@ -141,10 +141,10 @@ else if (level > 2 && path.getName().endsWith(".java")) { sb.append("\n```java\n").append(nugget).append("\n```\n"); snippetFiles.add(new CodeSnippetFile(path.toPath(), - lineNumberFromIndex(fileContent, startIndex), + lineNumberFromIndex(fileContent, startIndex) + 1, lineNumberFromIndex(fileContent, endIndex), - lineNumberFromIndex(fileContent, clientInitStartIndex) + 1, - lineNumberFromIndex(fileContent, clientInitEndIndex) + clientInitEndIndex < 12 ? -1 : lineNumberFromIndex(fileContent, clientInitStartIndex) + 1, + clientInitEndIndex < 12 ? -1 : lineNumberFromIndex(fileContent, clientInitEndIndex) )); } } From 6983cd824746694c6eeb5115d48d39230901f292 Mon Sep 17 00:00:00 2001 From: Sina Madani Date: Thu, 13 Feb 2025 13:55:16 +0000 Subject: [PATCH 6/7] Add copyright header to AggregateSnippets --- src/main/java/AggregateSnippets.java | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main/java/AggregateSnippets.java b/src/main/java/AggregateSnippets.java index 1b22b68..15bb5d2 100644 --- a/src/main/java/AggregateSnippets.java +++ b/src/main/java/AggregateSnippets.java @@ -1,3 +1,25 @@ +/* + * Copyright 2025 Vonage + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -140,11 +162,12 @@ else if (level > 2 && path.getName().endsWith(".java")) { sb.append("\n```java\n").append(nugget).append("\n```\n"); + boolean standalone = clientInitEndIndex < 12; snippetFiles.add(new CodeSnippetFile(path.toPath(), lineNumberFromIndex(fileContent, startIndex) + 1, lineNumberFromIndex(fileContent, endIndex), - clientInitEndIndex < 12 ? -1 : lineNumberFromIndex(fileContent, clientInitStartIndex) + 1, - clientInitEndIndex < 12 ? -1 : lineNumberFromIndex(fileContent, clientInitEndIndex) + standalone ? -1 : lineNumberFromIndex(fileContent, clientInitStartIndex) + 1, + standalone ? -1 : lineNumberFromIndex(fileContent, clientInitEndIndex) )); } } From af610bbcc567fa865afc628f789ba1062a7727f9 Mon Sep 17 00:00:00 2001 From: Sina Madani Date: Thu, 13 Feb 2025 16:13:36 +0000 Subject: [PATCH 7/7] Don't store line numbers file --- snippets_line_numbers.csv | 189 --------------------------- src/main/java/AggregateSnippets.java | 27 ++-- 2 files changed, 15 insertions(+), 201 deletions(-) delete mode 100644 snippets_line_numbers.csv diff --git a/snippets_line_numbers.csv b/snippets_line_numbers.csv deleted file mode 100644 index 661fba1..0000000 --- a/snippets_line_numbers.csv +++ /dev/null @@ -1,189 +0,0 @@ -File,MainStart,MainEnd,ClientStart,ClientEnd -ApplicationAuthWithKeyContents.java,32,37,-1,-1 -FullAuth.java,33,39,-1,-1 -BasicAuth.java,32,33,-1,-1 -ApplicationAuthWithKeyPath.java,32,37,-1,-1 -CreateSecret.java,34,37,30,33 -ConfigureAccount.java,34,37,30,33 -RevokeSecret.java,33,35,29,32 -GetBalance.java,34,38,30,33 -GetSecret.java,34,37,30,33 -ListSecrets.java,35,41,31,34 -DeleteApplication.java,34,36,30,33 -CreateApplication.java,38,54,34,37 -GetApplication.java,35,39,31,34 -ListApplications.java,35,41,31,34 -UpdateApplication.java,39,77,35,38 -BasicInsight.java,35,42,31,34 -AdvancedInsight.java,36,67,32,35 -StandardInsight.java,35,49,31,34 -AdvancedInsightAsync.java,34,39,30,33 -AdvancedInsightWithCnam.java,35,73,33,34 -AsyncInsightTrigger.java,31,39,-1,-1 -ValidateInboundJwt.java,31,46,-1,-1 -GenerateJwt.java,33,54,-1,-1 -DeleteTheme.java,36,38,31,35 -ListThemes.java,35,37,31,34 -ListDialInNumbers.java,35,37,31,34 -DeleteRecording.java,36,38,31,35 -GetRoom.java,37,39,32,36 -UploadLogo.java,41,43,36,40 -CreateLongTermRoom.java,39,45,34,38 -UpdateRoom.java,39,42,34,38 -ListRecordings.java,37,39,32,36 -UpdateApplication.java,38,42,33,37 -ListRoomsByTheme.java,38,40,33,37 -UpdateTheme.java,39,42,34,38 -CreateInstantRoom.java,37,40,32,36 -GetRecording.java,37,39,32,36 -ListRooms.java,35,37,31,34 -GetTheme.java,37,39,32,36 -CreateTheme.java,37,40,32,36 -SendSmsText.java,34,41,30,33 -SendRcsText.java,34,41,30,33 -SendRcsImage.java,34,41,30,33 -SendRcsRichCard.java,36,73,32,35 -SendRcsSuggestedViewLocation.java,36,61,32,35 -RevokeMessage.java,34,35,30,33 -SendRcsSuggestedReply.java,36,59,32,35 -SendRcsRichCardCarousel.java,36,87,32,35 -SendRcsVideo.java,34,41,30,33 -SendRcsSuggestedCalendarEvent.java,37,61,33,36 -SendRcsFile.java,34,41,30,33 -SendRcsSuggestedOpenUrl.java,36,56,32,35 -SendRcsSuggestedMultipleActions.java,36,66,32,35 -SendRcsSuggestedDialNumber.java,36,57,32,35 -SendRcsSuggestedShareLocation.java,36,54,32,35 -SendMmsVideo.java,34,41,30,33 -SendMmsVcard.java,34,41,30,33 -SendMmsImage.java,34,41,30,33 -SendMmsAudio.java,34,41,30,33 -SendMessengerText.java,34,42,30,33 -SendMessengerImage.java,34,42,30,33 -SendMessengerAudio.java,34,42,30,33 -SendMessengerVideo.java,34,42,30,33 -SendMessengerFile.java,34,42,30,33 -IncomingMessage.java,30,43,-1,-1 -SendViberVideo.java,34,47,30,33 -SendViberImage.java,34,42,30,33 -SendViberFile.java,34,42,30,33 -SendViberText.java,34,42,30,33 -SendMessengerText.java,30,43,-1,-1 -SendMessengerVideo.java,30,43,-1,-1 -SendViberVideo.java,31,46,-1,-1 -SendViberText.java,31,45,-1,-1 -SendWhatsappLocation.java,30,44,-1,-1 -SendWhatsappText.java,30,43,-1,-1 -SendWhatsappUnreaction.java,30,42,-1,-1 -SendWhatsappContact.java,32,107,-1,-1 -SendWhatsappSticker.java,30,43,-1,-1 -SendWhatsappAudio.java,30,43,-1,-1 -SendWhatsappFile.java,30,44,-1,-1 -SendWhatsappImage.java,30,44,-1,-1 -SendWhatsappReaction.java,30,43,-1,-1 -SendWhatsappVideo.java,30,43,-1,-1 -MessageStatusWebhook.java,30,43,-1,-1 -SendWhatsappLocation.java,34,43,30,33 -SendWhatsappStickerUrl.java,34,41,30,33 -SendWhatsappText.java,34,41,30,33 -SendWhatsappMultiProduct.java,35,47,31,34 -SendWhatsappStickerId.java,34,41,30,33 -SendWhatsappOTP.java,35,67,31,34 -SendWhatsappQuickReplyButton.java,39,105,35,38 -SendWhatsappMediaTemplate.java,39,76,35,38 -SendWhatsappUnreaction.java,34,41,30,33 -MarkAsRead.java,34,35,30,33 -SendWhatsappContact.java,36,105,32,35 -SendWhatsappTemplate.java,37,50,33,36 -SendWhatsappSingleProduct.java,34,44,30,33 -SendWhatsappAudio.java,34,42,30,33 -SendWhatsappFile.java,34,41,30,33 -SendWhatsappImage.java,34,41,30,33 -SendWhatsappLinkButton.java,38,100,34,37 -SendWhatsappReaction.java,34,41,30,33 -SendWhatsappVideo.java,34,41,30,33 -SendWhatsappAuthenticationTemplate.java,37,74,33,36 -FraudScore.java,31,34,30,30 -SimSwap.java,31,34,30,30 -CancelNumber.java,33,35,29,32 -BuyNumber.java,33,35,29,32 -SearchNumbers.java,34,54,30,33 -UpdateNumber.java,34,42,30,33 -ListNumbers.java,34,46,30,33 -RedactATransaction.java,34,36,30,33 -RetrieveSimSwapDate.java,33,36,30,32 -SimSwapped.java,32,37,29,31 -ReceiveSignedSms.java,31,62,-1,-1 -ReceiveDlr.java,28,51,-1,-1 -ReceiveSms.java,30,75,-1,-1 -SendUnicodeMessage.java,34,42,32,33 -SendMessage.java,34,47,32,33 -SendSignedSms.java,3,51,-1,-1 -TransferCredit.java,35,41,30,34 -TransferBalance.java,35,41,30,34 -ListBalanceTransfers.java,36,39,32,35 -ListSubaccounts.java,35,36,30,34 -GetSubaccount.java,35,36,30,34 -DeactivateSubaccount.java,36,39,31,35 -RenameSubaccount.java,36,40,31,35 -CreateSubaccount.java,36,42,31,35 -TransferNumber.java,35,41,30,34 -ReactivateSubaccount.java,36,39,31,35 -ListCreditTransfers.java,36,39,32,35 -UpdateUser.java,34,41,30,33 -GetUser.java,34,36,30,33 -DeleteUser.java,33,35,29,32 -CreateUser.java,35,54,31,34 -ListUsers.java,35,37,31,34 -CancelVerification.java,34,44,30,33 -AdvanceVerification.java,34,44,30,33 -StartVerificationWithWorkflow.java,34,45,30,33 -SearchVerification.java,35,42,31,34 -CheckVerification.java,35,44,31,34 -StartVerification.java,35,44,31,34 -StartPsd2VerificationWithWorkflow.java,34,45,30,33 -StartPsd2Verification.java,35,46,31,34 -SendRequestWhatsapp.java,34,40,30,33 -SendRequestAllChannels.java,35,52,31,34 -SendRequestEmail.java,34,40,30,33 -SendRequestVoice.java,34,41,30,33 -SendRequestSms.java,34,40,30,33 -SendRequestWithFallback.java,34,41,30,33 -CheckVerificationCode.java,35,50,31,34 -SendRequestSilentAuth.java,34,40,30,33 -DeleteTemplate.java,33,34,29,32 -GetTemplate.java,33,35,29,32 -ListTemplates.java,33,35,29,32 -ListTemplateFragments.java,33,35,29,32 -CreateTemplate.java,33,35,29,32 -UpdateTemplateFragment.java,33,38,29,32 -CreateTemplateFragment.java,35,42,31,34 -UpdateTemplate.java,33,35,29,32 -GetTemplateFragment.java,33,35,29,32 -DeleteTemplateFragment.java,33,34,29,32 -SendRequestWhatsappInteractive.java,34,40,30,33 -CancelRequest.java,34,35,30,33 -RetrieveCallInfo.java,34,37,30,33 -RecordMessage.java,33,70,0,40 -OutboundTextToSpeechWithEventUrl.java,35,42,31,34 -TrackNccoProgress.java,33,68,0,42 -TransferCallNCCO.java,35,38,31,34 -MuteCall.java,33,37,29,32 -EndCall.java,34,36,30,33 -TransferCall.java,33,35,29,32 -RecordConversation.java,34,64,0,44 -DownloadRecording.java,39,55,34,38 -EarmuffCall.java,33,37,29,32 -ConferenceCall.java,32,49,0,39 -RecordCall.java,35,64,0,41 -StreamAudioToCall.java,33,37,29,32 -InboundCall.java,31,56,0,38 -RetrieveInfoForAllCalls.java,38,49,34,37 -RecordCallSplitAudio.java,32,65,0,42 -DtmfInput.java,34,71,0,40 -SendDtmfToCall.java,34,37,30,33 -ConnectInboundCall.java,33,50,0,40 -SendTalkToCall.java,34,37,30,33 -OutboundTextToSpeech.java,34,36,30,33 -AsrInput.java,36,75,0,42 -OutboundTextToSpeechWithNcco.java,37,41,33,36 diff --git a/src/main/java/AggregateSnippets.java b/src/main/java/AggregateSnippets.java index 15bb5d2..c1d2eff 100644 --- a/src/main/java/AggregateSnippets.java +++ b/src/main/java/AggregateSnippets.java @@ -29,17 +29,20 @@ import java.util.*; public final class AggregateSnippets { - public static void main(String[] args) throws Throwable { + + public static void main(String... args) throws Throwable { final var repoRoot = Paths.get("").toAbsolutePath(); final var snippetsSrcRoot = repoRoot.resolve("src/main/java/com/vonage/quickstart"); final var aggregator = new AggregateSnippets(snippetsSrcRoot); aggregator.computeContents(); aggregator.saveContentsToFile(repoRoot.resolve("SNIPPETS.md")); - aggregator.saveLineNumbersToCsv(repoRoot.resolve("snippets_line_numbers.csv")); + if (args.length > 0) { + aggregator.saveLineNumbersToCsv(Paths.get(args[0])); + } } - public record CodeSnippetFile( + public record CodeSnippetFileInfo( Path file, int mainStartIndex, int mainEndIndex, int clientStartIndex, int clientEndIndex @@ -47,7 +50,7 @@ public record CodeSnippetFile( private StringBuilder sb; private final Path snippetsSrcRoot; - private Collection snippetFiles; + private Collection snippetFiles; public AggregateSnippets(Path snippetsSrcRoot) { this.snippetsSrcRoot = Objects.requireNonNull(snippetsSrcRoot); @@ -59,7 +62,7 @@ private void checkComputed() { } } - public Collection getLineNumbers() { + public Collection getLineNumbers() { checkComputed(); return snippetFiles; } @@ -77,13 +80,13 @@ public void saveLineNumbersToCsv(Path destPath) throws IOException { checkComputed(); try (var writer = Files.newBufferedWriter(destPath, StandardOpenOption.CREATE)) { writer.write("File,MainStart,MainEnd,ClientStart,ClientEnd\n"); - for (var file : snippetFiles) { + for (var metadata : snippetFiles) { writer.write( - file.file.getFileName() + "," + - file.mainStartIndex + "," + - file.mainEndIndex + "," + - file.clientStartIndex + "," + - file.clientEndIndex + "\n" + metadata.file.getFileName() + "," + + metadata.mainStartIndex + "," + + metadata.mainEndIndex + "," + + metadata.clientStartIndex + "," + + metadata.clientEndIndex + "\n" ); } } @@ -163,7 +166,7 @@ else if (level > 2 && path.getName().endsWith(".java")) { sb.append("\n```java\n").append(nugget).append("\n```\n"); boolean standalone = clientInitEndIndex < 12; - snippetFiles.add(new CodeSnippetFile(path.toPath(), + snippetFiles.add(new CodeSnippetFileInfo(path.toPath(), lineNumberFromIndex(fileContent, startIndex) + 1, lineNumberFromIndex(fileContent, endIndex), standalone ? -1 : lineNumberFromIndex(fileContent, clientInitStartIndex) + 1,