diff --git a/src/main/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplication.java b/src/main/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplication.java index db773a6..c9e5dee 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplication.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplication.java @@ -2,6 +2,7 @@ package eu.dnetlib.uoaadmintools; import com.fasterxml.jackson.databind.ObjectMapper; import eu.dnetlib.uoaadmintools.configuration.GlobalVars; +import eu.dnetlib.uoaadmintools.configuration.properties.BrowserCacheConfig; import eu.dnetlib.uoaadmintools.configuration.properties.ManagersApiConfig; import eu.dnetlib.uoaadmintools.configuration.properties.MongoConfig; import eu.dnetlib.uoaadmintoolslibrary.UoaAdminToolsLibraryConfiguration; @@ -23,7 +24,7 @@ import org.springframework.web.client.RestTemplate; @PropertySource("classpath:admintools.properties"), @PropertySource(value = "classpath:dnet-override.properties", ignoreResourceNotFound = true) }) -@EnableConfigurationProperties({MongoConfig.class, ManagersApiConfig.class, GlobalVars.class}) +@EnableConfigurationProperties({MongoConfig.class, ManagersApiConfig.class, BrowserCacheConfig.class, GlobalVars.class}) @Import({AuthorizationConfiguration.class, UoaAdminToolsLibraryConfiguration.class}) public class UoaAdminToolsApplication { diff --git a/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/BrowserCacheConfig.java b/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/BrowserCacheConfig.java new file mode 100644 index 0000000..c85c10a --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/BrowserCacheConfig.java @@ -0,0 +1,16 @@ +package eu.dnetlib.uoaadmintools.configuration.properties; +import org.springframework.boot.context.properties.ConfigurationProperties; + +@ConfigurationProperties("admintool.cache") +public class BrowserCacheConfig { + + private String url; + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } +} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/BrowserCacheController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/BrowserCacheController.java new file mode 100644 index 0000000..dc620ed --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintools/controllers/BrowserCacheController.java @@ -0,0 +1,41 @@ +package eu.dnetlib.uoaadmintools.controllers; + +import eu.dnetlib.uoaadmintools.configuration.properties.BrowserCacheConfig; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.ResourceAccessException; +import org.springframework.web.client.RestTemplate; + +@RestController +@RequestMapping("/cache") +@CrossOrigin(origins = "*") +public class BrowserCacheController { + private final Logger log = Logger.getLogger(this.getClass()); + + @Autowired + private RestTemplate restTemplate; + + @Autowired + private BrowserCacheConfig config; + + @PreAuthorize("hasAnyAuthority(" + + "@AuthorizationService.PORTAL_ADMIN, " + + "@AuthorizationService.curator('community'), @AuthorizationService.manager('community', #pid))") + @RequestMapping(value = "/{pid}", method = RequestMethod.GET) + public boolean purge(@PathVariable(value = "pid") String pid) { + try { + ResponseEntity responseEntity = restTemplate.getForEntity(config.getUrl().replace("{community}", pid), Object.class); + } catch(HttpClientErrorException httpClientErrorException) { + log.debug("Purge browser cache: HttpClientErrorException for "+pid + " - code: " + httpClientErrorException.getStatusCode()); + } catch(ResourceAccessException resourceAccessException) { + log.debug("Purge browser cache: ResourceAccessException for "+pid); + } catch(Exception exception) { + log.debug("Purge browser cache: " + exception.getClass() + " for "+pid); + } + return true; + } +} diff --git a/src/main/resources/admintools.properties b/src/main/resources/admintools.properties index bec2f29..01e6a0b 100644 --- a/src/main/resources/admintools.properties +++ b/src/main/resources/admintools.properties @@ -16,6 +16,7 @@ admintool.managers.api.id = http://dl170.madgik.di.uoa.gr:8180/dnet-openaire-use admintool.managers.api.email = http://dl170.madgik.di.uoa.gr:8180/dnet-openaire-users-1.0.0-SNAPSHOT/api/registry/community/{community}/managers/email admintool.globalVars.buildDate=@timestamp@ admintool.globalVars.version=@project.version@ +admintool.cache.url = https://beta.{community}.openaire.eu/purge/ #beta #admintool.security.userInfoUrl = https://beta.services.openaire.eu/uoa-user-management/api/users/getUserInfo?accessToken=