sidekick-client 0.2.1 → 0.2.2

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.
Files changed (162) hide show
  1. data/VERSION +1 -1
  2. data/lib/sidekick/client/sidekick_client.rb +0 -3
  3. data/lib/sidekick/shared/sidekick_queue_publisher.rb +1 -1
  4. data/sidekick-client.gemspec +1 -158
  5. metadata +1 -158
  6. data/lib/ext/eventmachine-0.12.10/.gitignore +0 -14
  7. data/lib/ext/eventmachine-0.12.10/README +0 -82
  8. data/lib/ext/eventmachine-0.12.10/Rakefile +0 -374
  9. data/lib/ext/eventmachine-0.12.10/docs/COPYING +0 -60
  10. data/lib/ext/eventmachine-0.12.10/docs/ChangeLog +0 -211
  11. data/lib/ext/eventmachine-0.12.10/docs/DEFERRABLES +0 -133
  12. data/lib/ext/eventmachine-0.12.10/docs/EPOLL +0 -141
  13. data/lib/ext/eventmachine-0.12.10/docs/GNU +0 -281
  14. data/lib/ext/eventmachine-0.12.10/docs/INSTALL +0 -13
  15. data/lib/ext/eventmachine-0.12.10/docs/KEYBOARD +0 -38
  16. data/lib/ext/eventmachine-0.12.10/docs/LEGAL +0 -25
  17. data/lib/ext/eventmachine-0.12.10/docs/LIGHTWEIGHT_CONCURRENCY +0 -70
  18. data/lib/ext/eventmachine-0.12.10/docs/PURE_RUBY +0 -75
  19. data/lib/ext/eventmachine-0.12.10/docs/RELEASE_NOTES +0 -94
  20. data/lib/ext/eventmachine-0.12.10/docs/SMTP +0 -2
  21. data/lib/ext/eventmachine-0.12.10/docs/SPAWNED_PROCESSES +0 -89
  22. data/lib/ext/eventmachine-0.12.10/docs/TODO +0 -8
  23. data/lib/ext/eventmachine-0.12.10/eventmachine.gemspec +0 -40
  24. data/lib/ext/eventmachine-0.12.10/examples/ex_channel.rb +0 -43
  25. data/lib/ext/eventmachine-0.12.10/examples/ex_queue.rb +0 -2
  26. data/lib/ext/eventmachine-0.12.10/examples/helper.rb +0 -2
  27. data/lib/ext/eventmachine-0.12.10/ext/binder.cpp +0 -125
  28. data/lib/ext/eventmachine-0.12.10/ext/binder.h +0 -46
  29. data/lib/ext/eventmachine-0.12.10/ext/cmain.cpp +0 -827
  30. data/lib/ext/eventmachine-0.12.10/ext/cplusplus.cpp +0 -202
  31. data/lib/ext/eventmachine-0.12.10/ext/ed.cpp +0 -1893
  32. data/lib/ext/eventmachine-0.12.10/ext/ed.h +0 -424
  33. data/lib/ext/eventmachine-0.12.10/ext/em.cpp +0 -2282
  34. data/lib/ext/eventmachine-0.12.10/ext/em.h +0 -232
  35. data/lib/ext/eventmachine-0.12.10/ext/emwin.cpp +0 -300
  36. data/lib/ext/eventmachine-0.12.10/ext/emwin.h +0 -94
  37. data/lib/ext/eventmachine-0.12.10/ext/epoll.cpp +0 -26
  38. data/lib/ext/eventmachine-0.12.10/ext/epoll.h +0 -25
  39. data/lib/ext/eventmachine-0.12.10/ext/eventmachine.h +0 -122
  40. data/lib/ext/eventmachine-0.12.10/ext/eventmachine_cpp.h +0 -96
  41. data/lib/ext/eventmachine-0.12.10/ext/extconf.rb +0 -148
  42. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/extconf.rb +0 -83
  43. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/mapper.cpp +0 -214
  44. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/mapper.h +0 -59
  45. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/rubymain.cpp +0 -127
  46. data/lib/ext/eventmachine-0.12.10/ext/files.cpp +0 -94
  47. data/lib/ext/eventmachine-0.12.10/ext/files.h +0 -65
  48. data/lib/ext/eventmachine-0.12.10/ext/kb.cpp +0 -81
  49. data/lib/ext/eventmachine-0.12.10/ext/page.cpp +0 -107
  50. data/lib/ext/eventmachine-0.12.10/ext/page.h +0 -51
  51. data/lib/ext/eventmachine-0.12.10/ext/pipe.cpp +0 -349
  52. data/lib/ext/eventmachine-0.12.10/ext/project.h +0 -151
  53. data/lib/ext/eventmachine-0.12.10/ext/rubymain.cpp +0 -1166
  54. data/lib/ext/eventmachine-0.12.10/ext/sigs.cpp +0 -89
  55. data/lib/ext/eventmachine-0.12.10/ext/sigs.h +0 -32
  56. data/lib/ext/eventmachine-0.12.10/ext/ssl.cpp +0 -460
  57. data/lib/ext/eventmachine-0.12.10/ext/ssl.h +0 -94
  58. data/lib/ext/eventmachine-0.12.10/java/.classpath +0 -8
  59. data/lib/ext/eventmachine-0.12.10/java/.project +0 -17
  60. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EmReactor.java +0 -570
  61. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EmReactorException.java +0 -40
  62. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableChannel.java +0 -69
  63. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableDatagramChannel.java +0 -189
  64. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableSocketChannel.java +0 -364
  65. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Application.java +0 -194
  66. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Connection.java +0 -74
  67. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/ConnectionFactory.java +0 -37
  68. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/DefaultConnectionFactory.java +0 -46
  69. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/PeriodicTimer.java +0 -38
  70. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Timer.java +0 -54
  71. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/ApplicationTest.java +0 -109
  72. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/ConnectTest.java +0 -148
  73. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/EMTest.java +0 -80
  74. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestDatagrams.java +0 -53
  75. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestServers.java +0 -75
  76. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestTimers.java +0 -90
  77. data/lib/ext/eventmachine-0.12.10/lib/em/buftok.rb +0 -138
  78. data/lib/ext/eventmachine-0.12.10/lib/em/callback.rb +0 -26
  79. data/lib/ext/eventmachine-0.12.10/lib/em/channel.rb +0 -57
  80. data/lib/ext/eventmachine-0.12.10/lib/em/connection.rb +0 -564
  81. data/lib/ext/eventmachine-0.12.10/lib/em/deferrable.rb +0 -192
  82. data/lib/ext/eventmachine-0.12.10/lib/em/file_watch.rb +0 -54
  83. data/lib/ext/eventmachine-0.12.10/lib/em/future.rb +0 -61
  84. data/lib/ext/eventmachine-0.12.10/lib/em/messages.rb +0 -66
  85. data/lib/ext/eventmachine-0.12.10/lib/em/process_watch.rb +0 -44
  86. data/lib/ext/eventmachine-0.12.10/lib/em/processes.rb +0 -119
  87. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/header_and_content.rb +0 -138
  88. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/httpclient.rb +0 -263
  89. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/httpclient2.rb +0 -590
  90. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/line_and_text.rb +0 -125
  91. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/linetext2.rb +0 -161
  92. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/memcache.rb +0 -323
  93. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/object_protocol.rb +0 -45
  94. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/postgres3.rb +0 -247
  95. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/saslauth.rb +0 -175
  96. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/smtpclient.rb +0 -357
  97. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/smtpserver.rb +0 -547
  98. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/socks4.rb +0 -66
  99. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/stomp.rb +0 -200
  100. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/tcptest.rb +0 -53
  101. data/lib/ext/eventmachine-0.12.10/lib/em/protocols.rb +0 -36
  102. data/lib/ext/eventmachine-0.12.10/lib/em/queue.rb +0 -61
  103. data/lib/ext/eventmachine-0.12.10/lib/em/spawnable.rb +0 -85
  104. data/lib/ext/eventmachine-0.12.10/lib/em/streamer.rb +0 -130
  105. data/lib/ext/eventmachine-0.12.10/lib/em/timers.rb +0 -56
  106. data/lib/ext/eventmachine-0.12.10/lib/em/version.rb +0 -3
  107. data/lib/ext/eventmachine-0.12.10/lib/eventmachine.rb +0 -1592
  108. data/lib/ext/eventmachine-0.12.10/lib/evma/callback.rb +0 -32
  109. data/lib/ext/eventmachine-0.12.10/lib/evma/container.rb +0 -75
  110. data/lib/ext/eventmachine-0.12.10/lib/evma/factory.rb +0 -77
  111. data/lib/ext/eventmachine-0.12.10/lib/evma/protocol.rb +0 -87
  112. data/lib/ext/eventmachine-0.12.10/lib/evma/reactor.rb +0 -48
  113. data/lib/ext/eventmachine-0.12.10/lib/evma.rb +0 -32
  114. data/lib/ext/eventmachine-0.12.10/lib/jeventmachine.rb +0 -257
  115. data/lib/ext/eventmachine-0.12.10/lib/pr_eventmachine.rb +0 -1022
  116. data/lib/ext/eventmachine-0.12.10/setup.rb +0 -1585
  117. data/lib/ext/eventmachine-0.12.10/tasks/cpp.rake_example +0 -77
  118. data/lib/ext/eventmachine-0.12.10/tests/client.crt +0 -31
  119. data/lib/ext/eventmachine-0.12.10/tests/client.key +0 -51
  120. data/lib/ext/eventmachine-0.12.10/tests/test_attach.rb +0 -126
  121. data/lib/ext/eventmachine-0.12.10/tests/test_basic.rb +0 -284
  122. data/lib/ext/eventmachine-0.12.10/tests/test_channel.rb +0 -63
  123. data/lib/ext/eventmachine-0.12.10/tests/test_connection_count.rb +0 -35
  124. data/lib/ext/eventmachine-0.12.10/tests/test_defer.rb +0 -47
  125. data/lib/ext/eventmachine-0.12.10/tests/test_epoll.rb +0 -160
  126. data/lib/ext/eventmachine-0.12.10/tests/test_error_handler.rb +0 -35
  127. data/lib/ext/eventmachine-0.12.10/tests/test_errors.rb +0 -82
  128. data/lib/ext/eventmachine-0.12.10/tests/test_exc.rb +0 -55
  129. data/lib/ext/eventmachine-0.12.10/tests/test_file_watch.rb +0 -49
  130. data/lib/ext/eventmachine-0.12.10/tests/test_futures.rb +0 -198
  131. data/lib/ext/eventmachine-0.12.10/tests/test_get_sock_opt.rb +0 -30
  132. data/lib/ext/eventmachine-0.12.10/tests/test_handler_check.rb +0 -37
  133. data/lib/ext/eventmachine-0.12.10/tests/test_hc.rb +0 -218
  134. data/lib/ext/eventmachine-0.12.10/tests/test_httpclient.rb +0 -218
  135. data/lib/ext/eventmachine-0.12.10/tests/test_httpclient2.rb +0 -153
  136. data/lib/ext/eventmachine-0.12.10/tests/test_inactivity_timeout.rb +0 -50
  137. data/lib/ext/eventmachine-0.12.10/tests/test_kb.rb +0 -60
  138. data/lib/ext/eventmachine-0.12.10/tests/test_ltp.rb +0 -182
  139. data/lib/ext/eventmachine-0.12.10/tests/test_ltp2.rb +0 -317
  140. data/lib/ext/eventmachine-0.12.10/tests/test_next_tick.rb +0 -133
  141. data/lib/ext/eventmachine-0.12.10/tests/test_object_protocol.rb +0 -37
  142. data/lib/ext/eventmachine-0.12.10/tests/test_pause.rb +0 -70
  143. data/lib/ext/eventmachine-0.12.10/tests/test_pending_connect_timeout.rb +0 -48
  144. data/lib/ext/eventmachine-0.12.10/tests/test_process_watch.rb +0 -48
  145. data/lib/ext/eventmachine-0.12.10/tests/test_processes.rb +0 -128
  146. data/lib/ext/eventmachine-0.12.10/tests/test_proxy_connection.rb +0 -92
  147. data/lib/ext/eventmachine-0.12.10/tests/test_pure.rb +0 -125
  148. data/lib/ext/eventmachine-0.12.10/tests/test_queue.rb +0 -44
  149. data/lib/ext/eventmachine-0.12.10/tests/test_running.rb +0 -42
  150. data/lib/ext/eventmachine-0.12.10/tests/test_sasl.rb +0 -72
  151. data/lib/ext/eventmachine-0.12.10/tests/test_send_file.rb +0 -242
  152. data/lib/ext/eventmachine-0.12.10/tests/test_servers.rb +0 -76
  153. data/lib/ext/eventmachine-0.12.10/tests/test_smtpclient.rb +0 -83
  154. data/lib/ext/eventmachine-0.12.10/tests/test_smtpserver.rb +0 -85
  155. data/lib/ext/eventmachine-0.12.10/tests/test_spawn.rb +0 -322
  156. data/lib/ext/eventmachine-0.12.10/tests/test_ssl_args.rb +0 -79
  157. data/lib/ext/eventmachine-0.12.10/tests/test_ssl_methods.rb +0 -50
  158. data/lib/ext/eventmachine-0.12.10/tests/test_ssl_verify.rb +0 -82
  159. data/lib/ext/eventmachine-0.12.10/tests/test_timers.rb +0 -162
  160. data/lib/ext/eventmachine-0.12.10/tests/test_ud.rb +0 -36
  161. data/lib/ext/eventmachine-0.12.10/tests/testem.rb +0 -31
  162. data/lib/ext/eventmachine-0.12.10/web/whatis +0 -7
