Skip to content
Snippets Groups Projects
PluginController.java 1.31 KiB
Newer Older
  • Learn to ignore specific revisions
  • package de.tobias.playwall.controller;
    
    
    import de.tobias.playwall.model.Plugin;
    
    Tobias Ullerich's avatar
    Tobias Ullerich committed
    import de.tobias.playwall.service.ArtifactoryClient;
    
    import de.tobias.playwall.service.PluginService;
    
    import lombok.AllArgsConstructor;
    
    import org.springframework.http.HttpStatus;
    
    import org.springframework.web.bind.annotation.GetMapping;
    
    import org.springframework.web.bind.annotation.PathVariable;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import org.springframework.web.server.ResponseStatusException;
    
    Tobias Ullerich's avatar
    Tobias Ullerich committed
    import reactor.core.publisher.Mono;
    
    
    import java.util.List;
    
    @RestController
    @RequestMapping("/plugins")
    @AllArgsConstructor
    
    public class PluginController
    
    	private final PluginService service;
    
    Tobias Ullerich's avatar
    Tobias Ullerich committed
    	private final ArtifactoryClient artifactoryClient;
    
    	List<Plugin> getAllPlugins()
    
    		return service.getAllPlugins();
    
    
    	@GetMapping("/{id}")
    	Plugin getPlugin(@PathVariable Integer id)
    	{
    		return service.getPlugin(id).orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
    	}
    
    Tobias Ullerich's avatar
    Tobias Ullerich committed
    
    	@GetMapping("/raw/{id}")
    	Mono<byte[]> getPluginExecutable(@PathVariable Integer id)
    	{
    		final Plugin plugin = service.getPlugin(id).orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
    		return artifactoryClient.downloadArtifact(plugin);
    	}