Skip to content

Commit

Permalink
Переименованы переменные
Browse files Browse the repository at this point in the history
  • Loading branch information
kalenchukov committed Mar 27, 2022
1 parent 39b59a9 commit 3bd0797
Showing 1 changed file with 29 additions and 19 deletions.
48 changes: 29 additions & 19 deletions src/main/java/dev/kalenchukov/uriquery/UriQuery.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

/**
* Класс содержит статические методы для сборки / разборки параметров URI.
Expand All @@ -25,19 +24,21 @@ private UriQuery() {}
/**
* Разбирает параметры URI.
*
* @param uriQueryEncode Закодированные параметры URI.
* @param query Закодированные параметры URI.
* @return Коллекцию параметров и их значений.
*/
@NotNull
public static Map<@NotNull String, @NotNull List<@NotNull String>> parse(@Nullable final String uriQueryEncode)
public static Map<@NotNull String, @NotNull List<@NotNull String>> parse(@NotNull final String query)
{
Map<String, List<String>> queryParams = new LinkedHashMap<>();
Objects.requireNonNull(query);

if (uriQueryEncode == null || uriQueryEncode.length() < 3) {
return queryParams;
Map<String, List<String>> params = new LinkedHashMap<>();

if (query.length() < 3) {
return params;
}

for (String groupParam : uriQueryEncode.split("&"))
for (String groupParam : query.split("&"))
{
Pattern pattern = Pattern.compile("(?<param>[a-z0-9_\\-.+,|:]+(\\[\\])?)=(?<value>.*)", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(groupParam);
Expand All @@ -53,17 +54,17 @@ private UriQuery() {}
{
paramGroup = paramGroup.replace("[]", "");

if (queryParams.containsKey(paramGroup)) {
queryParamValues = queryParams.get(paramGroup);
if (params.containsKey(paramGroup)) {
queryParamValues = params.get(paramGroup);
}
}

queryParamValues.add(valueGroup);
queryParams.put(paramGroup, queryParamValues);
params.put(paramGroup, queryParamValues);
}
}

return queryParams;
return params;
}

/**
Expand All @@ -77,35 +78,44 @@ public static String compose(@NotNull final Map<@NotNull String, @NotNull List<@
{
Objects.requireNonNull(params);

StringBuilder uriQuery = new StringBuilder();
StringBuilder query = new StringBuilder();

if (params.size() == 0) {
return query.toString();
}

boolean needSeparator = false;

for (Map.Entry<String, List<String>> groupParam : params.entrySet())
{
Objects.requireNonNull(groupParam.getKey());
Objects.requireNonNull(groupParam.getValue());

if (needSeparator) {
uriQuery.append("&");
query.append("&");
}

for (int elm = 0; elm < groupParam.getValue().size(); elm++)
{
Objects.requireNonNull(groupParam.getValue().get(elm));

if (elm > 0) {
uriQuery.append("&");
query.append("&");
}

uriQuery.append(URLEncoder.encode(groupParam.getKey(), StandardCharsets.UTF_8));
query.append(URLEncoder.encode(groupParam.getKey(), StandardCharsets.UTF_8));

if (groupParam.getValue().size() > 1) {
uriQuery.append("[]");
query.append("[]");
}

uriQuery.append("=");
uriQuery.append(URLEncoder.encode(groupParam.getValue().get(elm), StandardCharsets.UTF_8));
query.append("=");
query.append(URLEncoder.encode(groupParam.getValue().get(elm), StandardCharsets.UTF_8));
}

needSeparator = true;
}

return uriQuery.toString();
return query.toString();
}
}

0 comments on commit 3bd0797

Please sign in to comment.