package fr.adrienbrault.idea.symfony2plugin.profiler.collector; import fr.adrienbrault.idea.symfony2plugin.profiler.dict.MailMessage; import org.intellij.lang.annotations.RegExp; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author Daniel Espendiller <daniel@espendiller.net> */ public class LocalMailCollector implements MailCollectorInterface { @NotNull private final String contents; public LocalMailCollector(@NotNull String contents) { this.contents = contents; } @NotNull public Collection<MailMessage> getMessages() { String messages = this.findTwice(this.contents, "MessageDataCollector\":(\\d+):"); if(messages == null) { return Collections.emptyList(); } Matcher matcher = Pattern.compile("\"\\x00Swift_Mime_SimpleMimeEntity\\x00_body\";s:(\\d+):\"", Pattern.MULTILINE).matcher(messages); Collection<MailMessage> mails = new ArrayList<>(); while(matcher.find()){ String domain = matcher.group(1); //String array_strings = matcher.group(2); int start = matcher.end(); int end = start + Integer.parseInt(domain); //System.out.println(content.substring(start, end)); mails.add(new MailMessage(messages.substring(start, end), "aa", "aa")); //Matcher match_strings = Pattern.compile("'(.*?)'\\s=>\\s'.*?'", Pattern.MULTILINE).matcher(array_strings); //while(match_strings.find()){ // string_map.addString(domain, match_strings.group(1)); //} } return mails; } @Nullable private String findTwice(@NotNull String content, @RegExp String regular) { Matcher matcher = Pattern.compile(regular, Pattern.MULTILINE).matcher(content); if(matcher.find()){ String domain = matcher.group(1); int start = matcher.end(); int end = start + Integer.parseInt(domain); return content.substring(start, end); } return null; } }