package sitemap.providers;
import java.net.MalformedURLException;
import java.util.List;
import com.edulify.modules.sitemap.SitemapConfig;
import models.Article;
import controllers.routes;
import com.edulify.modules.sitemap.UrlProvider;
import com.redfin.sitemapgenerator.ChangeFreq;
import com.redfin.sitemapgenerator.WebSitemapUrl;
import com.redfin.sitemapgenerator.WebSitemapGenerator;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class ArticlesUrlProvider implements UrlProvider {
private SitemapConfig sitemapConfig;
@Inject
public ArticlesUrlProvider(SitemapConfig sitemapConfig) {
this.sitemapConfig = sitemapConfig;
}
@Override
public void addUrlsTo(WebSitemapGenerator generator) {
String baseUrl = sitemapConfig.getBaseUrl();
List<Article> articles = Article.find.all();
for(Article article : articles) {
String articleUrl = routes.Application.showArticle(article.id).url();
try {
WebSitemapUrl url = new WebSitemapUrl.Options(String.format("%s%s", baseUrl, articleUrl))
.changeFreq(ChangeFreq.DAILY)
.lastMod(article.createdAt)
.priority(0.5)
.build();
generator.addUrl(url);
} catch(MalformedURLException ex) {
play.Logger.error("The generated url is not supported: " + articleUrl, ex);
}
}
}
}