// Path: ceidg-captcha-downloader/src/main/java/net/scaliby/ceidgcaptcha/downloader/common/CookieParser.java
// public interface CookieParser {
//     Map<String, String> parseSetCookieStrings(Collection<String> input);
// 
//     String formatCookieString(Map<String, String> cookies);
// }
// 
// Path: ceidg-captcha-downloader/src/main/java/net/scaliby/ceidgcaptcha/downloader/exception/CEIDGHttpException.java
// public class CEIDGHttpException extends RuntimeException {
//     public CEIDGHttpException() {
//     }
// 
//     public CEIDGHttpException(String message) {
//         super(message);
//     }
// 
//     public CEIDGHttpException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
//     public CEIDGHttpException(Throwable cause) {
//         super(cause);
//     }
// 
//     public CEIDGHttpException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
//         super(message, cause, enableSuppression, writableStackTrace);
//     }
// }
// 
// Path: ceidg-captcha-downloader/src/main/java/net/scaliby/ceidgcaptcha/downloader/factory/RequestFactory.java
// public interface RequestFactory {
// 
//     HttpUriRequest createGenerateSessionRequest();
// 
//     HttpUriRequest createGetCaptchaImageRequest(CEIDGCaptchaSessionResource ceidgCaptchaSessionResource);
// 
// }
// 
// Path: ceidg-captcha-downloader/src/main/java/net/scaliby/ceidgcaptcha/downloader/resource/CEIDGCaptchaSessionResource.java
// @Data
// public class CEIDGCaptchaSessionResource {
//     private String sessionId;
//     private String captchaId;
// }
// 
// Path: ceidg-captcha-downloader/src/main/java/net/scaliby/ceidgcaptcha/downloader/resource/CEIDGClientEndpointConfigurationResource.java
// @Data
// public class CEIDGClientEndpointConfigurationResource {
// 
//     @Inject
//     @Named("application.ceidg.client.endpoint.sessionGenerateUrl")
//     private String sessionGenerateUrl;
//     @Inject
//     @Named("application.ceidg.client.endpoint.imageDownloadUrl")
//     private String imageDownloadUrl;
// 
// }


import net.scaliby.ceidgcaptcha.downloader.common.CookieParser;
import net.scaliby.ceidgcaptcha.downloader.exception.CEIDGHttpException;
import net.scaliby.ceidgcaptcha.downloader.factory.RequestFactory;
import net.scaliby.ceidgcaptcha.downloader.resource.CEIDGCaptchaSessionResource;
import net.scaliby.ceidgcaptcha.downloader.resource.CEIDGClientEndpointConfigurationResource;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.utils.URIBuilder;
import javax.inject.Inject;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;
package net.scaliby.ceidgcaptcha.downloader.factory.impl;



public class RequestFactoryImpl implements RequestFactory {

    private final CEIDGClientEndpointConfigurationResource ceidgClientEndpointConfigurationResource;
    private final CookieParser cookieParser;

    @Inject
// Path: ceidg-captcha-downloader/src/main/java/net/scaliby/ceidgcaptcha/downloader/common/CookieParser.java
// public interface CookieParser {
//     Map<String, String> parseSetCookieStrings(Collection<String> input);
// 
//     String formatCookieString(Map<String, String> cookies);
// }
// 
// Path: ceidg-captcha-downloader/src/main/java/net/scaliby/ceidgcaptcha/downloader/exception/CEIDGHttpException.java
// public class CEIDGHttpException extends RuntimeException {
//     public CEIDGHttpException() {
//     }
// 
//     public CEIDGHttpException(String message) {
//         super(message);
//     }
// 
//     public CEIDGHttpException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
//     public CEIDGHttpException(Throwable cause) {
//         super(cause);
//     }
// 
//     public CEIDGHttpException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
//         super(message, cause, enableSuppression, writableStackTrace);
//     }
// }
// 
// Path: ceidg-captcha-downloader/src/main/java/net/scaliby/ceidgcaptcha/downloader/factory/RequestFactory.java
// public interface RequestFactory {
// 
//     HttpUriRequest createGenerateSessionRequest();
// 
//     HttpUriRequest createGetCaptchaImageRequest(CEIDGCaptchaSessionResource ceidgCaptchaSessionResource);
// 
// }
// 
// Path: ceidg-captcha-downloader/src/main/java/net/scaliby/ceidgcaptcha/downloader/resource/CEIDGCaptchaSessionResource.java
// @Data
// public class CEIDGCaptchaSessionResource {
//     private String sessionId;
//     private String captchaId;
// }
// 
// Path: ceidg-captcha-downloader/src/main/java/net/scaliby/ceidgcaptcha/downloader/resource/CEIDGClientEndpointConfigurationResource.java
// @Data
// public class CEIDGClientEndpointConfigurationResource {
// 
//     @Inject
//     @Named("application.ceidg.client.endpoint.sessionGenerateUrl")
//     private String sessionGenerateUrl;
//     @Inject
//     @Named("application.ceidg.client.endpoint.imageDownloadUrl")
//     private String imageDownloadUrl;
// 
// }


// Path: ceidg-captcha-downloader/src/main/java/net/scaliby/ceidgcaptcha/downloader/factory/impl/RequestFactoryImpl.java
import net.scaliby.ceidgcaptcha.downloader.common.CookieParser;
import net.scaliby.ceidgcaptcha.downloader.exception.CEIDGHttpException;
import net.scaliby.ceidgcaptcha.downloader.factory.RequestFactory;
import net.scaliby.ceidgcaptcha.downloader.resource.CEIDGCaptchaSessionResource;
import net.scaliby.ceidgcaptcha.downloader.resource.CEIDGClientEndpointConfigurationResource;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.utils.URIBuilder;
import javax.inject.Inject;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;

package net.scaliby.ceidgcaptcha.downloader.factory.impl;



public class RequestFactoryImpl implements RequestFactory {

    private final CEIDGClientEndpointConfigurationResource ceidgClientEndpointConfigurationResource;
    private final CookieParser cookieParser;

    @Inject
    public RequestFactoryImpl(CEIDGClientEndpointConfigurationResource ceidgClientEndpointConfigurationResource, CookieParser cookieParser) {