diff --git a/pom.xml b/pom.xml index 9de2c05..256a632 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ io.quarkus - quarkus-rest-client + quarkus-resteasy-client @@ -75,7 +75,7 @@ io.quarkus - quarkus-rest-client-jackson + quarkus-resteasy-client-jackson diff --git a/src/main/java/com/discdrop/client/UserAgentFilter.java b/src/main/java/com/discdrop/client/UserAgentFilter.java new file mode 100644 index 0000000..d0fe187 --- /dev/null +++ b/src/main/java/com/discdrop/client/UserAgentFilter.java @@ -0,0 +1,16 @@ +package com.discdrop.client; + +import jakarta.ws.rs.client.ClientRequestContext; +import jakarta.ws.rs.client.ClientRequestFilter; +import jakarta.ws.rs.ext.Provider; +import java.io.IOException; + +@Provider +public class UserAgentFilter implements ClientRequestFilter { + + @Override + public void filter(ClientRequestContext requestContext) throws IOException { + requestContext.getHeaders().putSingle("User-Agent", + "DiscDrop/1.0 (david.alvarez.81@gmail.com)"); + } +} diff --git a/src/main/java/com/discdrop/service/ArtistService.java b/src/main/java/com/discdrop/service/ArtistService.java index 2498e96..fde16b6 100644 --- a/src/main/java/com/discdrop/service/ArtistService.java +++ b/src/main/java/com/discdrop/service/ArtistService.java @@ -8,6 +8,7 @@ import com.discdrop.db.Record.MonitoringFlags; import com.discdrop.db.Record.TrackedArtist; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; +import org.eclipse.microprofile.rest.client.inject.RestClient; import java.time.Instant; import java.util.ArrayList; import java.util.List; @@ -17,6 +18,7 @@ import java.util.Optional; public class ArtistService { @Inject + @RestClient MusicBrainzClient mbClient; @Inject diff --git a/src/main/java/com/discdrop/service/ReleaseGroupService.java b/src/main/java/com/discdrop/service/ReleaseGroupService.java index 5a38f88..f094d02 100644 --- a/src/main/java/com/discdrop/service/ReleaseGroupService.java +++ b/src/main/java/com/discdrop/service/ReleaseGroupService.java @@ -7,6 +7,7 @@ import com.discdrop.db.Record.ReleaseGroup; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; +import org.eclipse.microprofile.rest.client.inject.RestClient; import java.time.Instant; import java.util.ArrayList; import java.util.List; @@ -18,6 +19,7 @@ public class ReleaseGroupService { private static final int PAGE_SIZE = 100; @Inject + @RestClient MusicBrainzClient mbClient; @Inject diff --git a/src/main/java/com/discdrop/util/RSSFeedBuilder.java b/src/main/java/com/discdrop/util/RSSFeedBuilder.java index 493cdfc..44ba168 100644 --- a/src/main/java/com/discdrop/util/RSSFeedBuilder.java +++ b/src/main/java/com/discdrop/util/RSSFeedBuilder.java @@ -36,7 +36,6 @@ public class RSSFeedBuilder { item.setTitle(rg.artistName() + " — " + rg.title()); item.setLink("https://musicbrainz.org/release-group/" + rg.mbid()); - var guid = new SyndLinkImpl(); item.setUri("mbz-rg-" + rg.mbid()); var desc = new SyndContentImpl(); diff --git a/src/main/java/com/discdrop/web/ArtistController.java b/src/main/java/com/discdrop/web/ArtistController.java index 3c5d290..6f5a995 100644 --- a/src/main/java/com/discdrop/web/ArtistController.java +++ b/src/main/java/com/discdrop/web/ArtistController.java @@ -1,20 +1,17 @@ package com.discdrop.web; import com.discdrop.db.Record.MonitoringFlags; -import com.discdrop.db.Record.ReleaseGroup; import com.discdrop.db.Record.TrackedArtist; import com.discdrop.service.ArtistService; import com.discdrop.service.ArtistService.SearchResult; -import com.discdrop.service.CacheService; import com.discdrop.service.FeedService; import com.discdrop.service.ReleaseGroupService; +import io.quarkus.qute.Location; import io.quarkus.qute.Template; import io.quarkus.qute.TemplateInstance; import jakarta.inject.Inject; import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; -import org.jboss.resteasy.reactive.RestForm; -import jakarta.ws.rs.NotFoundException; import java.util.ArrayList; import java.util.List; @@ -27,20 +24,20 @@ public class ArtistController { @Inject ReleaseGroupService releaseGroupService; - @Inject - CacheService cacheService; - @Inject FeedService feedService; @Inject - Template fragments$search_results; + @Location("fragments/search-results") + Template searchResultsTemplate; @Inject - Template fragments$artist_list; + @Location("fragments/artist-list") + Template artistListTemplate; @Inject - Template fragments$feed_entries; + @Location("fragments/feed-entries") + Template feedEntriesTemplate; @GET @Path("/search") @@ -52,7 +49,7 @@ public class ArtistController { } else { results = artistService.search(q); } - return fragments$search_results.data("artists", results); + return searchResultsTemplate.data("artists", results); } @POST @@ -60,12 +57,10 @@ public class ArtistController { @Produces(MediaType.TEXT_HTML) public TemplateInstance trackArtist(@PathParam("mbid") String mbid) { var artist = artistService.addArtist(mbid); - var types = getMonitoredTypes(artist); releaseGroupService.fetchAndCache(artist.mbid(), artist.name(), types); - var allArtists = artistService.findAll(); - return fragments$artist_list.data("artists", allArtists); + return artistListTemplate.data("artists", allArtists); } @DELETE @@ -74,7 +69,7 @@ public class ArtistController { public TemplateInstance removeArtist(@PathParam("mbid") String mbid) { artistService.removeArtist(mbid); var allArtists = artistService.findAll(); - return fragments$artist_list.data("artists", allArtists); + return artistListTemplate.data("artists", allArtists); } @PATCH @@ -94,7 +89,7 @@ public class ArtistController { ); artistService.updateMonitoring(mbid, flags); var allArtists = artistService.findAll(); - return fragments$artist_list.data("artists", allArtists); + return artistListTemplate.data("artists", allArtists); } @GET @@ -102,7 +97,7 @@ public class ArtistController { @Produces(MediaType.TEXT_HTML) public TemplateInstance artistList() { var artists = artistService.findAll(); - return fragments$artist_list.data("artists", artists); + return artistListTemplate.data("artists", artists); } @GET @@ -110,7 +105,7 @@ public class ArtistController { @Produces(MediaType.TEXT_HTML) public TemplateInstance feedTable() { var entries = feedService.getFeedEntries(); - return fragments$feed_entries.data("entries", entries); + return feedEntriesTemplate.data("entries", entries); } private List getMonitoredTypes(TrackedArtist a) { diff --git a/src/main/java/com/discdrop/web/SettingsController.java b/src/main/java/com/discdrop/web/SettingsController.java index 2cb1aad..093e69d 100644 --- a/src/main/java/com/discdrop/web/SettingsController.java +++ b/src/main/java/com/discdrop/web/SettingsController.java @@ -1,6 +1,7 @@ package com.discdrop.web; import com.discdrop.db.DatabaseService; +import io.quarkus.qute.Location; import io.quarkus.qute.Template; import io.quarkus.qute.TemplateInstance; import jakarta.inject.Inject; @@ -15,7 +16,8 @@ public class SettingsController { DatabaseService db; @Inject - Template fragments$settings_form; + @Location("fragments/settings-form") + Template settingsFormTemplate; @GET @Path("/form") @@ -23,7 +25,7 @@ public class SettingsController { public TemplateInstance settingsForm() { var cacheTtl = db.getSetting("cache_ttl_hours", "8"); var defaultTypes = db.getSetting("default_types", "Album"); - return fragments$settings_form.data("cacheTtl", cacheTtl) + return settingsFormTemplate.data("cacheTtl", cacheTtl) .data("defaultTypes", defaultTypes); } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index fda0816..0a2617a 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,7 +3,6 @@ quarkus.http.port=8080 # MusicBrainz API quarkus.rest-client."com.discdrop.client.MusicBrainzClient".url=https://musicbrainz.org/ws/2 -quarkus.rest-client."com.discdrop.client.MusicBrainzClient".default-headers=User-Agent: DiscDrop/1.0 (david.alvarez.81@gmail.com) # Qute templating quarkus.qute.suffixes=html diff --git a/src/main/resources/templates/fragments/artist-list.html b/src/main/resources/templates/fragments/artist-list.html index 9cc40bd..652f2db 100644 --- a/src/main/resources/templates/fragments/artist-list.html +++ b/src/main/resources/templates/fragments/artist-list.html @@ -3,7 +3,7 @@ No artists tracked yet Search for artists using the search bar above and click "+ Add" -{:else} +{#else} diff --git a/src/main/resources/templates/fragments/feed-entries.html b/src/main/resources/templates/fragments/feed-entries.html index 74b243b..daf3bcb 100644 --- a/src/main/resources/templates/fragments/feed-entries.html +++ b/src/main/resources/templates/fragments/feed-entries.html @@ -3,7 +3,7 @@ No releases found Add artists to your collection to see their releases here -{:else} +{#else} diff --git a/src/main/resources/templates/fragments/search-results.html b/src/main/resources/templates/fragments/search-results.html index 422bcfc..5f9c43c 100644 --- a/src/main/resources/templates/fragments/search-results.html +++ b/src/main/resources/templates/fragments/search-results.html @@ -1,7 +1,7 @@ {#if artists.isEmpty()} No artists found - {:else} + {#else} {#for artist in artists} @@ -15,7 +15,7 @@ {#if artist.alreadyTracked} ✓ Added - {:else} + {#else} - {#insert page-content}{/page-content} + {#insert page-content}{/insert}
No artists tracked yet
Search for artists using the search bar above and click "+ Add"
No releases found
Add artists to your collection to see their releases here