Skip to content

Commit 4e27803

Browse files
committed
Try a fix for broken collection joining in query parameters
1 parent 91cc2bd commit 4e27803

3 files changed

Lines changed: 15 additions & 11 deletions

File tree

library/src/main/java/me/proxer/library/api/list/InternalApi.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
import javax.annotation.ParametersAreNullableByDefault;
1010
import java.util.List;
11-
import java.util.Set;
1211

1312
/**
1413
* @author Desnoo
@@ -30,9 +29,9 @@ ProxerCall<List<MediaListEntry>> mediaList(@Query("kat") Category category,
3029
ProxerCall<List<MediaListEntry>> mediaSearch(@Query("name") String name,
3130
@Query("language") Language language,
3231
@Query("type") MediaType type,
33-
@Query("genre") Set<Genre> genres,
34-
@Query("nogenre") Set<Genre> excludedGenres,
35-
@Query("fsk") Set<FskConstraint> fskConstraints,
32+
@Query("genre") String genres,
33+
@Query("nogenre") String excludedGenres,
34+
@Query("fsk") String fskConstraints,
3635
@Query("sort") MediaSearchSortCriteria sort,
3736
@Query("length") Integer length,
3837
@Query("length-limit") LengthBound lengthLimit,

library/src/main/java/me/proxer/library/api/list/MediaSearchEndpoint.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
@Accessors(fluent = true)
2121
public final class MediaSearchEndpoint implements PagingLimitEndpoint<List<MediaListEntry>> {
2222

23-
private static final String DELIMITER = " ";
23+
private static final String DELIMITER = "+";
2424

2525
private final InternalApi internalApi;
2626

@@ -156,7 +156,11 @@ public MediaSearchEndpoint excludedTags(@Nullable final Set<String> excludedIds)
156156

157157
@Override
158158
public ProxerCall<List<MediaListEntry>> build() {
159-
return internalApi.mediaSearch(name, language, type, genres, excludedGenres, fskConstraints,
159+
String joinedGenres = genres == null ? null : ProxerUtils.join(DELIMITER, genres);
160+
String joinedExcludedGenres = excludedGenres == null ? null : ProxerUtils.join(DELIMITER, excludedGenres);
161+
String joinedFskConstraints = fskConstraints == null ? null : ProxerUtils.join(DELIMITER, fskConstraints);
162+
163+
return internalApi.mediaSearch(name, language, type, joinedGenres, joinedExcludedGenres, joinedFskConstraints,
160164
sort, length, lengthBound, tags, excludedTags, tagRateFilter, tagSpoilerFilter, page, limit);
161165
}
162166
}

library/src/test/java/me/proxer/library/api/list/MediaSearchEndpointTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ public void testPath() throws ProxerException, IOException, InterruptedException
4040
.name("test")
4141
.limit(10)
4242
.page(3)
43-
.genres(EnumSet.of(Genre.ADULT))
44-
.excludedGenres(EnumSet.of(Genre.ACTION))
43+
.genres(EnumSet.of(Genre.ADULT, Genre.ACTION))
44+
.excludedGenres(EnumSet.of(Genre.DRAMA, Genre.FANTASY))
4545
.tags(new HashSet<>(Arrays.asList("3", "7")))
4646
.excludedTags(new HashSet<>(Arrays.asList("5", "20")))
4747
.fskConstraints(EnumSet.of(FskConstraint.FEAR))
@@ -55,9 +55,10 @@ public void testPath() throws ProxerException, IOException, InterruptedException
5555
.build()
5656
.execute();
5757

58-
assertThat(server.takeRequest().getPath()).isEqualTo("/api/v1/list/entrysearch?name=test&language=en"
59-
+ "&type=all-manga&genre=Adult&nogenre=Action&fsk=fear&sort=clicks&length=300&length-limit=down"
60-
+ "&tags=3%207&notags=5%2020&tagratefilter=rate_1&tagspoilerfilter=spoiler_1&p=3&limit=10");
58+
assertThat(server.takeRequest().getPath()).isEqualTo("/api/v1/list/entrysearch?name=test&language=en&"
59+
+ "type=all-manga&genre=ACTION%2BADULT&nogenre=DRAMA%2BFANTASY&fsk=FEAR&sort=clicks&length=300&"
60+
+ "length-limit=down&tags=3%2B7&notags=5%2B20&tagratefilter=rate_1&"
61+
+ "tagspoilerfilter=spoiler_1&p=3&limit=10");
6162
}
6263

6364
@Test

0 commit comments

Comments
 (0)