// Path: src/main/java/com/github/segator/proxylive/config/ProxyLiveConfiguration.java
// @Configuration
// @ConfigurationProperties
// public class ProxyLiveConfiguration {
//     private final Logger logger = LoggerFactory.getLogger(DirectTranscodeTask.class);
//     private final JwtHelper jwtHelper;
//     private BufferingConfiguration buffers;
//     private FFMpegConfiguration ffmpeg;
//     private HttpLiveSource source;
//     private GEOIPDatasource geoIP;
//     private AuthenticationConfiguration authentication;
//     private String userAgent;
//     private int streamTimeout;
// 
//     public ProxyLiveConfiguration(JwtHelper jwtHelper) {
//         this.jwtHelper = jwtHelper;
//     }
// 
//     @PostConstruct
//     public void initializeBean() {
// 
//         //If tvheadend input is set complete configuration
//         if(source.getTvheadendURL()!=null){
//             if( source.getEpg().getUrl()==null) {
//                 source.getEpg().setUrl(source.getTvheadendURL() + "/xmltv/channels");
//             }
//             if(source.getChannels().getUrl()==null) {
//                 source.getChannels().setUrl(source.getTvheadendURL());
//             }
//         }
// 
// 
//     }
// 
//     public FFMpegConfiguration getFfmpeg() {
//         return ffmpeg;
//     }
// 
//     public void setFfmpeg(FFMpegConfiguration ffmpeg) {
//         this.ffmpeg = ffmpeg;
//     }
// 
//     public HttpLiveSource getSource() {
//         return source;
//     }
// 
//     public GEOIPDatasource getGeoIP() {
//         return geoIP;
//     }
// 
//     public void setGeoIP(GEOIPDatasource geoIP) {
//         this.geoIP = geoIP;
//     }
// 
//     public void setSource(HttpLiveSource source) {
//         this.source = source;
//     }
// 
//     public BufferingConfiguration getBuffers() {
//         return buffers;
//     }
// 
//     public void setBuffers(BufferingConfiguration buffers) {
//         this.buffers = buffers;
//     }
// 
//     public AuthenticationConfiguration getAuthentication() {
//         return authentication;
//     }
// 
//     public void setAuthentication(AuthenticationConfiguration authentication) {
//         this.authentication = authentication;
//     }
// 
//     public int getStreamTimeout() {
//         return streamTimeout;
//     }
//     public int getStreamTimeoutMilis() {
//         return streamTimeout*1000;
//     }
// 
//     public void setStreamTimeout(int streamTimeout) {
//         this.streamTimeout = streamTimeout;
//     }
// 
// 
//     public String getUserAgent() {
//         return userAgent;
//     }
// 
//     public void setUserAgent(String userAgent) {
//         this.userAgent = userAgent;
//     }
// }


import com.github.segator.proxylive.config.ProxyLiveConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
package com.github.segator.proxylive.service;


@Configuration
public class ChannelServiceFactory {

// Path: src/main/java/com/github/segator/proxylive/config/ProxyLiveConfiguration.java
// @Configuration
// @ConfigurationProperties
// public class ProxyLiveConfiguration {
//     private final Logger logger = LoggerFactory.getLogger(DirectTranscodeTask.class);
//     private final JwtHelper jwtHelper;
//     private BufferingConfiguration buffers;
//     private FFMpegConfiguration ffmpeg;
//     private HttpLiveSource source;
//     private GEOIPDatasource geoIP;
//     private AuthenticationConfiguration authentication;
//     private String userAgent;
//     private int streamTimeout;
// 
//     public ProxyLiveConfiguration(JwtHelper jwtHelper) {
//         this.jwtHelper = jwtHelper;
//     }
// 
//     @PostConstruct
//     public void initializeBean() {
// 
//         //If tvheadend input is set complete configuration
//         if(source.getTvheadendURL()!=null){
//             if( source.getEpg().getUrl()==null) {
//                 source.getEpg().setUrl(source.getTvheadendURL() + "/xmltv/channels");
//             }
//             if(source.getChannels().getUrl()==null) {
//                 source.getChannels().setUrl(source.getTvheadendURL());
//             }
//         }
// 
// 
//     }
// 
//     public FFMpegConfiguration getFfmpeg() {
//         return ffmpeg;
//     }
// 
//     public void setFfmpeg(FFMpegConfiguration ffmpeg) {
//         this.ffmpeg = ffmpeg;
//     }
// 
//     public HttpLiveSource getSource() {
//         return source;
//     }
// 
//     public GEOIPDatasource getGeoIP() {
//         return geoIP;
//     }
// 
//     public void setGeoIP(GEOIPDatasource geoIP) {
//         this.geoIP = geoIP;
//     }
// 
//     public void setSource(HttpLiveSource source) {
//         this.source = source;
//     }
// 
//     public BufferingConfiguration getBuffers() {
//         return buffers;
//     }
// 
//     public void setBuffers(BufferingConfiguration buffers) {
//         this.buffers = buffers;
//     }
// 
//     public AuthenticationConfiguration getAuthentication() {
//         return authentication;
//     }
// 
//     public void setAuthentication(AuthenticationConfiguration authentication) {
//         this.authentication = authentication;
//     }
// 
//     public int getStreamTimeout() {
//         return streamTimeout;
//     }
//     public int getStreamTimeoutMilis() {
//         return streamTimeout*1000;
//     }
// 
//     public void setStreamTimeout(int streamTimeout) {
//         this.streamTimeout = streamTimeout;
//     }
// 
// 
//     public String getUserAgent() {
//         return userAgent;
//     }
// 
//     public void setUserAgent(String userAgent) {
//         this.userAgent = userAgent;
//     }
// }


// Path: src/main/java/com/github/segator/proxylive/service/ChannelServiceFactory.java
import com.github.segator.proxylive.config.ProxyLiveConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

package com.github.segator.proxylive.service;


@Configuration
public class ChannelServiceFactory {

    private final ProxyLiveConfiguration config;