Service

Creamos el paquete com.tutosoftware.divulgadorapi.service
Ahora creamos la clase EvidenciaService
 
      
 package com.tutosoftware.divulgadorapi.service;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.GeneralSecurityException;
import java.util.Collections;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.FileContent;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.tutosoftware.divulgadorapi.domain.Evidencia;
import com.tutosoftware.divulgadorapi.domain.EvidenciaKey;
import com.tutosoftware.divulgadorapi.dto.EvidenciaDto;
import com.tutosoftware.divulgadorapi.repository.EvidenciaRepository;

@Service
public class EvidenciaService {
	
	 @Autowired
	 EvidenciaRepository evidenciaRepository;
	
	
	
	 private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
	 private static final String SERVICE_ACOUNT_KEY_PATH = getPathToGoodleCredentials();

	 private static String getPathToGoodleCredentials() {
	        String currentDirectory = System.getProperty("user.dir");
	        Path filePath = Paths.get(currentDirectory, "cred.json");
	        return filePath.toString();
	        
	    }
	 
	 public Evidencia uploadImageToDrive(File file,EvidenciaDto evidenciaDto) throws GeneralSecurityException, IOException {
	        Evidencia res = new Evidencia();
            EvidenciaKey ek=new EvidenciaKey();
	        try{
	        	
	        	
	        	/*
	        	Para sacar el folder id es de la siguiente manera
	        	
	        	                                      ***Folder id**********************
	        	https://drive.google.com/drive/folders/1ALuA49o1DgRFbYLGg_m7LNT4LfW2MY9o
	        	*/
	            String folderId = "1ALuA49o1DgRFbYLGg_m7LNT4LfW2MY9o";
	            Drive drive = createDriveService();
	            com.google.api.services.drive.model.File fileMetaData = new com.google.api.services.drive.model.File();         	            
	            String contentType = getMIMEType(file);
	            fileMetaData.setName(file.getName());
	            fileMetaData.setParents(Collections.singletonList(folderId));
	            FileContent mediaContent = new FileContent(contentType, file);
	            com.google.api.services.drive.model.File uploadedFile = drive.files().create(fileMetaData, mediaContent)
	                    .setFields("id").execute();
	            String fileUrl = "https://drive.google.com/uc?export=view&id="+uploadedFile.getId();
	            System.out.println("FILE URL: " + fileUrl);
	            file.delete();
	            ek.setTituloNoticia(evidenciaDto.getTituloNoticia());
	            ek.setFechaPublicacion(evidenciaDto.getFechaPublicacion());
	            ek.setIdArchivo(uploadedFile.getId());
	            
	            
	            res=evidenciaRepository.save(new Evidencia(ek,evidenciaDto.getComunicador()));
	            
	        }catch (Exception e){
	            System.out.println(e.getMessage());
	            
	        }
	        
	        
	        
	        
	        
	        
	        
	        return  res;

	    }

	 private Drive createDriveService() throws GeneralSecurityException, IOException {

	        GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream(SERVICE_ACOUNT_KEY_PATH))
	                .createScoped(Collections.singleton(DriveScopes.DRIVE));

	        return new Drive.Builder(
	                GoogleNetHttpTransport.newTrustedTransport(),
	                JSON_FACTORY,
	                credential)
	                .build();

	    }
	 
	 public static String getMIMEType(File file){
		   if(file.isDirectory()){return "directorio";}
		 
		   if(!file.exists()){return "fichero innexistente";}
		 
		   try{
		      URL url = file.toURL();
		      URLConnection connection = url.openConnection();
		      return connection.getContentType();
		   }catch(MalformedURLException mue){
		      return mue.getMessage();
		   }catch(IOException ioe){
		      return ioe.getMessage();
		      }
		}
	
}