strelka 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,8 +1,42 @@
1
+ 2012-11-02 Michael Granger <ged@FaerieMUD.org>
2
+
3
+ * lib/strelka/app/parameters.rb, lib/strelka/app/restresources.rb,
4
+ lib/strelka/mixins.rb, lib/strelka/paramvalidator.rb,
5
+ lib/strelka/plugins.rb, spec/strelka/paramvalidator_spec.rb:
6
+ Rewrite ParamValidator to simplify, remove dependency on
7
+ FormValidator.
8
+ [49716850bd29] [github/master, tip]
9
+
10
+ 2012-11-02 Mahlon E. Smith <mahlon@martini.nu>
11
+
12
+ * lib/strelka/httprequest.rb, spec/strelka/httprequest_spec.rb:
13
+ Allow entity-bodies for HTTP verbs that don't explicitly forbid them
14
+ in RFC.
15
+ [a733dfe529a4]
16
+
17
+ 2012-10-23 Michael Granger <ged@FaerieMUD.org>
18
+
19
+ * .hgtags:
20
+ Added tag v0.0.3 for changeset d30a7dfea73a
21
+ [a0f594ed081c]
22
+
23
+ * .hgsigs:
24
+ Added signature for changeset 4cb76b1531ef
25
+ [d30a7dfea73a] [v0.0.3]
26
+
27
+ * History.rdoc, lib/strelka.rb:
28
+ Bump patch version, update history.
29
+ [4cb76b1531ef]
30
+
31
+ * lib/strelka/app.rb, spec/strelka/app_spec.rb:
32
+ Fix the template-path auto-discovery for some configurations.
33
+ [a4e246d895cf]
34
+
1
35
  2012-10-17 Michael Granger <ged@FaerieMUD.org>
2
36
 
3
37
  * .hgtags:
4
38
  Added tag v0.0.2 for changeset f4507caebfb7
5
- [e163f60cfa3d] [tip]
39
+ [e163f60cfa3d]
6
40
 
7
41
  * .hgsigs:
8
42
  Added signature for changeset 485638c9ec10
@@ -122,7 +156,7 @@
122
156
 
123
157
  * lib/strelka/authprovider.rb, spec/strelka/authprovider_spec.rb:
124
158
  Fix the documentation and specs for AuthProvider#authorize.
125
- [accb655c57b4]
159
+ [accb655c57b4] [github/master@default]
126
160
 
127
161
  2012-10-03 Michael Granger <ged@FaerieMUD.org>
128
162
 
data/History.rdoc CHANGED
@@ -1,3 +1,12 @@
1
+ == v0.1.0 [2012-11-02] Michael Granger <ged@FaerieMUD.org>
2
+
3
+ - Add --version to the command line tool
4
+ - Fix some documentation
5
+ - Rewrite ParamValidator to simplify, remove dependency on FormValidator.
6
+ - Allow entity-bodies for HTTP verbs that don't explicitly forbid them
7
+ in RFC.
8
+
9
+
1
10
  == v0.0.3 [2012-10-23] Michael Granger <ged@FaerieMUD.org>
2
11
 
3
12
  - Fix the template-path auto-discovery for some configurations.
data/bin/strelka CHANGED
@@ -103,6 +103,7 @@ class Strelka::CLICommand
103
103
 
104
104
  @option_parser = Trollop::Parser.new do
105
105
  banner "Manage Strelka apps"
106
+ version( Strelka.version_string(true) )
106
107
 
107
108
  text ''
108
109
  command_table.each {|line| text(line) }
@@ -95,6 +95,7 @@ module Strelka::App::Parameters
95
95
  ### Strelka::ParamValidator.
96
96
  def param( name, *args )
97
97
  self.log.debug "New param %p" % [ name ]
98
+ self.log.debug " adding parameter %p to %p" % [ name, self.paramvalidator ]
98
99
  self.paramvalidator.add( name, *args )
99
100
  end
100
101
 
@@ -112,6 +113,7 @@ module Strelka::App::Parameters
112
113
  def inherited( subclass )
113
114
  super
