curb 0.9.6 → 0.9.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 53aeed05cc43efb7e736097fd212e43a8b25e21b
4
- data.tar.gz: 129c6741252ba30006df855fb7543eba7e706fca
3
+ metadata.gz: 074fa1f2330b83e471e524dcbef1f5ef869fd352
4
+ data.tar.gz: 52abfef2028f532f2070406117f66dc779913ccc
5
5
  SHA512:
6
- metadata.gz: e2f6065c80853bdc3d17d69316e202b7f7f73d5ab4925171fa50847e370978b67f4419144559305beb002a7e91dc5cf6b359b1d643237cb17699c37ba07d936f
7
- data.tar.gz: b76fd1724733c9566e4150c4467370ca63a40838f59e8b6ab1412d8b893eca1ebfe12cca6bb8ac59f607292498daa4e97d06fd9239ac7d651b5441b4e2f2abfa
6
+ metadata.gz: 1eee7cc31175d70a6720c9f0f86958644e7fd9f179e82cc0b3a90e70dc3e5c4caa2cd0db06a3e1350ae88ef7c030e14e8d2c6e6d2dfba9e8c9b8872fe56fa421
7
+ data.tar.gz: 3191554e99e528b7e59801ad5322661fe95ebcfe83ced7f6658f1eda2ee6a2546b990b4c6ff9182a4242f15556443422dcc9be4f4005dfe0c72cb13da517d1b6
@@ -16,7 +16,7 @@ Ruby license. See the LICENSE file for the gory details.
16
16
 
17
17
  ## You will need
18
18
 
19
- * A working Ruby installation (1.8+, tested with 1.8.6, 1.8.7, 1.9.1, and 1.9.2)
19
+ * A working Ruby installation (2.1+)
20
20
  * A working (lib)curl installation, with development stuff (7.5+, tested with 7.19.x)
21
21
  * A sane build environment (e.g. gcc, make)
22
22
 
@@ -30,7 +30,7 @@ On Windows, make sure you're using the [DevKit](http://rubyinstaller.org/downloa
30
30
  the [development version of libcurl](http://curl.haxx.se/gknw.net/7.39.0/dist-w32/curl-7.39.0-devel-mingw32.zip). Unzip, then run this in your command
31
31
  line (alter paths to your curl location, but remember to use forward slashes):
32
32
 
33
- gem install curb --platform=ruby -- --with-curl-lib=C:/curl-7.39.0-devel-mingw32/bin --with-curl-include=C:/curl-7.39.0-devel-mingw32/include
33
+ gem install curb --platform=ruby -- --with-curl-lib=C:/curl-7.39.0-devel-mingw32/lib --with-curl-include=C:/curl-7.39.0-devel-mingw32/include
34
34
 
35
35
  Or, if you downloaded the archive:
36
36
 
@@ -134,9 +134,9 @@ c.perform
134
134
  ### HTTP "insecure" SSL connections (like curl -k, --insecure) to avoid Curl::Err::SSLCACertificateError:
135
135
 
136
136
  ```ruby
137
- c = Curl::Easy.new("https://github.com/")
138
- c.ssl_verify_peer = false
139
- c.perform
137
+ c = Curl::Easy.new("https://github.com/")
138
+ c.ssl_verify_peer = false
139
+ c.perform
140
140
  ```
141
141
 
142
142
  ### Supplying custom handlers:
data/ext/curb.h CHANGED
@@ -20,11 +20,11 @@
20
20
  #include "curb_macros.h"
21
21
 
22
22
  // These should be managed from the Rake 'release' task.
23
- #define CURB_VERSION "0.9.6"
24
- #define CURB_VER_NUM 906
23
+ #define CURB_VERSION "0.9.7"
24
+ #define CURB_VER_NUM 907
25
25
  #define CURB_VER_MAJ 0
26
- #define CURB_VER_MIN 6
27
- #define CURB_VER_MIC 0
26
+ #define CURB_VER_MIN 9
27
+ #define CURB_VER_MIC 7
28
28
  #define CURB_VER_PATCH 0
29
29
 
30
30
 
@@ -2346,6 +2346,7 @@ VALUE ruby_curl_easy_setup(ruby_curl_easy *rbce) {
2346
2346
  }
2347
2347
  }
2348
2348
 
2349
+ #if HAVE_CURLOPT_RESOLVE
2349
2350
  /* Setup resolve list if necessary */
2350
2351
  if (!rb_easy_nil("resolve")) {
2351
2352
  if (rb_easy_type_check("resolve", T_ARRAY)) {
@@ -2357,6 +2358,7 @@ VALUE ruby_curl_easy_setup(ruby_curl_easy *rbce) {
2357
2358
  curl_easy_setopt(curl, CURLOPT_RESOLVE, *rslv);
2358
2359
  }
2359
2360
  }
2361
+ #endif
2360
2362
 
2361
2363
  return Qnil;
2362
2364
  }
