xsr 1.3.0 → 1.4.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.
- checksums.yaml +4 -4
- data/README.md +21 -0
- data/lib/xsr/client.rb +10 -1
- data/makefile +4 -0
- data/test/client_ssl_test.rb +36 -0
- data/test/client_test.rb +1 -7
- data/xsr.gemspec +1 -1
- metadata +3 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f9e3370abd455ea33763b68734c67f393baabda3
         | 
| 4 | 
            +
              data.tar.gz: 9c67710ee1481d692ace115a269483b7f66c141c
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: c4caf181848332499d1ccbc4284171fb8de9393c5fb4ba5f48b45d9e683cad1944a34aa514ffa2b1ff46a72837a786e5ebe4547e5232b5a326cee4ce0d5d8627
         | 
| 7 | 
            +
              data.tar.gz: a5cb61cad99572cdf0cfffdb65a299d3cf37365ace9e93f4be880971193d4acffcacbb7179a4919d67ee5f9f5639fbfc2fdb2b3ec854b9e9c773bffd6ec236b6
         | 
    
        data/README.md
    CHANGED
    
    | @@ -97,6 +97,12 @@ resp.success? | |
| 97 97 | 
             
            #=> Response status code is 2xx
         | 
| 98 98 |  | 
| 99 99 | 
             
            resp.bad_request?
         | 
| 100 | 
            +
            #=> Response status code is 400
         | 
| 101 | 
            +
             | 
| 102 | 
            +
            resp.unauthorized?
         | 
| 103 | 
            +
            #=> Response status code is 401
         | 
| 104 | 
            +
             | 
| 105 | 
            +
            resp.forbidden?
         | 
| 100 106 | 
             
            #=> Response status code is 403
         | 
| 101 107 |  | 
| 102 108 | 
             
            resp.not_found?
         | 
| @@ -112,6 +118,21 @@ resp.http_response | |
| 112 118 | 
             
            #-> Call http_response to get full Net::HTTPResponse object
         | 
| 113 119 | 
             
            ```
         | 
| 114 120 |  | 
| 121 | 
            +
            ### SSL considerations
         | 
| 122 | 
            +
            By default, XSR verifies the SSL certificate for the requested server. 
         | 
| 123 | 
            +
             | 
| 124 | 
            +
            To use a custom CA Root certificate set ```ca_file```
         | 
| 125 | 
            +
            ```
         | 
| 126 | 
            +
            client = XSR::Client.new(ca_file: '/path/to/my_custom.pem')
         | 
| 127 | 
            +
            client.get('https://api.something.io/get')
         | 
| 128 | 
            +
            ```
         | 
| 129 | 
            +
             | 
| 130 | 
            +
            In case you want to skip this verfication, set ```skip_cert_check```:
         | 
| 131 | 
            +
            ```
         | 
| 132 | 
            +
            client = XSR::Client.new(skip_cert_check: true)
         | 
| 133 | 
            +
            client.get('https://api.something.io/get')
         | 