@@ -1,263 +0,0 @@
1
- #--
2
- #
3
- # Author:: Francis Cianfrocca (gmail: blackhedd)
4
- # Homepage:: http://rubyeventmachine.com
5
- # Date:: 16 July 2006
6
- #
7
- # See EventMachine and EventMachine::Connection for documentation and
8
- # usage examples.
9
- #
10
- #----------------------------------------------------------------------------
11
- #
12
- # Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
13
- # Gmail: blackhedd
14
- #
15
- # This program is free software; you can redistribute it and/or modify
16
- # it under the terms of either: 1) the GNU General Public License
17
- # as published by the Free Software Foundation; either version 2 of the
18
- # License, or (at your option) any later version; or 2) Ruby's License.
19
- #
20
- # See the file COPYING for complete licensing information.
21
- #
22
- #---------------------------------------------------------------------------
23
- #
24
- #
25
-
26
-
27
-
28
- module EventMachine
29
- module Protocols
30
-
31
- # === Usage
32
- #
33
- # EventMachine.run {
34
- # http = EventMachine::Protocols::HttpClient.request(
35
- # :host => server,
36
- # :port => 80,
37
- # :request => "/index.html",
38
- # :query_string => "parm1=value1&parm2=value2"
39
- # )
40
- # http.callback {|response|
41
- # puts response[:status]
42
- # puts response[:headers]
43
- # puts response[:content]
44
- # }
45
- # }
46
- #--
47
- # TODO:
48
- # Add streaming so we can support enormous POSTs. Current max is 20meg.
49
- # Timeout for connections that run too long or hang somewhere in the middle.
50
- # Persistent connections (HTTP/1.1), may need a associated delegate object.
51
- # DNS: Some way to cache DNS lookups for hostnames we connect to. Ruby's
52
- # DNS lookups are unbelievably slow.
53
- # HEAD requests.
54
- # Chunked transfer encoding.
55
- # Convenience methods for requests. get, post, url, etc.
56
- # SSL.
57
- # Handle status codes like 304, 100, etc.
58
- # Refactor this code so that protocol errors all get handled one way (an exception?),
59
- # instead of sprinkling set_deferred_status :failed calls everywhere.
60
- class HttpClient < Connection
61
- include EventMachine::Deferrable
62
-
63
- MaxPostContentLength = 20 * 1024 * 1024
64
-
65
- # === Arg list
66
- # :host => 'ip/dns', :port => fixnum, :verb => 'GET', :request => 'path',
67
- # :basic_auth => {:username => '', :password => ''}, :content => 'content',
68
- # :contenttype => 'text/plain', :query_string => '', :host_header => '',
69
- # :cookie => ''
70
- def self.request( args = {} )
71
- args[:port] ||= 80
72
- EventMachine.connect( args[:host], args[:port], self ) {|c|
73
- # According to the docs, we will get here AFTER post_init is called.
74
- c.instance_eval {@args = args}
75
- }
76
- end
77
-
78
- def post_init
79
- @start_time = Time.now
80
- @data = ""
81
- @read_state = :base
82
- end
83
-
84
- # We send the request when we get a connection.
85
- # AND, we set an instance variable to indicate we passed through here.
86
- # That allows #unbind to know whether there was a successful connection.
87
- # NB: This naive technique won't work when we have to support multiple
88
- # requests on a single connection.
89
- def connection_completed
90
- @connected = true
91
- send_request @args
92
- end
93
-
94
- def send_request args
95
- args[:verb] ||= args[:method] # Support :method as an alternative to :verb.
96
- args[:verb] ||= :get # IS THIS A GOOD IDEA, to default to GET if nothing was specified?
97
-
98
- verb = args[:verb].to_s.upcase
99
- unless ["GET", "POST", "PUT", "DELETE", "HEAD"].include?(verb)
100
- set_deferred_status :failed, {:status => 0} # TODO, not signalling the error type
101
- return # NOTE THE EARLY RETURN, we're not sending any data.
102
- end
103
-
104
- request = args[:request] || "/"
105
- unless request[0,1] == "/"
106
- request = "/" + request
107
- end
108
-
109
- qs = args[:query_string] || ""
110
- if qs.length > 0 and qs[0,1] != '?'
111
- qs = "?" + qs
112
- end
113
-
114
- version = args[:version] || "1.1"
115
-
116
- # Allow an override for the host header if it's not the connect-string.
117
- host = args[:host_header] || args[:host] || "_"
118
- # For now, ALWAYS tuck in the port string, although we may want to omit it if it's the default.
119
- port = args[:port]
120
-
121
- # POST items.
122
- postcontenttype = args[:contenttype] || "application/octet-stream"
123
- postcontent = args[:content] || ""
124
- raise "oversized content in HTTP POST" if postcontent.length > MaxPostContentLength
125
-
126
- # ESSENTIAL for the request's line-endings to be CRLF, not LF. Some servers misbehave otherwise.
127
- # TODO: We ASSUME the caller wants to send a 1.1 request. May not be a good assumption.
128
- req = [
129
- "#{verb} #{request}#{qs} HTTP/#{version}",
130
- "Host: #{host}:#{port}",
131
- "User-agent: Ruby EventMachine",
132
- ]
133
-
134
- if verb == "POST" || verb == "PUT"
135
- req << "Content-type: #{postcontenttype}"
136
- req << "Content-length: #{postcontent.length}"
137
- end
138
-
139
- # TODO, this cookie handler assumes it's getting a single, semicolon-delimited string.
140
- # Eventually we will want to deal intelligently with arrays and hashes.
141
- if args[:cookie]
142
- req << "Cookie: #{args[:cookie]}"
143
- end
144
-
145
- # Basic-auth stanza contributed by Matt Murphy.
146
- if args[:basic_auth]
147
- basic_auth_string = ["#{args[:basic_auth][:username]}:#{args[:basic_auth][:password]}"].pack('m').strip.gsub(/\n/,'')
148
- req << "Authorization: Basic #{basic_auth_string}"
149
- end
150
-
151
- req << ""
152
- reqstring = req.map {|l| "#{l}\r\n"}.join
153
- send_data reqstring
154
-
155
- if verb == "POST" || verb == "PUT"
156
- send_data postcontent
157
- end
158
- end
159
-
160
-
161
- def receive_data data
162
- while data and data.length > 0
163
- case @read_state
164
- when :base
165
- # Perform any per-request initialization here and don't consume any data.
166
- @data = ""
167
- @headers = []
168
- @content_length = nil # not zero
169
- @content = ""
170
- @status = nil
171
- @read_state = :header
172
- @connection_close = nil
173
- when :header
174
- ary = data.split( /\r?\n/m, 2 )
175
- if ary.length == 2
176
- data = ary.last
177
- if ary.first == ""
178
- if (@content_length and @content_length > 0) || @connection_close
179
- @read_state = :content
180
- else
181
- dispatch_response
182
- @read_state = :base
183
- end
184
- else
185
- @headers << ary.first
186
- if @headers.length == 1
187
- parse_response_line
188
- elsif ary.first =~ /\Acontent-length:\s*/i
189
- # Only take the FIRST content-length header that appears,
190
- # which we can distinguish because @content_length is nil.
191
- # TODO, it's actually a fatal error if there is more than one
192
- # content-length header, because the caller is presumptively
193
- # a bad guy. (There is an exploit that depends on multiple
194
- # content-length headers.)
195
- @content_length ||= $'.to_i
196
- elsif ary.first =~ /\Aconnection:\s*close/i
197
- @connection_close = true
198
- end
199
- end
200
- else
201
- @data << data
202
- data = ""
203
- end
204
- when :content
205
- # If there was no content-length header, we have to wait until the connection
206
- # closes. Everything we get until that point is content.
207
- # TODO: Must impose a content-size limit, and also must implement chunking.
208
- # Also, must support either temporary files for large content, or calling
209
- # a content-consumer block supplied by the user.
210
- if @content_length
211
- bytes_needed = @content_length - @content.length
212
- @content += data[0, bytes_needed]
213
- data = data[bytes_needed..-1] || ""
214
- if @content_length == @content.length
215
- dispatch_response
216
- @read_state = :base
217
- end
218
- else
219
- @content << data
220
- data = ""
221
- end
222
- end
223
- end
224
- end
225
-
226
-
227
- # We get called here when we have received an HTTP response line.
228
- # It's an opportunity to throw an exception or trigger other exceptional
229
- # handling.
230
- def parse_response_line
231
- if @headers.first =~ /\AHTTP\/1\.[01] ([\d]{3})/
232
- @status = $1.to_i
233
- else
234
- set_deferred_status :failed, {
235
- :status => 0 # crappy way of signifying an unrecognized response. TODO, find a better way to do this.
236
- }
237
- close_connection
238
- end
239
- end
240
- private :parse_response_line
241
-
242
- def dispatch_response
243
- @read_state = :base
244
- set_deferred_status :succeeded, {
245
- :content => @content,
246
- :headers => @headers,
247
- :status => @status
248
- }
249
- # TODO, we close the connection for now, but this is wrong for persistent clients.
250
- close_connection
251
- end
252
-
253
- def unbind
254
- if !@connected
255
- set_deferred_status :failed, {:status => 0} # YECCCCH. Find a better way to signal no-connect/network error.
256
- elsif (@read_state == :content and @content_length == nil)
257
- dispatch_response
258
- end
259
- end
260
- end
261
-
262
- end
263
- end