rack-backend-api 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -80,6 +80,13 @@ Then if you need to delete the entry with ID 4:
80
80
 
81
81
  DELETE /admin/blog_post/4
82
82
 
83
+ The API also understands a camelcased class name:
84
+
85
+ DELETE /admin/BlogPost/4
86
+
87
+ This is my fave personally, but unfortunately it seems that windows servers are case insensitive.
88
+ Which means that if you have one, you need to stick with the under_scored names.
89
+
83
90
  To be honest, that is almost everything you need because the ORM adapter builds the forms
84
91
  and therefore use the right action and method for POST and PUT requests.
85
92
 
@@ -188,13 +195,14 @@ THANX
188
195
 
189
196
  I'd like to thank [Manveru](https://github.com/manveru), [Pistos](https://github.com/pistos) and many others on the #ramaze IRC channel for being friendly, helpful and obviously savy.
190
197
 
191
- Also I'd like to thank [Konstantine Hasse](https://github.com/rkh) for the same reasons as he helped me many times on #rack issues,
198
+ Also I'd like to thank [Konstantin Haase](https://github.com/rkh) for the same reasons as he helped me many times on #rack issues,
192
199
  and because [almost-sinatra](https://github.com/rkh/almost-sinatra) is just made with the 8 nicest lines of code to read.
193
200
 
194
201
  CHANGE LOG
195
202
  ==========
196
203
 
197
204
  0.0.1 First version
205
+ 0.0.2 Accept CamelCased class names
198
206
 
199
207
  COPYRIGHT
200
208
  =========
data/lib/backend_api.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  class BackendAPI
2
- VERSION = [0,0,1]
2
+ VERSION = [0,0,2]
3
3
  WRAP = <<-EOT
4
4
  <!doctype html>
5
5
  <html>
@@ -88,7 +88,9 @@ class BackendAPI
88
88
  end
89
89
 
90
90
  def camel_case(s)
91
- s.to_s.split('_').map{|e|e.capitalize}.join
91
+ return if s.nil?
92
+ c = s[0]
93
+ c>=65&&c<=90 ? s : s.split('_').map{|e|e.capitalize}.join
92
94
  end
93
95
 
94
96
  def save_and_respond
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'rack-backend-api'
3
- s.version = "0.0.1"
3
+ s.version = "0.0.2"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.summary = "A Rack middleware that provides a simple API for your Admin section"
6
6
  s.description = "The purpose of this Rack Middleware is to provide an API that interfaces with database actions in order to build a CMS."
data/test/db.rb CHANGED
@@ -40,6 +40,14 @@ class Pic < ::Sequel::Model
40
40
  create_table unless table_exists?
41
41
  end
42
42
 
43
+ class CamelCasedClass < ::Sequel::Model
44
+ set_schema do
45
+ primary_key :id
46
+ String :name
47
+ end
48
+ create_table unless table_exists?
49
+ end
50
+
43
51
  Haiku.create( :title=>'Autumn', :body=>"Rust the ground\nFlush the branches\nReveal the trees" )
44
52
  Haiku.create( :title=>'Winter', :body=>"There is snow\nIt covers you\nBut you are still the most beautiful" )
45
53
  Haiku.create( :title=>'Spring', :body=>"No inspiration" )
@@ -37,7 +37,17 @@ describe 'API Misc' do
37
37
  res = req_lint(BackendAPI.new(dummy_app)).get('/_version')
38
38
  res.status.should==200
39
39
  res.body.should==BackendAPI::VERSION.join('.')
40
- end
40
+ end
41
+ should "Accept CamelCased or under_scrored class names" do
42
+ # I prefer CamelCased as it only needs to be eval(ed)
43
+ # But people are used to under_scrored
44
+ # And also Windows servers are case insensitive
45
+ res1 = req_lint(BackendAPI.new).get('/CamelCasedClass')
46
+ res1.status.should==200
47
+ res2 = req_lint(BackendAPI.new).get('/camel_cased_class')
48
+ res2.status.should==200
49
+ res1.body.should==res2.body.gsub('camel_cased_class', 'CamelCasedClass')
50
+ end
41
51
  end
42
52
 
43
53
  describe 'API Post' do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-backend-api
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Mickael Riga
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-21 00:00:00 +01:00
18
+ date: 2011-07-19 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies: []
21
21