/*
* Copyright (C) 2008-2020, Juick
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.juick.www.ad;
import com.juick.model.User;
import com.juick.www.controllers.Site;
import io.swagger.v3.oas.annotations.Parameter;
import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
import org.springframework.web.util.UriComponents;
import ru.sape.Sape;
import javax.inject.Inject;
import java.net.URI;
@ControllerAdvice(assignableTypes = Site.class)
@ConditionalOnProperty("sape_user")
public class SapeService {
private final Sape sape;
@Inject
public SapeService(Sape sape) {
this.sape = sape;
}
@ModelAttribute
public void addSapeLinks(
@Parameter(hidden = true) User visitor,
@CookieValue(name = "sape_cookie", required = false, defaultValue = StringUtils.EMPTY) String sapeCookie,
@RequestParam(required = false, defaultValue = "0") int before,
@RequestParam(name = "show", required = false) String paramShow,
@RequestParam(name = "search", required = false) String paramSearch,
@RequestParam(name = "to", required = false, defaultValue = "0") Long paramTo,
ModelMap model) {
UriComponents builder = ServletUriComponentsBuilder.fromCurrentRequest().build();
URI requestURI = builder.toUri();
var showAdv = paramShow == null && before == 0 && paramSearch == null
&& visitor.isAnonymous();
model.addAttribute("showAdv", showAdv);
if (showAdv) {
sape.getPageLinks(requestURI, sapeCookie)
.ifPresent(sapePageLinks -> model.addAttribute("links", sapePageLinks.render()));
}
}
}