rest_engine 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 ADDED
@@ -0,0 +1,55 @@
1
+ rest_engine
2
+ ===========
3
+
4
+ rest_engine is a Rails 3 engine that provide your Rails application a restful API
5
+
6
+ Installation
7
+ ------------
8
+
9
+ In your `Gemfile`, add the following dependencies:
10
+
11
+ gem 'rest_engine'
12
+
13
+ Run:
14
+
15
+ $ bundle install
16
+
17
+ That's it. It will provide a restful API for your models.
18
+
19
+ Usage
20
+ -----
21
+
22
+ Start the server:
23
+
24
+ $ rails server
25
+
26
+ Let's say you have a model `Customer`, you should now be able to access your customers:
27
+
28
+ * To get a list of customers: `GET http://localhost:3000/api/customers`
29
+ * To get a single customer: `GET http://localhost:3000/api/customers/1`
30
+ * To create a new customer: `POST http://localhost:3000/api/customers`
31
+ * To update a customer: `PUT http://localhost:3000/api/customers/1`
32
+ * To delete a customer: `DELETE http://localhost:3000/api/customers/1`
33
+
34
+ It also support namespaced model. For example if your model is `Product::Toy`, then the url would be: `http://localhost:3000/api/product/toys`
35
+
36
+ Or, to see the available routes:
37
+
38
+ $ rake routes
39
+
40
+ Contributing to rest_engine
41
+ ---------------------------
42
+
43
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
44
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
45
+ * Fork the project
46
+ * Start a feature/bugfix branch
47
+ * Commit and push until you are happy with your contribution
48
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
49
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
50
+
51
+ Copyright
52
+ ---------
53
+
54
+ Copyright (c) 2011 Yehezkiel Syamsuhadi. See LICENSE.txt for
55
+ further details.
@@ -16,12 +16,12 @@ module RestEngine
16
16
 
17
17
  items = @model.all(options)
18
18
 
19
- respond(:success => true, :data => items)
19
+ respond(:success => true, @resources => items)
20
20
  end
21
21
 
22
22
  def show
23
23
  item = @model.find(params[:id])
24
- respond(:success => true, :data => item)
24
+ respond(:success => true, @resources => [item])
25
25
  end
26
26
 
27
27
  def destroy
@@ -36,7 +36,7 @@ module RestEngine
36
36
  def create
37
37
  item = @model.new(request.POST)
38
38
  if item.save
39
- respond(:success => true, :message => "Created new #{@model_name} #{item.id}", :data => item)
39
+ respond(:success => true, :message => "Created new #{@model_name} #{item.id}", @resources => [item])
40
40
  else
41
41
  respond(:success => false, :message => "Failed to create #{@model_name}")
42
42
  end
@@ -45,7 +45,7 @@ module RestEngine
45
45
  def update
46
46
  item = @model.find(params[:id])
47
47
  if item.update_attributes(request.POST)
48
- respond(:success => true, :message => "Updated #{@model_name} #{item.id}", :data => item)
48
+ respond(:success => true, :message => "Updated #{@model_name} #{item.id}", @resources => [item])
49
49
  else
50
50
  respond(:success => false, :message => "Failed to update #{@model_name}")
51
51
  end
@@ -61,13 +61,9 @@ module RestEngine
61
61
  end
62
62
 
63
63
  def get_model
64
- @model_name = to_model_name(params[:resources])
64
+ @resources = params[:resources]
65
+ @model_name = @resources.classify
65
66
  @model = @model_name.constantize
66
67
  end
67
-
68
- def to_model_name(resources_name)
69
- parts = resources_name.split('~')
70
- parts.map { |x| x == parts.last ? x.classify : x.camelize }.join('::')
71
- end
72
68
  end
73
69
  end
data/config/routes.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  Rails.application.routes.draw do
2
2
  scope 'api', :as => 'rest_engine' do
3
3
  controller 'rest_engine/main' do
