2023-07-12 00:17:44 +01:00
package stirling.software.SPDF ;
import java.nio.file.Files ;
import java.nio.file.Paths ;
2023-08-26 12:27:52 +01:00
import java.util.Collections ;
2023-07-12 00:17:44 +01:00
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.boot.SpringApplication ;
import org.springframework.boot.autoconfigure.SpringBootApplication ;
import org.springframework.core.env.Environment ;
2023-12-25 20:51:32 +00:00
import org.springframework.scheduling.annotation.EnableScheduling ;
2023-08-27 11:59:08 +01:00
2023-07-12 00:17:44 +01:00
import jakarta.annotation.PostConstruct ;
2023-08-26 17:30:49 +01:00
import stirling.software.SPDF.config.ConfigInitializer ;
2023-08-27 00:39:22 +01:00
import stirling.software.SPDF.utils.GeneralUtils ;
2023-07-12 00:17:44 +01:00
@SpringBootApplication
2023-08-27 11:59:08 +01:00
2023-12-25 20:51:32 +00:00
@EnableScheduling
2023-07-12 00:17:44 +01:00
public class SPdfApplication {
2023-12-29 13:05:01 -05:00
2023-07-12 00:17:44 +01:00
@Autowired
private Environment env ;
@PostConstruct
public void init ( ) {
// Check if the BROWSER_OPEN environment variable is set to true
String browserOpenEnv = env . getProperty ( " BROWSER_OPEN " ) ;
boolean browserOpen = browserOpenEnv ! = null & & browserOpenEnv . equalsIgnoreCase ( " true " ) ;
if ( browserOpen ) {
try {
2023-12-29 13:05:01 -05:00
String url = " http://localhost: " + getPort ( ) ;
2023-07-12 00:17:44 +01:00
String os = System . getProperty ( " os.name " ) . toLowerCase ( ) ;
Runtime rt = Runtime . getRuntime ( ) ;
if ( os . contains ( " win " ) ) {
// For Windows
rt . exec ( " rundll32 url.dll,FileProtocolHandler " + url ) ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
}
}
2023-12-29 13:05:01 -05:00
2023-07-12 00:17:44 +01:00
public static void main ( String [ ] args ) {
2023-08-26 12:27:52 +01:00
SpringApplication app = new SpringApplication ( SPdfApplication . class ) ;
2023-08-26 17:30:49 +01:00
app . addInitializers ( new ConfigInitializer ( ) ) ;
2023-08-26 22:33:23 +01:00
if ( Files . exists ( Paths . get ( " configs/settings.yml " ) ) ) {
2023-08-31 13:52:54 +01:00
app . setDefaultProperties ( Collections . singletonMap ( " spring.config.additional-location " , " file:configs/settings.yml " ) ) ;
2023-08-26 12:27:52 +01:00
} else {
2023-08-26 22:33:23 +01:00
System . out . println ( " External configuration file 'configs/settings.yml' does not exist. Using default configuration and environment configuration instead. " ) ;
2023-08-26 12:27:52 +01:00
}
app . run ( args ) ;
2023-12-29 13:05:01 -05:00
2023-07-12 00:17:44 +01:00
try {
Thread . sleep ( 1000 ) ;
} catch ( InterruptedException e ) {
// TODO Auto-generated catch block
e . printStackTrace ( ) ;
}
2023-12-29 13:05:01 -05:00
2023-07-12 00:17:44 +01:00
GeneralUtils . createDir ( " customFiles/static/ " ) ;
GeneralUtils . createDir ( " customFiles/templates/ " ) ;
2023-12-29 13:05:01 -05:00
2023-07-12 00:17:44 +01:00
System . out . println ( " Stirling-PDF Started. " ) ;
2023-12-29 13:05:01 -05:00
String url = " http://localhost: " + getPort ( ) ;
System . out . println ( " Navigate to " + url ) ;
}
public static String getPort ( ) {
2023-07-12 00:17:44 +01:00
String port = System . getProperty ( " local.server.port " ) ;
2023-12-29 13:05:01 -05:00
if ( port = = null | | port . isEmpty ( ) ) {
port = " 8080 " ;
2023-07-12 00:17:44 +01:00
}
2023-12-29 13:05:01 -05:00
return port ;
2023-07-12 00:17:44 +01:00
}
2023-12-29 13:05:01 -05:00
}