Factor out templating

That will make it easier to add more template variables.

Change-Id: Ib66c94b83c404aae4d56bbbc2e95101c296ebb1d
Signed-off-by: Patrick Georgi <pgeorgi@google.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/avatars/external/ExternalUrlAvatarProvider.java b/src/main/java/com/googlesource/gerrit/plugins/avatars/external/ExternalUrlAvatarProvider.java
index fafa92e..ef7a500 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/avatars/external/ExternalUrlAvatarProvider.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/avatars/external/ExternalUrlAvatarProvider.java
@@ -82,10 +82,9 @@
       externalAvatarUrl = externalAvatarUrl.replace("http://", "https://");
     }
     StringBuilder avatarUrl = new StringBuilder();
-    String userReplacedAvatarURL = replaceInUrl(USER_PLACEHOLDER,
-        externalAvatarUrl, forUser.getUserName().orElse(null));
-    avatarUrl.append(replaceInUrl(EMAIL_PLACEHOLDER, userReplacedAvatarURL,
-        forUser.getAccount().preferredEmail()));
+    String userReplacedAvatarURL = fillOutTemplate(externalAvatarUrl,
+        forUser);
+    avatarUrl.append(userReplacedAvatarURL);
     if (imageSize > 0 && sizeParameter != null) {
       if (avatarUrl.indexOf("?") < 0) {
         avatarUrl.append("?");
@@ -100,10 +99,7 @@
 
   @Override
   public String getChangeAvatarUrl(IdentifiedUser forUser) {
-    String userReplacedAvatarChangeURL = replaceInUrl(USER_PLACEHOLDER,
-        avatarChangeUrl, forUser.getUserName().orElse(null));
-    return replaceInUrl(EMAIL_PLACEHOLDER, userReplacedAvatarChangeURL,
-        forUser.getAccount().preferredEmail());
+    return fillOutTemplate(avatarChangeUrl, forUser);
   }
 
   /**
@@ -127,4 +123,17 @@
     // as we can't assume anything of 'replacement', we're URL encoding it
     return url.replace(placeholder, Url.encode(replacement));
   }
+
+  /**
+   * Takes a template string and a user and fills in the template variables
+   * @param template The template string to work from
+   * @param user The user object to get information from
+   * @return filled in string
+   */
+  private String fillOutTemplate(String template, IdentifiedUser user) {
+    String workString = replaceInUrl(USER_PLACEHOLDER,
+        template, user.getUserName().orElse(null));
+    return replaceInUrl(EMAIL_PLACEHOLDER, workString,
+        user.getAccount().preferredEmail());
+  }
 }