All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.infusers.core.version.APIService Maven / Gradle / Ivy

There is a newer version: 2025.01.0002
Show newest version
package com.infusers.core.version;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;

//import com.infusers.core.audit.AuditService;
import com.infusers.core.version.deployment.CloudProviderService;
import com.infusers.core.version.java.InfusersJavaVersionDetails;
import com.infusers.core.version.springboot.InfusersSpringBootVersionDetails;
import com.infusers.core.version.springboot.dto.DependencyDto;

@Service
public class APIService {
		
	private static final String CLASS_NAME = "APIService";

	//@Autowired(required = true)
	//private AuditService auditService;
	
	@Autowired(required = true)
	private CloudProviderService cloudProviderService;	
	
	final Logger log = LogManager.getLogger(APIService.class);
	
	@Value("${infusers.app.name}")
	private  String appName;

	@Value("${api.version.info}")
	private  String versionInfo;
	
	public ResponseEntity getVersion() {
		//auditService.logAudit("", "API Service", "", "getVersion", "Non protected API");				
		log.debug("APIService.getVersion() Fetching version details :: ", versionInfo);
				
	    // Create success response
	    Map response = new HashMap<>();
	    response.put("status", "success");
	    response.put("data", getVersionInformation());
	    
	    // Return response with 200 status code	    
	    return new ResponseEntity<>(response, HttpStatus.OK);	    
	}
	
	private static final String LINE_SEPARATOR = System.lineSeparator();
	private static final String PREFIX = " -- ";

	private String getVersionInformation() {
	    StringBuilder versionInfoSummary = new StringBuilder();

	    versionInfoSummary.append(String.format("%s:  %s", appName, versionInfo));
	    versionInfoSummary.append(String.format("%sInfuser's Lib: %s", LINE_SEPARATOR, getInfusersLibraryUpgradeOption()));
	    versionInfoSummary.append(String.format("%sJava: %s", LINE_SEPARATOR, InfusersJavaVersionDetails.getInstance().getJavaVersion()));
	    versionInfoSummary.append(String.format("%sSpring Boot: %s", LINE_SEPARATOR, InfusersSpringBootVersionDetails.getInstance().getSpringBootVersion()));
	    versionInfoSummary.append(String.format("%sHosted on:", LINE_SEPARATOR));
	    versionInfoSummary.append(String.format("%s%s%s", LINE_SEPARATOR, PREFIX, cloudProviderService.getCloudProviderName()));
	    versionInfoSummary.append(String.format("%s%s%s", LINE_SEPARATOR, PREFIX, getOSDetails()));

	    return versionInfoSummary.toString();
	}

	
	private String getOSDetails() {
        String os = System.getProperty("os.name");
        String osVersion = System.getProperty("os.version");
        String osArch = System.getProperty("os.arch");
        
		StringBuffer osInfoSummary = new StringBuffer();
		osInfoSummary.append("OS details: ");
		osInfoSummary.append(os);
		osInfoSummary.append(", "+osVersion);
		osInfoSummary.append(", "+osArch);
		
        return osInfoSummary.toString();
	}
	
	private String getInfusersLibraryUpgradeOption() {
		
    	DependencyDto dependencyDto = new DependencyDto("in.infusers.library", "infusers-library", "", "", false, "");
    	
    	String presentVersion = InfusersSpringBootVersionDetails.getInstance().getDependencyVersion(dependencyDto.getGroupId(), dependencyDto.getArtifactId());
    	presentVersion = presentVersion!=null ? presentVersion.trim() : presentVersion;
    	
    	InfusersSpringBootVersionDetails.getInstance().fillLatestVersionV2(dependencyDto);
		String latestVer = dependencyDto.getLatestVersion();
		latestVer = latestVer!=null ? latestVer.trim() : latestVer;
				
		StringBuffer response = new StringBuffer();
		if(presentVersion!=null && presentVersion.equalsIgnoreCase(latestVer)) {
			response.append(presentVersion);
		}
		else {
			response.append(presentVersion+", Upgrade option: "+latestVer);			
		}
		
		return response.toString();
	}
	
	public List auditSpringBootDependencies() {
		return InfusersSpringBootVersionDetails.getInstance().auditSpringBootDependencies();
	}
	
//    public static void main(String[] args) throws IOException {
//    	getVersion();
//    }
 
}