package com.juick.components.configuration; import com.juick.components.CleanUp; import com.juick.components.Notifications; import com.notnoop.apns.APNS; import com.notnoop.apns.ApnsService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; import org.springframework.http.client.ClientHttpRequestInterceptor; import org.springframework.http.client.InterceptingClientHttpRequestFactory; import org.springframework.http.client.support.BasicAuthorizationInterceptor; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.client.RestTemplate; import javax.inject.Inject; import java.util.Collections; import java.util.List; /** * Created by aalexeev on 11/12/16. */ @Configuration @EnableScheduling @PropertySource("classpath:juick.conf") @ComponentScan(basePackages = {"com.juick.components.service"}) public class NotificationsAppConfiguration { @Inject private Environment env; @Bean public RestTemplate rest() { RestTemplate rest = new RestTemplate(); List interceptors = Collections.singletonList( new BasicAuthorizationInterceptor( env.getProperty("api_user", "juick"), env.getProperty("api_password", "secret"))); rest.setRequestFactory(new InterceptingClientHttpRequestFactory(rest.getRequestFactory(), interceptors)); return rest; } @Bean public Notifications push() { return new Notifications(env, rest()); } @Bean public ApnsService apns() { return APNS.newService().withCert(env.getProperty("ios_pkcs12_file"), env.getProperty("ios_pkcs12_password")) .withProductionDestination().build(); } @Bean public CleanUp cleanUp() { return new CleanUp(); } }