summaryrefslogtreecommitdiffstats
path: root/vendor/maxmind/web-service-common/src/WebService/Http/RequestFactory.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/maxmind/web-service-common/src/WebService/Http/RequestFactory.php')
-rw-r--r--vendor/maxmind/web-service-common/src/WebService/Http/RequestFactory.php49
1 files changed, 49 insertions, 0 deletions
diff --git a/vendor/maxmind/web-service-common/src/WebService/Http/RequestFactory.php b/vendor/maxmind/web-service-common/src/WebService/Http/RequestFactory.php
new file mode 100644
index 0000000..54e6d54
--- /dev/null
+++ b/vendor/maxmind/web-service-common/src/WebService/Http/RequestFactory.php
@@ -0,0 +1,49 @@
+<?php
+
+namespace MaxMind\WebService\Http;
+
+/**
+ * Class RequestFactory.
+ *
+ * @internal
+ */
+class RequestFactory
+{
+ /**
+ * Keep the cURL resource here, so that if there are multiple API requests
+ * done the connection is kept alive, SSL resumption can be used
+ * etcetera.
+ *
+ * @var resource
+ */
+ private $ch;
+
+ public function __destruct()
+ {
+ if (!empty($this->ch)) {
+ curl_close($this->ch);
+ }
+ }
+
+ private function getCurlHandle()
+ {
+ if (empty($this->ch)) {
+ $this->ch = curl_init();
+ }
+
+ return $this->ch;
+ }
+
+ /**
+ * @param string $url
+ * @param array $options
+ *
+ * @return Request
+ */
+ public function request($url, $options)
+ {
+ $options['curlHandle'] = $this->getCurlHandle();
+
+ return new CurlRequest($url, $options);
+ }
+}