Github user mike-jumper commented on a diff in the pull request: https://github.com/apache/guacamole-client/pull/181#discussion_r189082729 --- Diff: extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java --- @@ -184,6 +184,43 @@ public static GuacamoleConfiguration getConfiguration(String uri) return parameters; } + /** + * Parse the given string for username and password values, + * and return a map containing the username, password + * or both. + * + * @param userInfo + * The string to parse for username/password values. + * + * @return + * A map with the username, password, or both. + * + * @throws UnsupportedEncodingException + * If Java lacks UTF-8 support. + */ + public static Map<String, String> parseUserInfo(String userInfo) + throws UnsupportedEncodingException { + + Map<String, String> userInfoMap = new HashMap<String, String>(); + Matcher userinfoMatcher = userinfoPattern.matcher(userInfo); + + if (userinfoMatcher.matches()) { + String username = URLDecoder.decode( + userinfoMatcher.group(USERNAME_GROUP), "UTF-8"); + String password = URLDecoder.decode( + userinfoMatcher.group(PASSWORD_GROUP), "UTF-8"); + + if (username != null && !username.isEmpty()) + userInfoMap.put("username", username); + + if (password != null && !password.isEmpty()) + userInfoMap.put("password", password); --- End diff -- We shouldn't be using a `Map` as a sort of poor man's object. If we need to return a username/password pair, then we should either have an object which represents a username/password pair, or this function should just set the username/password on the `GuacamoleConfiguration` directly (might be easier).
---