package de.asideas.crowdsource;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
import org.subethamail.wiser.Wiser;
@SpringBootApplication
@Import(CrowdSource.class)
public class CrowdSourceExample {
@Value("${de.asideas.crowdsource.mail.port:1025}")
private Integer mailServerPort;
public static void main(String[] args) {
extractHerokuMongoLabsArgs();
SpringApplication.run(CrowdSourceExample.class, args);
}
private static void extractHerokuMongoLabsArgs() {
String mongolabUriProperty = System.getenv("MONGOLAB_URI");
if (StringUtils.isNotBlank(mongolabUriProperty)) {
final String mongolab_uri = mongolabUriProperty.replace("mongodb://", "");
System.setProperty("de.asideas.crowdsource.db.username", extractMongoUser(mongolab_uri));
System.setProperty("de.asideas.crowdsource.db.password", extractMongoPass(mongolab_uri));
System.setProperty("de.asideas.crowdsource.db.hosts", extractMongoHost(mongolab_uri));
System.setProperty("de.asideas.crowdsource.db.port", extractMongoPort(mongolab_uri));
System.setProperty("de.asideas.crowdsource.db.name", extractMongoDbName(mongolab_uri));
}
}
static String extractMongoDbName(String mongolab_uri) {
// heroku_zjfpkkgn:nga79pk8lffffffku2p62mkbo@ds027491.mongolab.com:27491/heroku_zjfpkkgn
return mongolab_uri.substring(mongolab_uri.lastIndexOf("/") + 1);
}
static String extractMongoPort(String mongolab_uri) {
// heroku_zjfpkkgn:nga79pk8lffffffku2p62mkbo@ds027491.mongolab.com:27491/heroku_zjfpkkgn
return mongolab_uri.substring(mongolab_uri.lastIndexOf(":") + 1, mongolab_uri.lastIndexOf("/"));
}
static String extractMongoHost(String mongolab_uri) {
// heroku_zjfpkkgn:nga79pk8lffffffku2p62mkbo@ds027491.mongolab.com:27491/heroku_zjfpkkgn
return mongolab_uri.substring(mongolab_uri.indexOf("@") + 1, mongolab_uri.lastIndexOf(":"));
}
static String extractMongoPass(String mongolab_uri) {
// heroku_zjfpkkgn:nga79pk8lffffffku2p62mkbo@ds027491.mongolab.com:27491/heroku_zjfpkkgn
return mongolab_uri.substring(mongolab_uri.indexOf(":") + 1, mongolab_uri.indexOf("@"));
}
static String extractMongoUser(String mongolab_uri) {
// heroku_zjfpkkgn:nga79pk8lffffffku2p62mkbo@ds027491.mongolab.com:27491/heroku_zjfpkkgn
return mongolab_uri.substring(0, mongolab_uri.indexOf(":"));
}
@Bean
public Wiser mailServer() {
Wiser wiser = new Wiser(mailServerPort);
wiser.start();
return wiser;
}
}