| 134 | 
            +
            ```
         | 
| 135 | 
            +
             | 
| 115 136 | 
             
            ##What's next?
         | 
| 116 137 | 
             
            I'm not planning to add more features right now, but feel free to fork this repo and add any extra functionality you consider that should be included. Please, submit a PR with proposed changes or fixes.
         | 
| 117 138 | 
             
            Just keep in mind a minimalist paradigm (https://youtu.be/tXVr2E1vfmk).
         | 
    
        data/lib/xsr/client.rb
    CHANGED
    
    | @@ -3,10 +3,14 @@ module XSR | |
| 3 3 | 
             
              class Client
         | 
| 4 4 | 
             
                attr_accessor :base_url
         | 
| 5 5 | 
             
                attr_accessor :default_header
         | 
| 6 | 
            +
                attr_accessor :skip_cert_check
         | 
| 7 | 
            +
                attr_accessor :ca_file
         | 
| 6 8 |  | 
| 7 9 | 
             
                def initialize(options = {})
         | 
| 8 10 | 
             
                  @base_url = options[:base_url]
         | 
| 9 11 | 
             
                  @base_header = options[:header]
         | 
| 12 | 
            +
                  @skip_cert_check = options[:skip_cert_check]
         | 
| 13 | 
            +
                  @ca_file = options[:ca_file]
         | 
| 10 14 | 
             
                end
         | 
| 11 15 |  | 
| 12 16 | 
             
                def post(path, options = {})
         | 
| @@ -46,7 +50,12 @@ module XSR | |
| 46 50 |  | 
| 47 51 | 
             
                  if uri.scheme == 'https' # Requires SSL?
         | 
| 48 52 | 
             
                    http_session.use_ssl = true
         | 
| 49 | 
            -
                     | 
| 53 | 
            +
                    if @skip_cert_check || options[:skip_cert_check]
         | 
| 54 | 
            +
                      http_session.verify_mode = OpenSSL::SSL::VERIFY_NONE
         | 
| 55 | 
            +
                    else
         | 
| 56 | 
            +
                      http_session.ca_file = @ca_file || options[:ca_file]
         | 
| 57 | 
            +
                      http_session.verify_mode = OpenSSL::SSL::VERIFY_PEER
         | 
| 58 | 
            +
                    end
         | 
| 50 59 | 
             
                  end
         | 
| 51 60 |  | 
| 52 61 | 
             
                  XSR::Response.new http_session.start { |http| http.request(req) }
         | 
    
        data/makefile
    CHANGED
    
    
| @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            require 'xsr'
         | 
| 2 | 
            +
            require_relative 'helper'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            # Tests for SSL requests
         | 
| 5 | 
            +
            module ClientSSLTest
         | 
| 6 | 
            +
              prepare do
         | 
| 7 | 
            +
                @client = XSR::Client.new(base_url: 'https://httpbin.org')
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              test 'https request' do
         | 
| 11 | 
            +
                resp = @client.get('/get')
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                assert resp.http_response.instance_of?(Net::HTTPOK)
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              test 'https request skipping certificate verification' do
         | 
| 17 | 
            +
                resp = @client.get('/get', skip_cert_check: true)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                assert resp.http_response.instance_of?(Net::HTTPOK)
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              test 'client skip certificate verification' do
         | 
| 23 | 
            +
                client = XSR::Client.new(base_url: 'https://httpbin.org', skip_cert_check: true)
         | 
| 24 | 
            +
                resp = client.get('/get')
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                assert resp.http_response.instance_of?(Net::HTTPOK)
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              test 'set custom invalid ca pem' do
         | 
| 30 | 
            +
                @client.ca_file = 'does_not_exist.pem'
         | 
| 31 | 
            +
                
         | 
| 32 | 
            +
                assert_raise(OpenSSL::SSL::SSLError) do
         | 
| 33 | 
            +
                  @client.get('/get')
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
            end
         | 
    
        data/test/client_test.rb
    CHANGED
    
    | @@ -52,7 +52,7 @@ module ClientTest | |
| 52 52 |  | 
| 53 53 | 
             
              test 'default headers are passed to request' do
         | 
| 54 54 | 
             
                h = { 'Some-Header' => 'some_value' }
         | 
| 55 | 
            -
                resp = XSR::Client.new(header: h).get(' | 
| 55 | 
            +
                resp = XSR::Client.new(header: h).get('http://httpbin.org/headers')
         | 
| 56 56 |  | 
| 57 57 | 
             
                assert resp.http_response.instance_of?(Net::HTTPOK)
         | 
| 58 58 |  | 
| @@ -69,10 +69,4 @@ module ClientTest | |
| 69 69 | 
             
                argument = MultiJson.load(resp.http_response.body)['args']['some_arg']
         | 
| 70 70 | 
             
                assert_equal argument, 'some_value'
         | 
| 71 71 | 
             
              end
         | 
| 72 | 
            -
             | 
| 73 | 
            -
              test 'https request' do
         | 
| 74 | 
            -
                resp = XSR::Client.new.get('https://httpbin.org/get')
         | 
| 75 | 
            -
             | 
| 76 | 
            -
                assert resp.http_response.instance_of?(Net::HTTPOK)
         | 
| 77 | 
            -
              end
         | 
| 78 72 | 
             
            end
         | 
    
        data/xsr.gemspec
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: xsr
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - matiasow
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-05- | 
| 11 | 
            +
            date: 2015-05-22 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: multi_json
         | 
| @@ -65,6 +65,7 @@ files: | |
| 65 65 | 
             
            - lib/xsr/client.rb
         | 
| 66 66 | 
             
            - lib/xsr/response.rb
         | 
| 67 67 | 
             
            - makefile
         | 
| 68 | 
            +
            - test/client_ssl_test.rb
         | 
| 68 69 | 
             
            - test/client_test.rb
         | 
| 69 70 | 
             
            - test/helper.rb
         | 
| 70 71 | 
             
            - test/response_test.rb
         |