emmy-http-client 0.1.2 → 0.1.3
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/emmy-http-client.gemspec +1 -1
- data/lib/emmy_http/client/adapter.rb +5 -0
- data/lib/emmy_http/client/client.rb +66 -47
- data/lib/emmy_http/client/version.rb +1 -1
- metadata +2 -16
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: c27535d963d40f0d17b129ab02e4cda3ac272b58
         | 
| 4 | 
            +
              data.tar.gz: 69c59bb5c7e76c3b0b8b3b3b71f37f93669d8f48
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: c65de5c246c347188b8b3fd1e58e91abbfa7bc332858d3d24cdddfb2da1ecaf47e50626908e58f647bcd15dc0a1a2d15109a5e828147dd8c5cd39c199a40edd5
         | 
| 7 | 
            +
              data.tar.gz: 56043aa98b97cd0114967e50978106d3fee22f0a967e2ea6b4e9fcb2cbc22cad0a19f9ca45156f1ebeb76c206712ee5eddce381e1b36c5abc4d6dd1d8d36f44b
         | 
    
        data/emmy-http-client.gemspec
    CHANGED
    
    | @@ -23,7 +23,7 @@ Gem::Specification.new do |spec| | |
| 23 23 | 
             
              spec.add_dependency "event_object", "~> 0.9.1"
         | 
| 24 24 | 
             
              spec.add_dependency "fibre", "~> 0.9.7"
         | 
| 25 25 | 
             
              spec.add_dependency "emmy-machine", "~> 0.1.7"
         | 
| 26 | 
            -
              spec.add_dependency "emmy-http", "~> 0.1.6"
         | 
| 26 | 
            +
              #spec.add_dependency "emmy-http", "~> 0.1.6"
         | 
| 27 27 |  | 
| 28 28 | 
             
              spec.add_development_dependency "bundler", "~> 1.9"
         | 
| 29 29 | 
             
              spec.add_development_dependency "rake", "~> 10.0"
         | 
| @@ -8,6 +8,11 @@ module EmmyHttp | |
| 8 8 | 
             
                def delegate=(operation)
         | 
| 9 9 | 
             
                  @operation = operation
         | 
| 10 10 | 
             
                  @client = Client::Client.new(operation.request, self)
         | 
| 11 | 
            +
                  # if already connected
         | 
| 12 | 
            +
                  if operation.connection
         | 
| 13 | 
            +
                    client.initialize_connection(operation.connection)
         | 
| 14 | 
            +
                    client.connect
         | 
| 15 | 
            +
                  end
         | 
| 11 16 | 
             
                end
         | 
| 12 17 |  | 
| 13 18 | 
             
                def to_a
         | 
| @@ -13,6 +13,7 @@ module EmmyHttp | |
| 13 13 | 
             
                attr_accessor :operation
         | 
| 14 14 | 
             
                attr_accessor :adapter
         | 
| 15 15 | 
             
                attr_accessor :parser
         | 
| 16 | 
            +
                attr_accessor :stop_reason
         | 
| 16 17 |  | 
| 17 18 | 
             
                attr_accessor :redirects
         | 
| 18 19 |  | 
| @@ -26,7 +27,6 @@ module EmmyHttp | |
| 26 27 | 
             
                  change_state(:idle)
         | 
| 27 28 | 
             
                end
         | 
| 28 29 |  | 
| 29 | 
            -
             | 
| 30 30 | 
             
                def initialize_connection(conn)
         | 
| 31 31 | 
             
                  @connection = conn
         | 
| 32 32 | 
             
                  @parser  = Client::Parser.new
         | 
| @@ -36,50 +36,7 @@ module EmmyHttp | |
| 36 36 | 
             
                  conn.pending_connect_timeout = request.timeouts.connect
         | 
| 37 37 | 
             
                  conn.comm_inactivity_timeout = request.timeouts.inactivity
         | 
| 38 38 |  | 
| 39 | 
            -
                  conn | 
| 40 | 
            -
                    conn.start_tls(client.request.ssl ? client.request.ssl.serializable_hash : {}) if client.request.ssl?
         | 
