kirk 0.2.0.beta.1-java → 0.2.0.beta.2-java

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/README.md CHANGED
@@ -94,6 +94,73 @@ Use your OS features. For example, write an upstart script or use
94
94
 
95
95
  Kirk just dumps logs to stdout, so just pipe Kirk to `logger`.
96
96
 
97
+ ### Kirk::Client - For all your HTTP needs
98
+
99
+ Need to make one off HTTP requests?
100
+
101
+ resp = Kirk::Client.get 'http://www.google.com'
102
+ puts resp.body
103
+
104
+ That was cool, but I wouldn't recommending doing that in your Rails app.
105
+ Following is the more advanced API.
106
+
107
+ First, create an instance of Kirk::Client. This object is thread-safe (or at
108
+ least it should be) and will manage your connection pool. Any connection that
109
+ can be kept alive will be stored by Kirk::Client and reused on subsequent requests.
110
+
111
+ MY_CLIENT = Kirk::Client.new
112
+
113
+ Next, you'll want to implement a class to handle the responses. Just implement
114
+ any method that you want to use.
115
+
116
+ class MyHandler
117
+ # Handle exceptions
118
+ def on_exception(exception)
119
+ end
120
+
121
+ # The request to the server has finished, but the
122
+ # server has not responded yet.
123
+ def on_request_complete
124
+ end
125
+
126
+ # The server has finished sending the response header
127
+ def on_response_head(response)
128
+ puts "STATUS: #{response.status}"
129
+ response.headers.each do |name, val|
130
+ puts " #{name}: #{val}"
131
+ end
132
+ end
133
+
134
+ # The server is sending the response body. This method could
135
+ # be called multiple times depending on the number of chunks
136
+ # that are received.
137
+ #
138
+ # Also, if this method is implemented, the response body won't
139
+ # be buffered in the response object.
140
+ def on_response_body(response, chunk)
141
+ # response.body == nil
142
+ print chunk
143
+ end
144
+
145
+ def on_response_complete(response)
146
+ puts "The response has been received"
147
+ end
148
+ end
149
+
150
+ Now, you can start making the requests.
151
+
152
+ MY_CLIENT.group do |g|
153
+
154
+ # All of these requests will happen in parallel.
155
+ g.get 'http://www.google.com', MyHandler.new
156
+ g.post 'http://www.twitter.com', MyHandler.new, "Some request body"
157
+ g.get 'http://www.amazon.com', nil, nil, 'X-Custom-Header' => 'Blah'
158
+
159
+ # The group will block until all of the requests are completed.
160
+ end
161
+
162
+ Hopefully that is enough to get started.
163
+
97
164
  ### Caveats
98
165
 
99
166
  This is still a pretty new project and a lot of settings that should be
@@ -73,7 +73,7 @@ module Kirk
73
73
  REMOTE_HOST => request.get_remote_host || "",
74
74
  REMOTE_ADDR => request.get_remote_addr || "",
75
75
  REMOTE_USER => request.get_remote_user || "",
76
- SERVER_PORT => request.get_server_port.to_s,
76
+ SERVER_PORT => request.get_local_port.to_s,
77
77
  RACK_VERSION => ::Rack::VERSION)
78
78
 
79
79
  # Process the content length
@@ -1,4 +1,4 @@
1
1
  module Kirk
2
2
  NAME = "kirk".freeze
3
- VERSION = "0.2.0.beta.1".freeze
3
+ VERSION = "0.2.0.beta.2".freeze
4
4
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: kirk
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: 6
5
- version: 0.2.0.beta.1
5
+ version: 0.2.0.beta.2
6
6
  platform: java
7
7
  authors:
8
8
  - Carl Lerche
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-02-23 00:00:00 -08:00
13
+ date: 2011-03-01 00:00:00 -08:00
14
14
  default_executable: kirk
15
15
  dependencies: []
16
16
 
@@ -60,7 +60,7 @@ files:
60
60
  - README.md
61
61
  - LICENSE
62
62
  has_rdoc: true
63
- homepage: http://github.com/carllerche/kirk
63
+ homepage: http://github.com/strobecorp/kirk
64
64
  licenses: []
65
65
 
66
66
  post_install_message: