igrigorik-em-http-request 0.1.6 → 0.1.7
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/em-http-request.gemspec +1 -1
- data/lib/em-http/client.rb +13 -6
- data/test/stallion.rb +3 -0
- data/test/test_request.rb +26 -0
- metadata +1 -1
    
        data/em-http-request.gemspec
    CHANGED
    
    
    
        data/lib/em-http/client.rb
    CHANGED
    
    | @@ -171,6 +171,9 @@ module EventMachine | |
| 171 171 |  | 
| 172 172 | 
             
                # start HTTP request once we establish connection to host
         | 
| 173 173 | 
             
                def connection_completed
         | 
| 174 | 
            +
                  ssl = @options[:tls] || @options[:ssl] || {}
         | 
| 175 | 
            +
                  start_tls(ssl) if @uri.scheme == "https" or @uri.port == 443
         | 
| 176 | 
            +
             | 
| 174 177 | 
             
                  send_request_header
         | 
| 175 178 | 
             
                  send_request_body
         | 
| 176 179 | 
             
                end
         | 
| @@ -191,10 +194,18 @@ module EventMachine | |
| 191 194 | 
             
                  unbind
         | 
| 192 195 | 
             
                end
         | 
| 193 196 |  | 
| 197 | 
            +
                def normalize_body
         | 
| 198 | 
            +
                  if @options[:body].is_a? Hash
         | 
| 199 | 
            +
                    @options[:body].to_params
         | 
| 200 | 
            +
                  else
         | 
| 201 | 
            +
                    @options[:body]
         | 
| 202 | 
            +
                  end
         | 
| 203 | 
            +
                end
         | 
| 204 | 
            +
             | 
| 194 205 | 
             
                def send_request_header
         | 
| 195 206 | 
             
                  query   = @options[:query]
         | 
| 196 207 | 
             
                  head    = @options[:head] ? munge_header_keys(@options[:head]) : {}
         | 
| 197 | 
            -
                  body    =  | 
| 208 | 
            +
                  body    = normalize_body
         | 
| 198 209 |  | 
| 199 210 | 
             
                  # Set the Host header if it hasn't been specified already
         | 
| 200 211 | 
             
                  head['host'] ||= encode_host
         | 
| @@ -220,11 +231,7 @@ module EventMachine | |
| 220 231 |  | 
| 221 232 | 
             
                def send_request_body
         | 
| 222 233 | 
             
                  return unless @options[:body]
         | 
| 223 | 
            -
                   | 
| 224 | 
            -
                    body = @options[:body].to_params
         | 
| 225 | 
            -
                  else
         | 
| 226 | 
            -
                    body = @options[:body]
         | 
| 227 | 
            -
                  end
         | 
| 234 | 
            +
                  body = normalize_body
         | 
| 228 235 | 
             
                  send_data body
         | 
| 229 236 | 
             
                end
         | 
| 230 237 |  | 
    
        data/test/stallion.rb
    CHANGED
    
    | @@ -80,6 +80,9 @@ Stallion.saddle :spec do |stable| | |
| 80 80 | 
             
                elsif stable.request.path_info == '/echo_query'
         | 
| 81 81 | 
             
                  stable.response.write stable.request.query_string
         | 
| 82 82 |  | 
| 83 | 
            +
                elsif stable.request.path_info == '/echo_content_length'
         | 
| 84 | 
            +
                  stable.response.write stable.request.content_length
         | 
| 85 | 
            +
             | 
| 83 86 | 
             
                elsif stable.request.post?
         | 
| 84 87 | 
             
                  stable.response.write stable.request.body.read
         | 
| 85 88 |  | 
    
        data/test/test_request.rb
    CHANGED
    
    | @@ -145,6 +145,20 @@ describe EventMachine::HttpRequest do | |
| 145 145 | 
             
                  }
         | 
| 146 146 | 
             
                }
         | 
| 147 147 | 
             
              end
         | 
| 148 | 
            +
              
         | 
| 149 | 
            +
              it "should perform successfull POST with Ruby Hash/Array as params and with the correct content length" do
         | 
| 150 | 
            +
                EventMachine.run {
         | 
| 151 | 
            +
                  http = EventMachine::HttpRequest.new('http://127.0.0.1:8080/echo_content_length').post :body => {"key1" => "data1"}
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                  http.errback { failed }
         | 
| 154 | 
            +
                  http.callback {
         | 
| 155 | 
            +
                    http.response_header.status.should == 200
         | 
| 156 | 
            +
                    
         | 
| 157 | 
            +
                    http.response.to_i.should == 10
         | 
| 158 | 
            +
                    EventMachine.stop
         | 
| 159 | 
            +
                  }
         | 
| 160 | 
            +
                }
         | 
| 161 | 
            +
              end
         | 
| 148 162 |  | 
| 149 163 | 
             
              it "should perform successfull GET with custom header" do
         | 
| 150 164 | 
             
                EventMachine.run {
         | 
| @@ -277,4 +291,16 @@ describe EventMachine::HttpRequest do | |
| 277 291 | 
             
                }
         | 
| 278 292 | 
             
              end
         | 
| 279 293 |  | 
| 294 | 
            +
              it "should initiate SSL/TLS on HTTPS connections" do
         | 
| 295 | 
            +
                EventMachine.run {
         | 
| 296 | 
            +
                  http = EventMachine::HttpRequest.new('https://mail.google.com:443/mail/').get
         | 
| 297 | 
            +
             | 
| 298 | 
            +
                  http.errback { failed }
         | 
| 299 | 
            +
                  http.callback {
         | 
| 300 | 
            +
                    http.response_header.status.should == 302
         | 
| 301 | 
            +
                    EventMachine.stop
         | 
| 302 | 
            +
                  }
         | 
| 303 | 
            +
                }
         | 
| 304 | 
            +
              end
         | 
| 305 | 
            +
             | 
| 280 306 | 
             
            end
         |