@@ -307,9 +307,11 @@ VALUE rb_curl_easy_error(CURLcode code) {
307
307
  exclz = eCurlErrObsolete;
308
308
  break;
309
309
  #endif
310
+ #if LIBCURL_VERSION_NUM < 0x073e00
310
311
  case CURLE_SSL_PEER_CERTIFICATE: /* 51 - peer's certificate wasn't ok */
311
312
  exclz = eCurlErrSSLPeerCertificate;
312
313
  break;
314
+ #endif
313
315
  case CURLE_GOT_NOTHING: /* 52 - when this is a specific error */
314
316
  exclz = eCurlErrGotNothing;
315
317
  break;
@@ -334,8 +336,13 @@ VALUE rb_curl_easy_error(CURLcode code) {
334
336
  case CURLE_SSL_CIPHER: /* 59 - couldn't use specified cipher */
335
337
  exclz = eCurlErrSSLCipher;
336
338
  break;
339
+ #if LIBCURL_VERSION_NUM >= 0x073e00
340
+ case CURLE_PEER_FAILED_VERIFICATION: /* 60 - problem with the CA cert (path?) */
341
+ exclz = eCurlErrSSLPeerCertificate;
342
+ #else
337
343
  case CURLE_SSL_CACERT: /* 60 - problem with the CA cert (path?) */
338
344
  exclz = eCurlErrSSLCACertificate;
345
+ #endif
339
346
  break;
340
347
  case CURLE_BAD_CONTENT_ENCODING: /* 61 - Unrecognized transfer encoding */
341
348
  exclz = eCurlErrBadContentEncoding;
@@ -102,6 +102,9 @@ have_constant "curle_send_fail_rewind"
102
102
  have_constant "curle_ssl_engine_initfailed"
103
103
  have_constant "curle_login_denied"
104
104
 
105
+ # older than 7.10.0
106
+ have_constant "curlopt_nosignal"
107
+
105
108
  # older than 7.16.0
106
109
  have_constant "curlmopt_pipelining"
107
110
 
@@ -48,13 +48,11 @@ module Curl
48
48
 
49
49
  def self.urlalize(url, params={})
50
50
  uri = URI(url)
51
+ # early return if we didn't specify any extra params
52
+ return uri.to_s if (params || {}).empty?
53
+
51
54
  params_query = URI.encode_www_form(params || {})
52
- # both uri.query and params_query not blank
53
- if !(uri.query.nil? || uri.query.empty?) && !params_query.empty?
54
- uri.query = "#{uri.query}&#{params_query}"
55
- else
56
- uri.query = "#{uri.query}#{params_query}"
57
- end
55
+ uri.query = [uri.query.to_s, params_query].reject(&:empty?).join('&')
58
56
  uri.to_s
59
57
  end
60
58
 
@@ -97,7 +97,7 @@ class TestServlet < WEBrick::HTTPServlet::AbstractServlet
97
97
  if params and params['s'] == '500'
98
98
  res.status = 500
99
99
  elsif params and params['c']
100
- cookie = URI.decode_www_form(params['c'])[0][0].split('=')
100
+ cookie = URI.decode_www_form_component(params['c']).split('=')
101
101
  res.cookies << WEBrick::Cookie.new(*cookie)
102
102
  else
103
103
  respond_with("POST\n#{req.body}",req,res)
@@ -31,6 +31,36 @@ class TestCurl < Test::Unit::TestCase
31
31
  assert_equal "OPTIONSfoo=bar", curl.body_str
32
32
  end
33
33
 
34
+ def test_urlalize_without_extra_params
35
+ url_no_params = 'http://localhost/test'
36
+ url_with_params = 'http://localhost/test?a=1'
37
+
38
+ assert_equal(url_no_params, Curl.urlalize(url_no_params))
39
+ assert_equal(url_with_params, Curl.urlalize(url_with_params))
40
+ end
41
+
42
+ def test_urlalize_with_nil_as_params
43
+ url = 'http://localhost/test'
44
+ assert_equal(url, Curl.urlalize(url, nil))
45
+ end
46
+
47
+ def test_urlalize_with_extra_params
48
+ url_no_params = 'http://localhost/test'
49
+ url_with_params = 'http://localhost/test?a=1'
50
+ extra_params = { :b => 2 }
51
+
52
+ expected_url_no_params = 'http://localhost/test?b=2'
53
+ expected_url_with_params = 'http://localhost/test?a=1&b=2'
54
+
55
+ assert_equal(expected_url_no_params, Curl.urlalize(url_no_params, extra_params))
56
+ assert_equal(expected_url_with_params, Curl.urlalize(url_with_params, extra_params))
57
+ end
58
+
59
+ def test_urlalize_does_not_strip_trailing_?
60
+ url_empty_params = 'http://localhost/test?'
61
+ assert_equal(url_empty_params, Curl.urlalize(url_empty_params))
62
+ end
63
+
34
64
  include TestServerMethods
35
65
 
36
66
  def setup
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: curb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
4
+ version: 0.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ross Bamford
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-05-28 00:00:00.000000000 Z
12
+ date: 2018-11-26 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Curb (probably CUrl-RuBy or something) provides Ruby-language bindings
15
15
  for the libcurl(3), a fully-featured client-side URL transfer library. cURL and