Переглянути джерело

Added ability to add CURL options to request

Jan Oris 9 роки тому
батько
коміт
c5591e94cb
3 змінених файлів з 33 додано та 7 видалено
  1. 22 4
      README.md
  2. 1 1
      composer.json
  3. 10 2
      src/Ixudra/Curl/CurlService.php

+ 22 - 4
README.md

@@ -25,7 +25,7 @@ Add the service provider to your `config/app.php` file:
 
 ```php
 
-    providers       => array(
+    'providers'     => array(
 
         //...
         'Ixudra\Curl\CurlServiceProvider',
@@ -38,7 +38,7 @@ Add the facade to your `config/app.php` file:
 
 ```php
 
-    facades         => array(
+    'facades'       => array(
 
         //...
         'Curl'          => 'Ixudra\Curl\Facades\Curl',
@@ -53,7 +53,11 @@ Add the facade to your `config/app.php` file:
 
 ### GET requests
 
-The package provides an easy interface for sending CURL requests from your application. Optionally, you can also include several `GET` parameters that will automatically be added to the base URL by the package automatically. Lastly, the package also has a parameter that allows you to easily mark a request as a JSON requests. The package will automatically handle the conversion from and to JSON to PHP if needed. The default value of this parameter is `false`:
+The package provides an easy interface for sending CURL requests from your application. Optionally, you can also 
+include several `GET` parameters that will automatically be added to the base URL by the package automatically. Lastly, 
+the package also has a parameter that allows you to easily mark a request as a JSON requests. The package will 
+automatically handle the conversion from and to JSON to PHP if needed. The default value of this parameter is `false`. 
+The last parameter can be used to pass additional CURL parameters to the request:
 
 ```php
 
@@ -66,13 +70,24 @@ The package provides an easy interface for sending CURL requests from your appli
     // Send a GET request to: http://www.foo.com/bar?foz=baz using JSON
     Curl::get('http://www.foo.com/bar', array('foz' => 'baz'), true);
 
+    // Send a GET request to: http://www.foo.com/bar?foz=baz using JSON over SSL
+    Curl::get('http://www.foo.com/bar', array('foz' => 'baz'), true, array('SSL_VERIFYPEER' => false));
+
 ```
 
+The package will automatically prepend the options with the `CURLOPT_` prefix. It is worth noting that the package does 
+not perform any validation on the CURL options. Additional information about available CURL options can be found
+[here](http://php.net/manual/en/function.curl-setopt.php).
+
 
 
 ### POST requests
 
-The package also allows you to send `POST` requests for your application. The first and second parameter are identical to the `Curl::get()` method. The `POST` parameters can be passed on as the third parameter. The fourth and last parameter can be used to mark the request as a JSON requests. The package will automatically handle the conversion from and to JSON to PHP is needed. The default value of this parameter is `false`:
+The package also allows you to send `POST` requests for your application. The first and second parameter are 
+identical to the `Curl::get()` method. The `POST` parameters can be passed on as the third parameter. The fourth
+parameter can be used to mark the request as a JSON requests. The package will automatically handle the conversion 
+from and to JSON to PHP is needed. The default value of this parameter is `false`. The last parameter can be used to 
+pass additional CURL parameters to the request:
 
 ```php
 
@@ -85,6 +100,9 @@ The package also allows you to send `POST` requests for your application. The fi
     // Send a POST request to: http://www.foo.com/bar?foz=baz with arguments 'fow' = 'baw' using JSON
     Curl::post('http://www.foo.com/bar', array('foz' => 'baz'), array('fow' => 'baw'), true);
 
+    // Send a POST request to: http://www.foo.com/bar?foz=baz with arguments 'fow' = 'baw' using JSON over SSL
+    Curl::post('http://www.foo.com/bar', array('foz' => 'baz'), array('fow' => 'baw'), true, array('SSL_VERIFYPEER' => false));
+
 ```
 
 That's all there is to it! Have fun!

+ 1 - 1
composer.json

@@ -1,7 +1,7 @@
 {
     "name": "ixudra/curl",
     "description": "Custom PHP Curl library for the Laravel 5 framework - developed by Ixudra",
-    "version": "5.0.2",
+    "version": "5.1.0",
     "keywords": ["Ixudra", "Laravel", "Curl"],
     "homepage": "http://ixudra.be",
     "license": "MIT",

+ 10 - 2
src/Ixudra/Curl/CurlService.php

@@ -3,15 +3,19 @@
 
 class CurlService {
 
-    public function get($url, $getParameters = array(), $isJson = false)
+    public function get($url, $getParameters = array(), $isJson = false, $curlOptions = array())
     {
         $curl = new Curl();
         $curl->setUrl( $url, $getParameters );
 
+        foreach( $curlOptions as $key => $value ) {
+            $curl->addOption( $key, $value );
+        }
+
         return $this->send( $curl, $isJson );
     }
 
-    public function post($url, $getParameters = array(), $postParameters, $isJson = false)
+    public function post($url, $getParameters = array(), $postParameters, $isJson = false, $curlOptions = array())
     {
         $curl = new Curl();
         $curl->setUrl( $url, $getParameters );
@@ -24,6 +28,10 @@ class CurlService {
 
         $curl->setPostParameters( $postParameters );
 
+        foreach( $curlOptions as $key => $value ) {
+            $curl->addOption( $key, $value );
+        }
+
         return $this->send( $curl, $isJson );
     }