114
115
  subclass.instance_variable_set( :@paramvalidator, self.paramvalidator.dup )
116
+ self.log.debug "Adding param validator: %p" % [ self.paramvalidator ]
115
117
  end
116
118
 
117
119
  end # module ClassMethods
@@ -324,7 +324,7 @@ module Strelka::App::RestResources
324
324
  finish_with( HTTP::NOT_FOUND, "no such %s [%p]" % [ rsrcobj.name, id ] )
325
325
 
326
326
  newvals = req.params.valid
327
- newvals.delete( pkey.to_s )
327
+ newvals.delete( pkey.to_sym )
328
328
  self.log.debug "Updating %p with new values: %p" % [ resource, newvals ]
329
329
 
330
330
  begin
@@ -126,7 +126,8 @@ class Strelka::HTTPRequest < Mongrel2::HTTPRequest
126
126
 
127
127
 
128
128
  ### Parse the request parameters and return them as a Hash. For GET requests, these are
129
- ### take from the query arguments, and for POST requests, from the
129
+ ### taken from the query arguments. For requests that commonly
130
+ ### contain an entity-body, try and parse that.
130
131
  ###
131
132
  ### # For a handler with a route of '/user', for the request:
132
133
  ### # "GET /user/1/profile?checkbox=1&checkbox=2&text=foo HTTP/1.1"
@@ -139,8 +140,10 @@ class Strelka::HTTPRequest < Mongrel2::HTTPRequest
139
140
  @params = self.parse_query_args
140
141
  when :POST, :PUT
141
142
  @params = self.parse_form_data
143
+ when :TRACE
144
+ self.log.debug "No parameters for a TRACE request."
142
145
  else
143
- self.log.debug "No parameters for a %s request." % [ self.verb ]
146
+ @params = self.parse_form_data if self.content_type
144
147
  end
145
148
  end
146
149
 
@@ -218,6 +218,43 @@ module Strelka
218
218
  hash[ key ] = Hash.new( &Strelka::DataUtilities.method(:autovivify) )
219
219
  end
220
220
 
221
+
222
+ ### Return a version of the given +hash+ with its keys transformed
223
+ ### into Strings from whatever they were before.
224
+ def stringify_keys( hash )
225
+ newhash = {}
226
+
227
+ hash.each do |key,val|
228
+ if val.is_a?( Hash )
229
+ newhash[ key.to_s ] = stringify_keys( val )
230
+ else
231
+ newhash[ key.to_s ] = val
232
+ end
233
+ end
234
+
235
+ return newhash
236
+ end
237
+
238
+
239
+ ### Return a duplicate of the given +hash+ with its identifier-like keys
240
+ ### transformed into symbols from whatever they were before.
241
+ def symbolify_keys( hash )
242
+ newhash = {}
243
+
244
+ hash.each do |key,val|
245
+ keysym = key.to_s.dup.untaint.to_sym
246
+
247
+ if val.is_a?( Hash )
248
+ newhash[ keysym ] = symbolify_keys( val )
249
+ else
250
+ newhash[ keysym ] = val
251
+ end
252
+ end
253
+
254
+ return newhash
255
+ end
256
+ alias_method :internify_keys, :symbolify_keys
257
+
221
258
  end # module DataUtilities
222
259
 
223
260
 
@@ -268,6 +305,23 @@ module Strelka
268
305
  end
269
306
 
270
307
 
308
+ ### Create a reader in the form of a predicate for the given +attrname+.
309
+ def attr_predicate( attrname )
310
+ attrname = attrname.to_s.chomp( '?' )
311
+ define_method( "#{attrname}?" ) do
312
+ instance_variable_get( "@#{attrname}" ) ? true : false
313
+ end
314
+ end
315
+
316
+
317
+ ### Create a reader in the form of a predicate for the given +attrname+
318
+ ### as well as a regular writer method.
319
+ def attr_predicate_accessor( attrname )
320
+ attrname = attrname.to_s.chomp( '?' )
321
+ attr_writer( attrname )
322
+ attr_predicate( attrname )
323
+ end
324
+
271
325
  end # module MethodUtilities
272
326
 
273
327