// Path: src/main/java/com/mageddo/bookmarks/service/SiteMapService.java
// @Rsl
// @Singleton
// public class SiteMapService {
// 
//   private final BookmarkDAO bookmarkDAO;
// 
//   public SiteMapService(BookmarkDAO bookmarkDAO) {
//     this.bookmarkDAO = bookmarkDAO;
//   }
// 
//   @Transactional
//   public void generateSiteMapXML(OutputStream out, HttpRequest req) throws IOException {
//     /*
//     <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
//      */
//     @RawString
//     final String header = lateInit();
//     out.write(header.getBytes());
// 
//     /*
//     <url>
//       <loc>%s</loc>
//       %s
//       <changefreq>weekly</changefreq>
//       <priority>1</priority>
//     </url>
//      */
//     @RawString
//     final String siteMapItem = lateInit();
// 
//     for (final var bookmarkEntity : this.bookmarkDAO.loadSiteMap()) {
//       out.write(String.format(
//           siteMapItem, this.formatURL(req, bookmarkEntity),
//           this.formatDate(bookmarkEntity.getLastUpdate())
//       ).getBytes());
//     }
//     out.write("</urlset>\n".getBytes());
// 
//   }
// 
//   private String formatDate(LocalDateTime date) {
//     if (date == null) {
//       return "";
//     }
//     return String.format("<lastmod>%s</lastmod>", date.format(DateTimeFormatter.ISO_DATE));
//   }
// 
//   private String formatURL(HttpRequest url, BookmarkEntity bookmarkEntity) {
//     return String.format(
//         "%s%s",
//         UrlUtils.getFullHost(url),
//         formatUrl(bookmarkEntity.getId(), bookmarkEntity.getName())
//     );
//   }
// 
//   public static String formatUrl(long bookmarkId, String bookmarkName){
//     return String.format("/bookmark/%d/%s", bookmarkId, UrlUtils.encodeSeoUrl(bookmarkName));
//   }
// }


import java.io.ByteArrayOutputStream;
import com.mageddo.bookmarks.service.SiteMapService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpResponse;
import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import io.micronaut.http.annotation.Produces;
import static io.micronaut.http.HttpResponse.badRequest;
import static io.micronaut.http.HttpResponse.ok;
package com.mageddo.bookmarks.apiserver;






@Controller
public class SiteMapController {

  private final Logger logger = LoggerFactory.getLogger(getClass());
// Path: src/main/java/com/mageddo/bookmarks/service/SiteMapService.java
// @Rsl
// @Singleton
// public class SiteMapService {
// 
//   private final BookmarkDAO bookmarkDAO;
// 
//   public SiteMapService(BookmarkDAO bookmarkDAO) {
//     this.bookmarkDAO = bookmarkDAO;
//   }
// 
//   @Transactional
//   public void generateSiteMapXML(OutputStream out, HttpRequest req) throws IOException {
//     /*
//     <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
//      */
//     @RawString
//     final String header = lateInit();
//     out.write(header.getBytes());
// 
//     /*
//     <url>
//       <loc>%s</loc>
//       %s
//       <changefreq>weekly</changefreq>
//       <priority>1</priority>
//     </url>
//      */
//     @RawString
//     final String siteMapItem = lateInit();
// 
//     for (final var bookmarkEntity : this.bookmarkDAO.loadSiteMap()) {
//       out.write(String.format(
//           siteMapItem, this.formatURL(req, bookmarkEntity),
//           this.formatDate(bookmarkEntity.getLastUpdate())
//       ).getBytes());
//     }
//     out.write("</urlset>\n".getBytes());
// 
//   }
// 
//   private String formatDate(LocalDateTime date) {
//     if (date == null) {
//       return "";
//     }
//     return String.format("<lastmod>%s</lastmod>", date.format(DateTimeFormatter.ISO_DATE));
//   }
// 
//   private String formatURL(HttpRequest url, BookmarkEntity bookmarkEntity) {
//     return String.format(
//         "%s%s",
//         UrlUtils.getFullHost(url),
//         formatUrl(bookmarkEntity.getId(), bookmarkEntity.getName())
//     );
//   }
// 
//   public static String formatUrl(long bookmarkId, String bookmarkName){
//     return String.format("/bookmark/%d/%s", bookmarkId, UrlUtils.encodeSeoUrl(bookmarkName));
//   }
// }


// Path: src/main/java/com/mageddo/bookmarks/apiserver/SiteMapController.java
import java.io.ByteArrayOutputStream;
import com.mageddo.bookmarks.service.SiteMapService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpResponse;
import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import io.micronaut.http.annotation.Produces;
import static io.micronaut.http.HttpResponse.badRequest;
import static io.micronaut.http.HttpResponse.ok;

package com.mageddo.bookmarks.apiserver;






@Controller
public class SiteMapController {

  private final Logger logger = LoggerFactory.getLogger(getClass());
  private final SiteMapService siteMapService;