4
- get '/:resources', :to => :list, :as => 'list'
5
- post '/:resources', :to => :create, :as => 'create'
6
- get '/:resources/:id', :to => :show, :as => 'show'
7
- put '/:resources/:id', :to => :update, :as => 'update'
8
- delete '/:resources/:id', :to => :destroy, :as => 'destroy'
4
+ get '/*resources/:id(.:format)', :to => :show, :as => 'show', :constraints => { :id => /\d+/ }
5
+ put '/*resources/:id(.:format)', :to => :update, :as => 'update', :constraints => { :id => /\d+/ }
6
+ delete '/*resources/:id(.:format)', :to => :destroy, :as => 'destroy', :constraints => { :id => /\d+/ }
7
+ get '/:resources(.:format)', :to => :list, :as => 'list', :constraints => { :resources => /.+?/ }
8
+ post '/:resources(.:format)', :to => :create, :as => 'create', :constraints => { :resources => /.+?/ }
9
9
  end
10
10
  end
11
11
  end
metadata CHANGED
@@ -1,153 +1,147 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rest_engine
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
4
5
  prerelease:
5
- version: 0.0.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Yehezkiel Syamsuhadi
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-06-25 00:00:00 +10:00
12
+ date: 2011-07-21 00:00:00.000000000 +10:00
14
13
  default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
17
16
  name: rails
18
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &2159038320 !ruby/object:Gem::Requirement
19
18
  none: false
20
- requirements:
19
+ requirements:
21
20
  - - ~>
22
- - !ruby/object:Gem::Version
21
+ - !ruby/object:Gem::Version
23
22
  version: 3.0.9
24
23
  type: :development
25
24
  prerelease: false
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
25
+ version_requirements: *2159038320
26
+ - !ruby/object:Gem::Dependency
28
27
  name: sqlite3
29
- requirement: &id002 !ruby/object:Gem::Requirement
28
+ requirement: &2159037780 !ruby/object:Gem::Requirement
30
29
  none: false
31
- requirements:
30
+ requirements:
32
31
  - - ~>
33
- - !ruby/object:Gem::Version
32
+ - !ruby/object:Gem::Version
34
33
  version: 1.3.3
35
34
  type: :development
36
35
  prerelease: false
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
36
+ version_requirements: *2159037780
37
+ - !ruby/object:Gem::Dependency
39
38
  name: rspec
40
- requirement: &id003 !ruby/object:Gem::Requirement
39
+ requirement: &2159037180 !ruby/object:Gem::Requirement
41
40
  none: false
42
- requirements:
41
+ requirements:
43
42
  - - ~>
44
- - !ruby/object:Gem::Version
43
+ - !ruby/object:Gem::Version
45
44
  version: 2.3.0
46
45
  type: :development
47
46
  prerelease: false
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
47
+ version_requirements: *2159037180
48
+ - !ruby/object:Gem::Dependency
50
49
  name: rspec-rails
51
- requirement: &id004 !ruby/object:Gem::Requirement
50
+ requirement: &2159036660 !ruby/object:Gem::Requirement
52
51
  none: false
53
- requirements:
52
+ requirements:
54
53
  - - ~>
55
- - !ruby/object:Gem::Version
54
+ - !ruby/object:Gem::Version
56
55
  version: 2.3.1
57
56
  type: :development
58
57
  prerelease: false
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
58
+ version_requirements: *2159036660
59
+ - !ruby/object:Gem::Dependency
61
60
  name: bundler
62
- requirement: &id005 !ruby/object:Gem::Requirement
61
+ requirement: &2159003540 !ruby/object:Gem::Requirement
63
62
  none: false
64
- requirements:
63
+ requirements:
65
64
  - - ~>
66
- - !ruby/object:Gem::Version
65
+ - !ruby/object:Gem::Version
67
66
  version: 1.0.15
68
67
  type: :development
69
68
  prerelease: false
70
- version_requirements: *id005
71
- - !ruby/object:Gem::Dependency
69
+ version_requirements: *2159003540
70
+ - !ruby/object:Gem::Dependency
72
71
  name: jeweler