| 41 | 
            -
                    send_request
         | 
| 42 | 
            -
                    change_state(:wait_response)
         | 
| 43 | 
            -
                  end
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                  conn.on :data do |chunk|
         | 
| 46 | 
            -
                    begin
         | 
| 47 | 
            -
                      parser << chunk
         | 
| 48 | 
            -
                    rescue EmmyHttp::ParserError => e
         | 
| 49 | 
            -
                      conn.error!(e.message)
         | 
| 50 | 
            -
                    end
         | 
| 51 | 
            -
                  end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                  conn.on :close do
         | 
| 54 | 
            -
                    if state == :body && !client.response.content_length?
         | 
| 55 | 
            -
                      client.response.finish
         | 
| 56 | 
            -
                    end
         | 
| 57 | 
            -
             | 
| 58 | 
            -
                    if client.response && client.response.redirection?
         | 
| 59 | 
            -
                      change_state(:redirect)
         | 
| 60 | 
            -
                      client.url = URI(client.response.location)
         | 
| 61 | 
            -
                      client.response = nil
         | 
| 62 | 
            -
                      parser.reset!
         | 
| 63 | 
            -
                      operation.reconnect
         | 
| 64 | 
            -
                    end
         | 
| 65 | 
            -
             | 
| 66 | 
            -
                    if client.response && client.response.finished?
         | 
| 67 | 
            -
                      change_state(:success)
         | 
| 68 | 
            -
                      operation.success!(response, operation, connection)
         | 
| 69 | 
            -
                    end
         | 
| 70 | 
            -
                  end
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                  conn.on :error do |message|
         | 
| 73 | 
            -
                    change_state(:catch_error)
         | 
| 74 | 
            -
                  end
         | 
| 75 | 
            -
             | 
| 76 | 
            -
                  conn.on :handshake do
         | 
| 77 | 
            -
             | 
| 78 | 
            -
                  end
         | 
| 79 | 
            -
             | 
| 80 | 
            -
                  conn.on :verify_peer do
         | 
| 81 | 
            -
             | 
| 82 | 
            -
                  end
         | 
| 39 | 
            +
                  attach(conn)
         | 
| 83 40 |  | 
| 84 41 | 
             
                  parser.on :head do |headers|
         | 
| 85 42 | 
             
                    #parser.http_version
         | 
| @@ -99,12 +56,61 @@ module EmmyHttp | |
| 99 56 |  | 
| 100 57 | 
             
                  parser.on :completed do
         | 
| 101 58 | 
             
                    client.response.finish
         | 
| 102 | 
            -
                     | 
| 59 | 
            +
                    if request.keep_alive?
         | 
| 60 | 
            +
                      change_state(:success)
         | 
| 61 | 
            +
                      dettach(conn)
         | 
| 62 | 
            +
                      operation.success!(response, operation, connection)
         | 
| 63 | 
            +
                    else
         | 
| 64 | 
            +
                      client.close
         | 
| 65 | 
            +
                    end
         | 
| 103 66 | 
             
                  end
         | 
| 104 67 |  | 
| 105 68 | 
             
                  change_state(:wait_connect)
         | 
| 106 69 | 
             
                end
         | 
| 107 70 |  | 
| 71 | 
            +
                def connect
         | 
| 72 | 
            +
                  connection.start_tls(request.ssl ? request.ssl.serializable_hash : {}) if request.ssl?
         | 
| 73 | 
            +
                  send_request
         | 
| 74 | 
            +
                  change_state(:wait_response)
         | 
| 75 | 
            +
                end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                def data(chunk)
         | 
| 78 | 
            +
                  begin
         | 
| 79 | 
            +
                    parser << chunk
         | 
| 80 | 
            +
                  rescue EmmyHttp::ParserError => e
         | 
| 81 | 
            +
                    stop(e.message)
         | 
| 82 | 
            +
                  end
         | 
| 83 | 
            +
                end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                def close(reason=nil)
         | 
| 86 | 
            +
                  if stop_reason
         | 
