diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2c1946c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,35 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+settings.xml
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index 261eeb9..7a4a3ea 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,3 +1,4 @@
+
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
@@ -198,4 +199,4 @@
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
- limitations under the License.
+ limitations under the License.
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..5a0498c
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,120 @@
+
+
+
+ 4.0.0
+ CAE HTTP Client
+ Meant for enabling applications to use HTTP at ease, without having to compromise the clean state of the overall architecture.
+ https://github.com/clean-arch-enablers-project/cae-utils-http-client/blob/main/README.md
+ com.clean-arch-enablers
+ http-client
+ 0.0.1
+ jar
+
+
+ Apache License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+
+
+
+ https://github.com/clean-arch-enablers-project/cae-utils-http-client
+
+
+
+ Zé Lúcio Jr.
+ joselucioalmeidajunior@gmail.com
+ https://github.com/zeluciojr
+
+
+
+
+ 11
+ 11
+ UTF-8
+
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.24
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.16.1
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ 5.9.0
+ test
+
+
+ org.mockito
+ mockito-core
+ 4.8.0
+ test
+
+
+ org.mockito
+ mockito-junit-jupiter
+ 4.8.0
+ test
+
+
+
+
+
+ org.sonatype.central
+ central-publishing-maven-plugin
+ 0.4.0
+ true
+
+ central
+ true
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 3.3.0
+
+
+ attach-javadocs
+
+ jar
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 3.2.1
+
+
+ attach-sources
+
+ jar
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 1.6
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+
+
+
+
diff --git a/src/main/java/com/clean_arch_enablers/http_client/ExceptionHandler.java b/src/main/java/com/clean_arch_enablers/http_client/ExceptionHandler.java
new file mode 100644
index 0000000..210f0de
--- /dev/null
+++ b/src/main/java/com/clean_arch_enablers/http_client/ExceptionHandler.java
@@ -0,0 +1,12 @@
+package com.clean_arch_enablers.http_client;
+
+@FunctionalInterface
+public interface ExceptionHandler {
+
+ /**
+ * Method which will be called when handling an exception
+ * @param exception the exception to handle
+ */
+ void handle(Exception exception);
+
+}
diff --git a/src/main/java/com/clean_arch_enablers/http_client/HttpExceptionHandlersByExceptionTypeFactory.java b/src/main/java/com/clean_arch_enablers/http_client/HttpExceptionHandlersByExceptionTypeFactory.java
new file mode 100644
index 0000000..93a5cb6
--- /dev/null
+++ b/src/main/java/com/clean_arch_enablers/http_client/HttpExceptionHandlersByExceptionTypeFactory.java
@@ -0,0 +1,10 @@
+package com.clean_arch_enablers.http_client;
+
+import com.clean_arch_enablers.http_client.commons.HandlersFactory;
+
+import java.util.Map;
+
+public interface HttpExceptionHandlersByExceptionTypeFactory extends HandlersFactory