73
- requirement: &id006 !ruby/object:Gem::Requirement
72
+ requirement: &2159003060 !ruby/object:Gem::Requirement
74
73
  none: false
75
- requirements:
74
+ requirements:
76
75
  - - ~>
77
- - !ruby/object:Gem::Version
76
+ - !ruby/object:Gem::Version
78
77
  version: 1.6.2
79
78
  type: :development
80
79
  prerelease: false
81
- version_requirements: *id006
82
- - !ruby/object:Gem::Dependency
80
+ version_requirements: *2159003060
81
+ - !ruby/object:Gem::Dependency
83
82
  name: rcov
84
- requirement: &id007 !ruby/object:Gem::Requirement
83
+ requirement: &2159002580 !ruby/object:Gem::Requirement
85
84
  none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: "0"
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
90
89
  type: :development
91
90
  prerelease: false
92
- version_requirements: *id007
93
- - !ruby/object:Gem::Dependency
91
+ version_requirements: *2159002580
92
+ - !ruby/object:Gem::Dependency
94
93
  name: factory_girl
95
- requirement: &id008 !ruby/object:Gem::Requirement
94
+ requirement: &2159002100 !ruby/object:Gem::Requirement
96
95
  none: false
97
- requirements:
96
+ requirements:
98
97
  - - ~>
99
- - !ruby/object:Gem::Version
98
+ - !ruby/object:Gem::Version
100
99
  version: 1.3.3
101
100
  type: :development
102
101
  prerelease: false
103
- version_requirements: *id008
102
+ version_requirements: *2159002100
104
103
  description:
105
104
  email: yehezkielbs@gmail.com
106
105
  executables: []
107
-
108
106
  extensions: []
109
-
110
- extra_rdoc_files:
107
+ extra_rdoc_files:
111
108
  - LICENSE.txt
112
- - README.rdoc
113
- files:
109
+ - README.md
110
+ files:
114
111
  - app/controllers/rest_engine/application_controller.rb
115
112
  - app/controllers/rest_engine/main_controller.rb
116
113
  - config/routes.rb
117
114
  - lib/rest_engine.rb
118
115
  - lib/rest_engine/engine.rb
119
116
  - LICENSE.txt
120
- - README.rdoc
117
+ - README.md
121
118
  has_rdoc: true
122
119
  homepage: http://github.com/yehezkielbs/rest_engine
123
- licenses:
120
+ licenses:
124
121
  - MIT
125
122
  post_install_message:
126
123
  rdoc_options: []
127
-
128
- require_paths:
124
+ require_paths:
129
125
  - lib
130
- required_ruby_version: !ruby/object:Gem::Requirement
126
+ required_ruby_version: !ruby/object:Gem::Requirement
131
127
  none: false
132
- requirements:
133
- - - ">="
134
- - !ruby/object:Gem::Version
135
- hash: -2714594228656389374
136
- segments:
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ segments:
137
133
  - 0
138
- version: "0"
139
- required_rubygems_version: !ruby/object:Gem::Requirement
134
+ hash: 1271305889267693870
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
140
136
  none: false
141
- requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
144
- version: "0"
137
+ requirements:
138
+ - - ! '>='
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
145
141
  requirements: []
146
-
147
142
  rubyforge_project:
148
143
  rubygems_version: 1.6.2
149
144
  signing_key:
150
145
  specification_version: 3
151
- summary: A Rails 3 Engine to provide a restful API
146
+ summary: A Rails 3 engine that provide your Rails application a restful API
152
147
  test_files: []
153
-
data/README.rdoc DELETED
@@ -1,19 +0,0 @@
1
- = rest_engine
2
-
3
- Description goes here.
4
-
5
- == Contributing to rest_engine
6
-
7
- * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
8
- * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
9
- * Fork the project
10
- * Start a feature/bugfix branch
11
- * Commit and push until you are happy with your contribution
12
- * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
13
- * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
14
-
15
- == Copyright
16
-
17
- Copyright (c) 2011 Yehezkiel Syamsuhadi. See LICENSE.txt for
18
- further details.
19
-