em-http-request 0.2.4 → 0.2.5
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.
Potentially problematic release.
This version of em-http-request might be problematic. Click here for more details.
- data/.gitignore +4 -0
- data/README.rdoc +20 -1
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/em-http/client.rb +88 -37
- data/lib/em-http/request.rb +16 -8
- data/test/stallion.rb +67 -6
- data/test/test_multi.rb +1 -1
- data/test/test_request.rb +49 -2
- metadata +5 -4
- data/ext/http11_client/Makefile +0 -157
- data/ext/http11_client/http11_client.bundle +0 -0
data/.gitignore
ADDED
data/README.rdoc
CHANGED
@@ -59,13 +59,23 @@ Screencast / Demo of using EM-HTTP-Request:
|
|
59
59
|
http.errback { failed }
|
60
60
|
http.callback {
|
61
61
|
p http.response_header
|
62
|
+
EventMachine.stop
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
== OAuth example
|
62
67
|
|
68
|
+
EventMachine.run {
|
69
|
+
http = EventMachine::HttpRequest.new('http://www.website.com/').get :head => {'authorization' => 'OAuth oauth_nonce=...'}
|
70
|
+
http.errback { failed }
|
71
|
+
http.callback {
|
72
|
+
p http.response_header
|
63
73
|
EventMachine.stop
|
64
74
|
}
|
65
75
|
}
|
66
76
|
|
67
|
-
== POST example
|
68
77
|
|
78
|
+
== POST example
|
69
79
|
EventMachine.run {
|
70
80
|
http1 = EventMachine::HttpRequest.new('http://www.website.com/').post :body => {"key1" => 1, "key2" => [2,3]}
|
71
81
|
http2 = EventMachine::HttpRequest.new('http://www.website.com/').post :body => "some data"
|
@@ -80,3 +90,12 @@ Screencast / Demo of using EM-HTTP-Request:
|
|
80
90
|
|
81
91
|
# ...
|
82
92
|
}
|
93
|
+
|
94
|
+
== Proxy example
|
95
|
+
EventMachine.run {
|
96
|
+
http1 = EventMachine::HttpRequest.new('http://www.website.com/').get :proxy => {
|
97
|
+
:host => 'www.myproxy.com',
|
98
|
+
:port => 8080,
|
99
|
+
:authorization => ['username', 'password'] # authorization is optional
|
100
|
+
}
|
101
|
+
|
data/Rakefile
CHANGED
@@ -97,7 +97,7 @@ begin
|
|
97
97
|
gemspec.add_dependency('eventmachine', '>= 0.12.9')
|
98
98
|
gemspec.add_dependency('addressable', '>= 2.0.0')
|
99
99
|
gemspec.rubyforge_project = "em-http-request"
|
100
|
-
gemspec.files = FileList[
|
100
|
+
gemspec.files = FileList[`git ls-files`.split]
|
101
101
|
end
|
102
102
|
|
103
103
|
Jeweler::GemcutterTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.5
|
data/lib/em-http/client.rb
CHANGED
@@ -39,7 +39,7 @@ module EventMachine
|
|
39
39
|
# Length of content as an integer, or nil if chunked/unspecified
|
40
40
|
def content_length
|
41
41
|
@content_length ||= ((s = self[HttpClient::CONTENT_LENGTH]) &&
|
42
|
-
|
42
|
+
(s =~ /^(\d+)$/)) ? $1.to_i : nil
|
43
43
|
end
|
44
44
|
|
45
45
|
# Cookie header from the server
|
@@ -80,7 +80,6 @@ module EventMachine
|
|
80
80
|
module HttpEncoding
|
81
81
|
HTTP_REQUEST_HEADER="%s %s HTTP/1.1\r\n"
|
82
82
|
FIELD_ENCODING = "%s: %s\r\n"
|
83
|
-
BASIC_AUTH_ENCODING = "%s: Basic %s\r\n"
|
84
83
|
|
85
84
|
# Escapes a URI.
|
86
85
|
def escape(s)
|
@@ -141,18 +140,25 @@ module EventMachine
|
|
141
140
|
end
|
142
141
|
|
143
142
|
# Encode basic auth in an HTTP header
|
144
|
-
|
145
|
-
|
143
|
+
# In: Array ([user, pass]) - for basic auth
|
144
|
+
# String - custom auth string (OAuth, etc)
|
145
|
+
def encode_auth(k,v)
|
146
|
+
if v.is_a? Array
|
147
|
+
FIELD_ENCODING % [k, ["Basic", Base64.encode64(v.join(":")).chomp].join(" ")]
|
148
|
+
else
|
149
|
+
encode_field(k,v)
|
150
|
+
end
|
146
151
|
end
|
147
152
|
|
148
153
|
def encode_headers(head)
|
149
154
|
head.inject('') do |result, (key, value)|
|
150
155
|
# Munge keys from foo-bar-baz to Foo-Bar-Baz
|
151
|
-
key = key.split('-').map { |k| k.capitalize }.join('-')
|
152
|
-
|
153
|
-
|
156
|
+
key = key.split('-').map { |k| k.to_s.capitalize }.join('-')
|
157
|
+
result << case key
|
158
|
+
when 'Authorization', 'Proxy-authorization'
|
159
|
+
encode_auth(key, value)
|
154
160
|
else
|
155
|
-
|
161
|
+
encode_field(key, value)
|
156
162
|
end
|
157
163
|
end
|
158
164
|
end
|
@@ -185,24 +191,35 @@ module EventMachine
|
|
185
191
|
def post_init
|
186
192
|
@parser = HttpClientParser.new
|
187
193
|
@data = EventMachine::Buffer.new
|
188
|
-
@response_header = HttpResponseHeader.new
|
189
194
|
@chunk_header = HttpChunkHeader.new
|
190
|
-
|
191
|
-
@state = :response_header
|
195
|
+
@response_header = HttpResponseHeader.new
|
192
196
|
@parser_nbytes = 0
|
193
197
|
@response = ''
|
194
198
|
@errors = ''
|
195
199
|
@content_decoder = nil
|
196
200
|
@stream = nil
|
201
|
+
@state = :response_header
|
197
202
|
end
|
198
203
|
|
199
204
|
# start HTTP request once we establish connection to host
|
200
|
-
def connection_completed
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
205
|
+
def connection_completed
|
206
|
+
# if connecting to proxy, then first negotiate the connection
|
207
|
+
# to intermediate server and wait for 200 response
|
208
|
+
if @options[:proxy] and @state == :response_header
|
209
|
+
@state = :response_proxy
|
210
|
+
send_request_header
|
211
|
+
|
212
|
+
# if connecting via proxy, then state will be :proxy_connected,
|
213
|
+
# indicating successful tunnel. from here, initiate normal http
|
214
|
+
# exchange
|
215
|
+
else
|
216
|
+
@state = :response_header
|
217
|
+
|
218
|
+
ssl = @options[:tls] || @options[:ssl] || {}
|
219
|
+
start_tls(ssl) if @uri.scheme == "https" or @uri.port == 443
|
220
|
+
send_request_header
|
221
|
+
send_request_body
|
222
|
+
end
|
206
223
|
end
|
207
224
|
|
208
225
|
# request is done, invoke the callback
|
@@ -236,36 +253,46 @@ module EventMachine
|
|
236
253
|
@options[:body]
|
237
254
|
end
|
238
255
|
end
|
239
|
-
|
256
|
+
|
240
257
|
def send_request_header
|
241
258
|
query = @options[:query]
|
242
259
|
head = @options[:head] ? munge_header_keys(@options[:head]) : {}
|
243
260
|
body = normalize_body
|
261
|
+
request_header = nil
|
244
262
|
|
245
|
-
|
246
|
-
|
263
|
+
if @state == :response_proxy
|
264
|
+
proxy = @options[:proxy]
|
247
265
|
|
248
|
-
|
249
|
-
|
266
|
+
# initialize headers to establish the HTTP tunnel
|
267
|
+
head = proxy[:head] ? munge_header_keys(proxy[:head]) : {}
|
268
|
+
head['proxy-authorization'] = proxy[:authorization] if proxy[:authorization]
|
269
|
+
request_header = HTTP_REQUEST_HEADER % ['CONNECT', "#{@uri.host}:#{@uri.port}"]
|
250
270
|
|
251
|
-
|
252
|
-
|
271
|
+
else
|
272
|
+
# Set the Content-Length if body is given
|
273
|
+
head['content-length'] = body.length if body
|
253
274
|
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
275
|
+
# Set the cookie header if provided
|
276
|
+
if cookie = head.delete('cookie')
|
277
|
+
head['cookie'] = encode_cookie(cookie)
|
278
|
+
end
|
258
279
|
|
259
|
-
|
260
|
-
|
261
|
-
|
280
|
+
# Set content-type header if missing and body is a Ruby hash
|
281
|
+
if not head['content-type'] and options[:body].is_a? Hash
|
282
|
+
head['content-type'] = "application/x-www-form-urlencoded"
|
283
|
+
end
|
262
284
|
end
|
263
285
|
|
264
|
-
|
265
|
-
|
286
|
+
# Set the Host header if it hasn't been specified already
|
287
|
+
head['host'] ||= encode_host
|
288
|
+
|
289
|
+
# Set the User-Agent if it hasn't been specified
|
290
|
+
head['user-agent'] ||= "EventMachine HttpClient"
|
291
|
+
|
292
|
+
# Build the request headers
|
293
|
+
request_header ||= encode_request(@method, @uri.path, query, @uri.query)
|
266
294
|
request_header << encode_headers(head)
|
267
295
|
request_header << CRLF
|
268
|
-
|
269
296
|
send_data request_header
|
270
297
|
end
|
271
298
|
|
@@ -303,7 +330,7 @@ module EventMachine
|
|
303
330
|
|
304
331
|
def unbind
|
305
332
|
if @state == :finished || (@state == :body && @bytes_remaining.nil?)
|
306
|
-
succeed(self)
|
333
|
+
succeed(self)
|
307
334
|
else
|
308
335
|
fail(self)
|
309
336
|
end
|
@@ -316,6 +343,8 @@ module EventMachine
|
|
316
343
|
|
317
344
|
def dispatch
|
318
345
|
while case @state
|
346
|
+
when :response_proxy
|
347
|
+
parse_response_proxy
|
319
348
|
when :response_header
|
320
349
|
parse_response_header
|
321
350
|
when :chunk_header
|
@@ -354,6 +383,28 @@ module EventMachine
|
|
354
383
|
|
355
384
|
true
|
356
385
|
end
|
386
|
+
|
387
|
+
# TODO: refactor with parse_response_header
|
388
|
+
def parse_response_proxy
|
389
|
+
return false unless parse_header(@response_header)
|
390
|
+
|
391
|
+
unless @response_header.http_status and @response_header.http_reason
|
392
|
+
@state = :invalid
|
393
|
+
on_error "no HTTP response"
|
394
|
+
return false
|
395
|
+
end
|
396
|
+
|
397
|
+
# when a successfull tunnel is established, the proxy responds with a
|
398
|
+
# 200 response code. from here, the tunnel is transparent.
|
399
|
+
if @response_header.http_status.to_i == 200
|
400
|
+
@response_header = HttpResponseHeader.new
|
401
|
+
connection_completed
|
402
|
+
else
|
403
|
+
@state = :invalid
|
404
|
+
on_error "proxy not accessible"
|
405
|
+
return false
|
406
|
+
end
|
407
|
+
end
|
357
408
|
|
358
409
|
def parse_response_header
|
359
410
|
return false unless parse_header(@response_header)
|
@@ -378,7 +429,7 @@ module EventMachine
|
|
378
429
|
end
|
379
430
|
end
|
380
431
|
|
381
|
-
# shortcircuit on HEAD requests
|
432
|
+
# shortcircuit on HEAD requests
|
382
433
|
if @method == "HEAD"
|
383
434
|
@state = :finished
|
384
435
|
on_request_complete
|
@@ -388,7 +439,7 @@ module EventMachine
|
|
388
439
|
@state = :chunk_header
|
389
440
|
elsif @response_header.content_length
|
390
441
|
@state = :body
|
391
|
-
@bytes_remaining = @response_header.content_length
|
442
|
+
@bytes_remaining = @response_header.content_length
|
392
443
|
else
|
393
444
|
@state = :body
|
394
445
|
@bytes_remaining = nil
|
data/lib/em-http/request.rb
CHANGED
@@ -9,7 +9,6 @@ module EventMachine
|
|
9
9
|
#
|
10
10
|
# == Example
|
11
11
|
#
|
12
|
-
#
|
13
12
|
# EventMachine.run {
|
14
13
|
# http = EventMachine::HttpRequest.new('http://127.0.0.1/').get :query => {'keyname' => 'value'}
|
15
14
|
#
|
@@ -58,22 +57,31 @@ module EventMachine
|
|
58
57
|
|
59
58
|
def setup_request(method, options)
|
60
59
|
raise ArgumentError, "invalid request path" unless /^\// === @uri.path
|
61
|
-
|
62
60
|
@options = options
|
61
|
+
|
62
|
+
if proxy = options[:proxy]
|
63
|
+
@host_to_connect = proxy[:host]
|
64
|
+
@port_to_connect = proxy[:port]
|
65
|
+
else
|
66
|
+
@host_to_connect = @uri.host
|
67
|
+
@port_to_connect = @uri.port
|
68
|
+
end
|
69
|
+
|
70
|
+
# default connect & inactivity timeouts
|
71
|
+
@options[:timeout] = 10 if not @options[:timeout]
|
63
72
|
|
64
|
-
#
|
65
|
-
|
66
|
-
|
67
|
-
# Make sure the port is set as Addressable::URI doesn't set the
|
68
|
-
# port if it isn't there.
|
73
|
+
# Make sure the ports are set as Addressable::URI doesn't
|
74
|
+
# set the port if it isn't there
|
69
75
|
@uri.port ||= 80
|
76
|
+
@port_to_connect ||= 80
|
77
|
+
|
70
78
|
@method = method.to_s.upcase
|
71
79
|
send_request
|
72
80
|
end
|
73
81
|
|
74
82
|
def send_request
|
75
83
|
begin
|
76
|
-
EventMachine.connect(@
|
84
|
+
EventMachine.connect(@host_to_connect, @port_to_connect, EventMachine::HttpClient) { |c|
|
77
85
|
c.uri = @uri
|
78
86
|
c.method = @method
|
79
87
|
c.options = @options
|
data/test/stallion.rb
CHANGED
@@ -127,15 +127,19 @@ Stallion.saddle :spec do |stable|
|
|
127
127
|
stable.response.status = 304
|
128
128
|
|
129
129
|
elsif stable.request.env["HTTP_AUTHORIZATION"]
|
130
|
-
|
131
|
-
|
132
|
-
if auth == stable.request.env["HTTP_AUTHORIZATION"]
|
130
|
+
if stable.request.path_info == '/oauth_auth'
|
133
131
|
stable.response.status = 200
|
134
|
-
stable.response.write
|
132
|
+
stable.response.write stable.request.env["HTTP_AUTHORIZATION"]
|
135
133
|
else
|
136
|
-
|
137
|
-
end
|
134
|
+
auth = "Basic %s" % Base64.encode64(['user', 'pass'].join(':')).chomp
|
138
135
|
|
136
|
+
if auth == stable.request.env["HTTP_AUTHORIZATION"]
|
137
|
+
stable.response.status = 200
|
138
|
+
stable.response.write 'success'
|
139
|
+
else
|
140
|
+
stable.response.status = 401
|
141
|
+
end
|
142
|
+
end
|
139
143
|
elsif stable.request.path_info == '/relative-location'
|
140
144
|
stable.response.status = 301
|
141
145
|
stable.response["Location"] = '/forwarded'
|
@@ -155,4 +159,61 @@ Thread.new do
|
|
155
159
|
end
|
156
160
|
end
|
157
161
|
|
162
|
+
#
|
163
|
+
# HTTP Proxy server
|
164
|
+
#
|
165
|
+
Thread.new do
|
166
|
+
server = TCPServer.new('127.0.0.1', 8082)
|
167
|
+
loop do
|
168
|
+
session = server.accept
|
169
|
+
request = ""
|
170
|
+
while (data = session.gets) != "\r\n"
|
171
|
+
request << data
|
172
|
+
end
|
173
|
+
parts = request.split("\r\n")
|
174
|
+
method, destination, http_version = parts.first.split(' ')
|
175
|
+
if method == 'CONNECT'
|
176
|
+
target_host, target_port = destination.split(':')
|
177
|
+
client = TCPSocket.open(target_host, target_port)
|
178
|
+
session.write "HTTP/1.1 200 Connection established\r\nProxy-agent: Whatever\r\n\r\n"
|
179
|
+
session.flush
|
180
|
+
|
181
|
+
content_length = -1
|
182
|
+
verb = ""
|
183
|
+
req = ""
|
184
|
+
|
185
|
+
while data = session.gets
|
186
|
+
if request = data.match(/(\w+).*HTTP\/1\.1/)
|
187
|
+
verb = request[1]
|
188
|
+
end
|
189
|
+
|
190
|
+
if post = data.match(/Content-Length: (\d+)/)
|
191
|
+
content_length = post[1].to_i
|
192
|
+
end
|
193
|
+
|
194
|
+
req += data
|
195
|
+
|
196
|
+
# read POST data
|
197
|
+
if data == "\r\n" and verb == "POST"
|
198
|
+
req += session.read(content_length)
|
199
|
+
end
|
200
|
+
|
201
|
+
if data == "\r\n"
|
202
|
+
client.write req
|
203
|
+
client.flush
|
204
|
+
client.close_write
|
205
|
+
break
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
while data = client.gets
|
210
|
+
session.write data
|
211
|
+
end
|
212
|
+
session.flush
|
213
|
+
client.close
|
214
|
+
end
|
215
|
+
session.close
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
158
219
|
sleep(1)
|
data/test/test_multi.rb
CHANGED
@@ -11,7 +11,7 @@ describe EventMachine::MultiRequest do
|
|
11
11
|
|
12
12
|
# add multiple requests to the multi-handler
|
13
13
|
multi.add(EventMachine::HttpRequest.new('http://127.0.0.1:8080/').get(:query => {:q => 'test'}))
|
14
|
-
multi.add(EventMachine::HttpRequest.new('http://0.0.0.0:
|
14
|
+
multi.add(EventMachine::HttpRequest.new('http://0.0.0.0:8083/').get(:timeout => 1))
|
15
15
|
|
16
16
|
multi.callback {
|
17
17
|
# verify successfull request
|
data/test/test_request.rb
CHANGED
@@ -223,7 +223,7 @@ describe EventMachine::HttpRequest do
|
|
223
223
|
http = EventMachine::HttpRequest.new('http://digg.com/').get
|
224
224
|
|
225
225
|
http.errback { failed }
|
226
|
-
http.callback {
|
226
|
+
http.callback {
|
227
227
|
http.response_header.status.should == 200
|
228
228
|
EventMachine.stop
|
229
229
|
}
|
@@ -242,6 +242,20 @@ describe EventMachine::HttpRequest do
|
|
242
242
|
}
|
243
243
|
}
|
244
244
|
end
|
245
|
+
|
246
|
+
it "should send proper OAuth auth header" do
|
247
|
+
EventMachine.run {
|
248
|
+
oauth_header = 'OAuth oauth_nonce="oqwgSYFUD87MHmJJDv7bQqOF2EPnVus7Wkqj5duNByU", b=c, d=e'
|
249
|
+
http = EventMachine::HttpRequest.new('http://127.0.0.1:8080/oauth_auth').get :head => {'authorization' => oauth_header}
|
250
|
+
|
251
|
+
http.errback { failed }
|
252
|
+
http.callback {
|
253
|
+
http.response_header.status.should == 200
|
254
|
+
http.response.should == oauth_header
|
255
|
+
EventMachine.stop
|
256
|
+
}
|
257
|
+
}
|
258
|
+
end
|
245
259
|
|
246
260
|
it "should work with keep-alive servers" do
|
247
261
|
EventMachine.run {
|
@@ -472,5 +486,38 @@ describe EventMachine::HttpRequest do
|
|
472
486
|
EventMachine.stop
|
473
487
|
}
|
474
488
|
}
|
489
|
+
end
|
490
|
+
|
491
|
+
context "connections via proxy" do
|
492
|
+
|
493
|
+
it "should work with proxy servers" do
|
494
|
+
EventMachine.run {
|
495
|
+
|
496
|
+
http = EventMachine::HttpRequest.new('http://127.0.0.1:8080/').get :proxy => {:host => '127.0.0.1', :port => 8082}
|
497
|
+
|
498
|
+
http.errback { p http.inspect; failed }
|
499
|
+
http.callback {
|
500
|
+
http.response_header.status.should == 200
|
501
|
+
http.response.should == 'Hello, World!'
|
502
|
+
EventMachine.stop
|
503
|
+
}
|
504
|
+
}
|
505
|
+
end
|
506
|
+
|
507
|
+
it "should proxy POST data" do
|
508
|
+
EventMachine.run {
|
509
|
+
|
510
|
+
http = EventMachine::HttpRequest.new('http://127.0.0.1:8080/').post({
|
511
|
+
:body => "data", :proxy => {:host => '127.0.0.1', :port => 8082}})
|
512
|
+
|
513
|
+
http.errback { failed }
|
514
|
+
http.callback {
|
515
|
+
http.response_header.status.should == 200
|
516
|
+
http.response.should match(/data/)
|
517
|
+
EventMachine.stop
|
518
|
+
}
|
519
|
+
}
|
520
|
+
end
|
521
|
+
|
475
522
|
end
|
476
|
-
end
|
523
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: em-http-request
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ilya Grigorik
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-12 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -43,16 +43,17 @@ extra_rdoc_files:
|
|
43
43
|
- LICENSE
|
44
44
|
- README.rdoc
|
45
45
|
files:
|
46
|
+
- .gitignore
|
46
47
|
- LICENSE
|
47
48
|
- README.rdoc
|
48
49
|
- Rakefile
|
49
50
|
- VERSION
|
51
|
+
- examples/fetch.rb
|
52
|
+
- examples/fibered-http.rb
|
50
53
|
- ext/buffer/em_buffer.c
|
51
54
|
- ext/buffer/extconf.rb
|
52
|
-
- ext/http11_client/Makefile
|
53
55
|
- ext/http11_client/ext_help.h
|
54
56
|
- ext/http11_client/extconf.rb
|
55
|
-
- ext/http11_client/http11_client.bundle
|
56
57
|
- ext/http11_client/http11_client.c
|
57
58
|
- ext/http11_client/http11_parser.c
|
58
59
|
- ext/http11_client/http11_parser.h
|
data/ext/http11_client/Makefile
DELETED
@@ -1,157 +0,0 @@
|
|
1
|
-
|
2
|
-
SHELL = /bin/sh
|
3
|
-
|
4
|
-
#### Start of system configuration section. ####
|
5
|
-
|
6
|
-
srcdir = .
|
7
|
-
topdir = /opt/local/lib/ruby/1.8/i686-darwin10
|
8
|
-
hdrdir = $(topdir)
|
9
|
-
VPATH = $(srcdir):$(topdir):$(hdrdir)
|
10
|
-
exec_prefix = $(prefix)
|
11
|
-
prefix = $(DESTDIR)/opt/local
|
12
|
-
sharedstatedir = $(prefix)/com
|
13
|
-
mandir = $(DESTDIR)/opt/local/share/man
|
14
|
-
psdir = $(docdir)
|
15
|
-
oldincludedir = $(DESTDIR)/usr/include
|
16
|
-
localedir = $(datarootdir)/locale
|
17
|
-
bindir = $(exec_prefix)/bin
|
18
|
-
libexecdir = $(exec_prefix)/libexec
|
19
|
-
sitedir = $(libdir)/ruby/site_ruby
|
20
|
-
htmldir = $(docdir)
|
21
|
-
vendorarchdir = $(vendorlibdir)/$(sitearch)
|
22
|
-
includedir = $(prefix)/include
|
23
|
-
infodir = $(datarootdir)/info
|
24
|
-
vendorlibdir = $(vendordir)/$(ruby_version)
|
25
|
-
sysconfdir = $(prefix)/etc
|
26
|
-
libdir = $(exec_prefix)/lib
|
27
|
-
sbindir = $(exec_prefix)/sbin
|
28
|
-
rubylibdir = $(libdir)/ruby/$(ruby_version)
|
29
|
-
docdir = $(datarootdir)/doc/$(PACKAGE)
|
30
|
-
dvidir = $(docdir)
|
31
|
-
vendordir = $(DESTDIR)/opt/local/lib/ruby/vendor_ruby
|
32
|
-
datarootdir = $(prefix)/share
|
33
|
-
pdfdir = $(docdir)
|
34
|
-
archdir = $(rubylibdir)/$(arch)
|
35
|
-
sitearchdir = $(sitelibdir)/$(sitearch)
|
36
|
-
datadir = $(datarootdir)
|
37
|
-
localstatedir = $(prefix)/var
|
38
|
-
sitelibdir = $(sitedir)/$(ruby_version)
|
39
|
-
|
40
|
-
CC = /usr/bin/gcc-4.2
|
41
|
-
LIBRUBY = $(LIBRUBY_SO)
|
42
|
-
LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
|
43
|
-
LIBRUBYARG_SHARED = -l$(RUBY_SO_NAME)
|
44
|
-
LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static
|
45
|
-
|
46
|
-
RUBY_EXTCONF_H =
|
47
|
-
CFLAGS = -fno-common -O2 -arch x86_64 -fno-common -pipe -fno-common $(cflags) -arch x86_64
|
48
|
-
INCFLAGS = -I. -I. -I/opt/local/lib/ruby/1.8/i686-darwin10 -I.
|
49
|
-
DEFS =
|
50
|
-
CPPFLAGS = -I/opt/local/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/opt/local/include
|
51
|
-
CXXFLAGS = $(CFLAGS)
|
52
|
-
ldflags = -L. -L/opt/local/lib
|
53
|
-
dldflags =
|
54
|
-
archflag = -arch x86_64
|
55
|
-
DLDFLAGS = $(ldflags) $(dldflags) $(archflag)
|
56
|
-
LDSHARED = $(CC) -dynamic -bundle -undefined suppress -flat_namespace
|
57
|
-
AR = ar
|
58
|
-
EXEEXT =
|
59
|
-
|
60
|
-
RUBY_INSTALL_NAME = ruby
|
61
|
-
RUBY_SO_NAME = ruby
|
62
|
-
arch = i686-darwin10
|
63
|
-
sitearch = i686-darwin10
|
64
|
-
ruby_version = 1.8
|
65
|
-
ruby = /opt/local/bin/ruby
|
66
|
-
RUBY = $(ruby)
|
67
|
-
RM = rm -f
|
68
|
-
MAKEDIRS = mkdir -p
|
69
|
-
INSTALL = /usr/bin/install -c
|
70
|
-
INSTALL_PROG = $(INSTALL) -m 0755
|
71
|
-
INSTALL_DATA = $(INSTALL) -m 644
|
72
|
-
COPY = cp
|
73
|
-
|
74
|
-
#### End of system configuration section. ####
|
75
|
-
|
76
|
-
preload =
|
77
|
-
|
78
|
-
libpath = . $(libdir)
|
79
|
-
LIBPATH = -L. -L$(libdir)
|
80
|
-
DEFFILE =
|
81
|
-
|
82
|
-
CLEANFILES = mkmf.log
|
83
|
-
DISTCLEANFILES =
|
84
|
-
|
85
|
-
extout =
|
86
|
-
extout_prefix =
|
87
|
-
target_prefix =
|
88
|
-
LOCAL_LIBS =
|
89
|
-
LIBS = $(LIBRUBYARG_SHARED) -lc -lpthread -ldl -lobjc
|
90
|
-
SRCS = http11_client.c http11_parser.c
|
91
|
-
OBJS = http11_client.o http11_parser.o
|
92
|
-
TARGET = http11_client
|
93
|
-
DLLIB = $(TARGET).bundle
|
94
|
-
EXTSTATIC =
|
95
|
-
STATIC_LIB =
|
96
|
-
|
97
|
-
BINDIR = $(bindir)
|
98
|
-
RUBYCOMMONDIR = $(sitedir)$(target_prefix)
|
99
|
-
RUBYLIBDIR = $(sitelibdir)$(target_prefix)
|
100
|
-
RUBYARCHDIR = $(sitearchdir)$(target_prefix)
|
101
|
-
|
102
|
-
TARGET_SO = $(DLLIB)
|
103
|
-
CLEANLIBS = $(TARGET).bundle $(TARGET).il? $(TARGET).tds $(TARGET).map
|
104
|
-
CLEANOBJS = *.o *.a *.s[ol] *.pdb *.exp *.bak
|
105
|
-
|
106
|
-
all: $(DLLIB)
|
107
|
-
static: $(STATIC_LIB)
|
108
|
-
|
109
|
-
clean:
|
110
|
-
@-$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)
|
111
|
-
|
112
|
-
distclean: clean
|
113
|
-
@-$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
|
114
|
-
@-$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
|
115
|
-
|
116
|
-
realclean: distclean
|
117
|
-
install: install-so install-rb
|
118
|
-
|
119
|
-
install-so: $(RUBYARCHDIR)
|
120
|
-
install-so: $(RUBYARCHDIR)/$(DLLIB)
|
121
|
-
$(RUBYARCHDIR)/$(DLLIB): $(DLLIB)
|
122
|
-
$(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
|
123
|
-
install-rb: pre-install-rb install-rb-default
|
124
|
-
install-rb-default: pre-install-rb-default
|
125
|
-
pre-install-rb: Makefile
|
126
|
-
pre-install-rb-default: Makefile
|
127
|
-
$(RUBYARCHDIR):
|
128
|
-
$(MAKEDIRS) $@
|
129
|
-
|
130
|
-
site-install: site-install-so site-install-rb
|
131
|
-
site-install-so: install-so
|
132
|
-
site-install-rb: install-rb
|
133
|
-
|
134
|
-
.SUFFIXES: .c .m .cc .cxx .cpp .C .o
|
135
|
-
|
136
|
-
.cc.o:
|
137
|
-
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
138
|
-
|
139
|
-
.cxx.o:
|
140
|
-
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
141
|
-
|
142
|
-
.cpp.o:
|
143
|
-
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
144
|
-
|
145
|
-
.C.o:
|
146
|
-
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
147
|
-
|
148
|
-
.c.o:
|
149
|
-
$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) -c $<
|
150
|
-
|
151
|
-
$(DLLIB): $(OBJS) Makefile
|
152
|
-
@-$(RM) $@
|
153
|
-
$(LDSHARED) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
$(OBJS): ruby.h defines.h
|
Binary file
|