diff options
Diffstat (limited to 'src/main/java/com/juick/www/ad/SapeService.java')
-rw-r--r-- | src/main/java/com/juick/www/ad/SapeService.java | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/main/java/com/juick/www/ad/SapeService.java b/src/main/java/com/juick/www/ad/SapeService.java new file mode 100644 index 00000000..9d58f8b4 --- /dev/null +++ b/src/main/java/com/juick/www/ad/SapeService.java @@ -0,0 +1,67 @@ +/* + * 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.service.security.annotation.Visitor; +import com.juick.www.controllers.MessagesWWW; +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 = MessagesWWW.class) +@ConditionalOnProperty("sape_user") +public class SapeService { + + private final Sape sape; + + @Inject + public SapeService(Sape sape) { + this.sape = sape; + } + + @ModelAttribute + public void addSapeLinks( + @Visitor 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) { + String links = sape.getPageLinks(requestURI, sapeCookie).render(); + model.addAttribute("links", links); + } + } +} |