| 87 | 
            +
                    change_state(:catch_error)
         | 
| 88 | 
            +
                    operation.error!(stop_reason)
         | 
| 89 | 
            +
                    return
         | 
| 90 | 
            +
                  end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                  if state == :body && !response.content_length?
         | 
| 93 | 
            +
                    response.finish
         | 
| 94 | 
            +
                  end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                  if response && response.redirection?
         | 
| 97 | 
            +
                    change_state(:redirect)
         | 
| 98 | 
            +
                    self.url = URI(response.location)
         | 
| 99 | 
            +
                    self.response = nil
         | 
| 100 | 
            +
                    parser.reset!
         | 
| 101 | 
            +
                    operation.reconnect
         | 
| 102 | 
            +
                  end
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                  if response && response.finished?
         | 
| 105 | 
            +
                    change_state(:success)
         | 
| 106 | 
            +
                    dettach(connection)
         | 
| 107 | 
            +
                    operation.success!(response, operation, connection)
         | 
| 108 | 
            +
                  else
         | 
| 109 | 
            +
                    change_state(:catch_error)
         | 
| 110 | 
            +
                    operation.error!('invalid response')
         | 
| 111 | 
            +
                  end
         | 
| 112 | 
            +
                end
         | 
| 113 | 
            +
             | 
| 108 114 | 
             
                def send_request
         | 
| 109 115 | 
             
                  headers = {}
         | 
| 110 116 | 
             
                  body    = prepare_body(headers)
         | 
| @@ -187,7 +193,8 @@ module EmmyHttp | |
| 187 193 | 
             
                  url.query ? '/' + url.path + '?' + url.query : '/' + url.path
         | 
| 188 194 | 
             
                end
         | 
| 189 195 |  | 
| 190 | 
            -
                def stop(reason= | 
| 196 | 
            +
                def stop(reason=nil)
         | 
| 197 | 
            +
                  @stop_reason ||= reason
         | 
| 191 198 | 
             
                  connection.close_connection if connection
         | 
| 192 199 | 
             
                end
         | 
| 193 200 |  | 
| @@ -196,6 +203,18 @@ module EmmyHttp | |
| 196 203 | 
             
                  change!(state, self)
         | 
| 197 204 | 
             
                end
         | 
| 198 205 |  | 
| 206 | 
            +
                def attach(conn)
         | 
| 207 | 
            +
                  listen conn, :connect, :connect
         | 
| 208 | 
            +
                  listen conn, :data, :data
         | 
| 209 | 
            +
                  listen conn, :close, :close
         | 
| 210 | 
            +
                end
         | 
| 211 | 
            +
             | 
| 212 | 
            +
                def dettach(conn)
         | 
| 213 | 
            +
                  stop_listen conn, :connect
         | 
| 214 | 
            +
                  stop_listen conn, :data
         | 
| 215 | 
            +
                  stop_listen conn, :close
         | 
| 216 | 
            +
                end
         | 
| 217 | 
            +
             | 
| 199 218 | 
             
                def to_a
         | 
| 200 219 | 
             
                  ["tcp://#{url.host}:#{url.port}", connection || EmmyMachine::Connection, method(:initialize_connection), self]
         | 
| 201 220 | 
             
                end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: emmy-http-client
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - inre
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-04- | 
| 11 | 
            +
            date: 2015-04-21 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: http_parser.rb
         | 
| @@ -66,20 +66,6 @@ dependencies: | |
| 66 66 | 
             
                - - "~>"
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 68 | 
             
                    version: 0.1.7
         | 
| 69 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            -
              name: emmy-http
         | 
| 71 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            -
                requirements:
         | 
| 73 | 
            -
                - - "~>"
         | 
| 74 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: 0.1.6
         | 
| 76 | 
            -
              type: :runtime
         | 
| 77 | 
            -
              prerelease: false
         | 
| 78 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            -
                requirements:
         | 
| 80 | 
            -
                - - "~>"
         | 
| 81 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: 0.1.6
         | 
| 83 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 70 | 
             
              name: bundler
         | 
| 85 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         |