taf2-curb 0.3.6.0 → 0.4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ext/curb.h +4 -4
- data/ext/curb_easy.c +31 -5
- data/ext/curb_multi.c +25 -3
- data/tests/tc_curl_easy.rb +15 -1
- data/tests/tc_curl_multi.rb +1 -1
- metadata +2 -2
    
        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. | 
| 24 | 
            -
            #define CURB_VER_NUM    | 
| 23 | 
            +
            #define CURB_VERSION   "0.4.0.0"
         | 
| 24 | 
            +
            #define CURB_VER_NUM   400
         | 
| 25 25 | 
             
            #define CURB_VER_MAJ   0
         | 
| 26 | 
            -
            #define CURB_VER_MIN    | 
| 27 | 
            -
            #define CURB_VER_MIC    | 
| 26 | 
            +
            #define CURB_VER_MIN   4
         | 
| 27 | 
            +
            #define CURB_VER_MIC   0
         | 
| 28 28 | 
             
            #define CURB_VER_PATCH 0
         | 
| 29 29 |  | 
| 30 30 |  | 
    
        data/ext/curb_easy.c
    CHANGED
    
    | @@ -1629,7 +1629,7 @@ static VALUE handle_perform(VALUE self, ruby_curl_easy *rbce) { | |
| 1629 1629 | 
             
              if (result != 0) {
         | 
| 1630 1630 | 
             
            //    printf("error: %s\n", errors);
         | 
| 1631 1631 | 
             
                if (rbce->failure_proc != Qnil) {
         | 
| 1632 | 
            -
                  rb_funcall( rbce->failure_proc, idCall,  | 
| 1632 | 
            +
                  rb_funcall( rbce->failure_proc, idCall, 2, rbce->self, INT2FIX(result) );
         | 
| 1633 1633 | 
             
                } else {
         | 
| 1634 1634 | 
             
                  raise_curl_easy_error_exception(result);
         | 
| 1635 1635 | 
             
                }
         | 
| @@ -1641,7 +1641,7 @@ static VALUE handle_perform(VALUE self, ruby_curl_easy *rbce) { | |
| 1641 1641 | 
             
              }
         | 
| 1642 1642 | 
             
              else if (rbce->failure_proc != Qnil && 
         | 
| 1643 1643 | 
             
                       (response_code >= 300 && response_code <= 999)) {
         | 
| 1644 | 
            -
                rb_funcall( rbce->failure_proc, idCall,  | 
| 1644 | 
            +
                rb_funcall( rbce->failure_proc, idCall, 2, rbce->self, INT2FIX(result) );
         | 
| 1645 1645 | 
             
              }
         | 
| 1646 1646 |  | 
| 1647 1647 | 
             
              return Qtrue;
         | 
| @@ -1697,11 +1697,14 @@ static VALUE ruby_curl_easy_perform_delete(VALUE self) { | |
| 1697 1697 | 
             
             * 
         | 
| 1698 1698 | 
             
             * Transfer the currently configured URL using the options set for this
         | 
| 1699 1699 | 
             
             * Curl::Easy instance. If this is an HTTP URL, it will be transferred via
         | 
| 1700 | 
            -
             * the GET request method | 
| 1701 | 
            -
             * when using HTTP URLs).
         | 
| 1700 | 
            +
             * the GET or HEAD request method.
         | 
| 1702 1701 | 
             
             */
         | 
| 1703 1702 | 
             
            static VALUE ruby_curl_easy_perform(VALUE self) {  
         | 
| 1704 | 
            -
               | 
| 1703 | 
            +
              ruby_curl_easy *rbce;
         | 
| 1704 | 
            +
             | 
| 1705 | 
            +
              Data_Get_Struct(self, ruby_curl_easy, rbce);
         | 
| 1706 | 
            +
              
         | 
| 1707 | 
            +
              return handle_perform(self,rbce);
         | 
| 1705 1708 | 
             
            }
         | 
| 1706 1709 |  | 
| 1707 1710 | 
             
            /*
         | 
| @@ -1803,6 +1806,28 @@ static VALUE ruby_curl_easy_perform_head(VALUE self) { | |
| 1803 1806 | 
             
              return handle_perform(self,rbce);
         | 
| 1804 1807 | 
             
            }
         | 
| 1805 1808 |  | 
| 1809 | 
            +
            /*
         | 
| 1810 | 
            +
             *call-seq:
         | 
| 1811 | 
            +
             * easy = Curl::Easy.new("url") do|c|
         | 
| 1812 | 
            +
             *  c.head = true
         | 
| 1813 | 
            +
             * end
         | 
| 1814 | 
            +
             * easy.perform
         | 
| 1815 | 
            +
             */
         | 
| 1816 | 
            +
            static VALUE ruby_curl_easy_set_head_option(VALUE self, VALUE onoff) {
         | 
| 1817 | 
            +
              ruby_curl_easy *rbce;
         | 
| 1818 | 
            +
             | 
| 1819 | 
            +
              Data_Get_Struct(self, ruby_curl_easy, rbce);
         | 
| 1820 | 
            +
             | 
| 1821 | 
            +
              if( onoff == Qtrue ) {
         | 
| 1822 | 
            +
                curl_easy_setopt(rbce->curl, CURLOPT_NOBODY, 1);
         | 
| 1823 | 
            +
              }
         | 
| 1824 | 
            +
              else {
         | 
| 1825 | 
            +
                curl_easy_setopt(rbce->curl, CURLOPT_NOBODY, 0);
         | 
| 1826 | 
            +
              }
         | 
| 1827 | 
            +
             | 
| 1828 | 
            +
              return onoff;
         | 
| 1829 | 
            +
            }
         | 
| 1830 | 
            +
             | 
| 1806 1831 | 
             
            /*
         | 
| 1807 1832 | 
             
             * call-seq:
         | 
| 1808 1833 | 
             
             *   easy.http_put(data)                              => true
         | 
| @@ -2685,6 +2710,7 @@ void init_curb_easy() { | |
| 2685 2710 | 
             
              rb_define_method(cCurlEasy, "http_post", ruby_curl_easy_perform_post, -1);
         | 
| 2686 2711 | 
             
              rb_define_method(cCurlEasy, "http_head", ruby_curl_easy_perform_head, 0);
         | 
| 2687 2712 | 
             
              rb_define_method(cCurlEasy, "http_put", ruby_curl_easy_perform_put, 1);
         | 
| 2713 | 
            +
              rb_define_method(cCurlEasy, "head=", ruby_curl_easy_set_head_option, 1);
         | 
| 2688 2714 |  | 
| 2689 2715 | 
             
              /* Post-perform info methods */
         | 
| 2690 2716 | 
             
              rb_define_method(cCurlEasy, "body_str", ruby_curl_easy_body_str_get, 0);
         | 
    
        data/ext/curb_multi.c
    CHANGED
    
    | @@ -106,7 +106,28 @@ static VALUE ruby_curl_multi_max_connects(VALUE self, VALUE count) { | |
| 106 106 | 
             
              curl_multi_setopt(rbcm->handle, CURLMOPT_MAXCONNECTS, NUM2INT(count));
         | 
| 107 107 | 
             
            #endif
         | 
| 108 108 |  | 
| 109 | 
            -
              return  | 
| 109 | 
            +
              return count;
         | 
| 110 | 
            +
            }
         | 
| 111 | 
            +
             | 
| 112 | 
            +
            /*
         | 
| 113 | 
            +
             * call-seq:
         | 
| 114 | 
            +
             * multi = Curl::Multi.new
         | 
| 115 | 
            +
             * multi.pipeline = true
         | 
| 116 | 
            +
             *
         | 
| 117 | 
            +
             * Pass a long set to 1 to enable or 0 to disable. Enabling pipelining on a multi handle will make it
         | 
| 118 | 
            +
             * attempt to perform HTTP Pipelining as far as possible for transfers using this handle. This means
         | 
| 119 | 
            +
             * that if you add a second request that can use an already existing connection, the second request will
         | 
| 120 | 
            +
             * be "piped" on the same connection rather than being executed in parallel. (Added in 7.16.0)
         | 
| 121 | 
            +
             *
         | 
| 122 | 
            +
             */
         | 
| 123 | 
            +
            static VALUE ruby_curl_multi_pipeline(VALUE self, VALUE onoff) {
         | 
| 124 | 
            +
            #ifdef HAVE_CURLMOPT_PIPELINING
         | 
| 125 | 
            +
              ruby_curl_multi *rbcm;
         | 
| 126 | 
            +
             | 
| 127 | 
            +
              Data_Get_Struct(self, ruby_curl_multi, rbcm);
         | 
| 128 | 
            +
              curl_multi_setopt(rbcm->handle, CURLMOPT_PIPELINING, onoff == Qtrue ? 1 : 0);
         | 
| 129 | 
            +
            #endif
         | 
| 130 | 
            +
              return onoff;
         | 
| 110 131 | 
             
            }
         | 
| 111 132 |  | 
| 112 133 | 
             
            /*
         | 
| @@ -235,7 +256,7 @@ static void rb_curl_multi_read_info(VALUE self, CURLM *multi_handle) { | |
| 235 256 |  | 
| 236 257 | 
             
                  if (result != 0) {
         | 
| 237 258 | 
             
                    if (rbce->failure_proc != Qnil) {
         | 
| 238 | 
            -
                      rb_funcall( rbce->failure_proc, idCall,  | 
| 259 | 
            +
                      rb_funcall( rbce->failure_proc, idCall, 2, rbce->self, INT2FIX(result) );
         | 
| 239 260 | 
             
                    }
         | 
| 240 261 | 
             
                  }
         | 
| 241 262 | 
             
                  else if (rbce->success_proc != Qnil &&
         | 
| @@ -245,7 +266,7 @@ static void rb_curl_multi_read_info(VALUE self, CURLM *multi_handle) { | |
| 245 266 | 
             
                  }
         | 
| 246 267 | 
             
                  else if (rbce->failure_proc != Qnil &&
         | 
| 247 268 | 
             
                          (response_code >= 300 && response_code <= 999)) {
         | 
| 248 | 
            -
                    rb_funcall( rbce->failure_proc, idCall,  | 
| 269 | 
            +
                    rb_funcall( rbce->failure_proc, idCall, 2, rbce->self, INT2FIX(result) );
         | 
| 249 270 | 
             
                  }
         | 
| 250 271 | 
             
                  rbce->self = Qnil;
         | 
| 251 272 | 
             
                }
         | 
| @@ -359,6 +380,7 @@ void init_curb_multi() { | |
| 359 380 |  | 
| 360 381 | 
             
              /* Instnace methods */
         | 
| 361 382 | 
             
              rb_define_method(cCurlMulti, "max_connects=", ruby_curl_multi_max_connects, 1);
         | 
| 383 | 
            +
              rb_define_method(cCurlMulti, "pipeline=", ruby_curl_multi_pipeline, 1);
         | 
| 362 384 | 
             
              rb_define_method(cCurlMulti, "add", ruby_curl_multi_add, 1);
         | 
| 363 385 | 
             
              rb_define_method(cCurlMulti, "remove", ruby_curl_multi_remove, 1);
         | 
| 364 386 | 
             
              rb_define_method(cCurlMulti, "perform", ruby_curl_multi_perform, 0);
         | 
    
        data/tests/tc_curl_easy.rb
    CHANGED
    
    | @@ -471,7 +471,7 @@ class TestCurbCurlEasy < Test::Unit::TestCase | |
| 471 471 | 
             
                curl = Curl::Easy.new("#{$TEST_URL.gsub(/file:\/\//,'')}/not_here")
         | 
| 472 472 | 
             
                on_failure_called = false
         | 
| 473 473 | 
             
                curl.on_success {|c| } # make sure we get the failure call even though this handler is defined
         | 
| 474 | 
            -
                curl.on_failure {|c| on_failure_called = true }
         | 
| 474 | 
            +
                curl.on_failure {|c,code| on_failure_called = true }
         | 
| 475 475 | 
             
                curl.perform
         | 
| 476 476 | 
             
                assert on_failure_called, "Failure handler not called" 
         | 
| 477 477 | 
             
              end
         | 
| @@ -504,6 +504,20 @@ class TestCurbCurlEasy < Test::Unit::TestCase | |
| 504 504 | 
             
                assert_match '/nonexistent', redirect[1]
         | 
| 505 505 | 
             
              end
         | 
| 506 506 |  | 
| 507 | 
            +
              def test_head_accessor
         | 
| 508 | 
            +
                curl = Curl::Easy.new(TestServlet.url)
         | 
| 509 | 
            +
                curl.head = true
         | 
| 510 | 
            +
                curl.perform
         | 
| 511 | 
            +
             | 
| 512 | 
            +
                redirect = curl.header_str.match(/Location: (.*)/)
         | 
| 513 | 
            +
             | 
| 514 | 
            +
                assert_equal '', curl.body_str
         | 
| 515 | 
            +
                assert_match '/nonexistent', redirect[1]
         | 
| 516 | 
            +
                curl.head = false
         | 
| 517 | 
            +
                curl.perform
         | 
| 518 | 
            +
                assert_equal 'GET', curl.body_str
         | 
| 519 | 
            +
              end
         | 
| 520 | 
            +
             | 
| 507 521 | 
             
              def test_put_remote
         | 
| 508 522 | 
             
                curl = Curl::Easy.new(TestServlet.url)
         | 
| 509 523 | 
             
                assert curl.http_put("message")
         | 
    
        data/tests/tc_curl_multi.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: taf2-curb
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.4.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 7 | 
             
            - Ross Bamford
         | 
| @@ -10,7 +10,7 @@ autorequire: | |
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 12 |  | 
| 13 | 
            -
            date: 2009-06- | 
| 13 | 
            +
            date: 2009-06-17 00:00:00 -07:00
         | 
| 14 14 | 
             
            default_executable: 
         | 
| 15 15 | 
             
            dependencies: []
         | 
| 16 16 |  |