sinatra-api-helpers 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/sinatra/api/ext/string.rb +9 -0
- data/lib/sinatra/api/helpers.rb +28 -2
- data/lib/sinatra/api/version.rb +1 -1
- data/lib/sinatra-api-helpers.rb +4 -1
- data/sinatra-api-helpers.gemspec +1 -0
- data/spec/unit/helpers_spec.rb +5 -0
- metadata +19 -2
data/lib/sinatra/api/helpers.rb
CHANGED
@@ -22,6 +22,12 @@
|
|
22
22
|
module Sinatra
|
23
23
|
# TODO: accept nested parameters
|
24
24
|
module API
|
25
|
+
public
|
26
|
+
|
27
|
+
attr_accessor :resource_aliases
|
28
|
+
|
29
|
+
ResourcePrefix = '::'
|
30
|
+
|
25
31
|
module Helpers
|
26
32
|
def api_call?
|
27
33
|
(request.accept || '').to_s.include?('json') ||
|
@@ -165,10 +171,10 @@ module Sinatra
|
|
165
171
|
def __api_locate_resource(r, container = nil)
|
166
172
|
|
167
173
|
resource_id = params[r + '_id'].to_i
|
168
|
-
rklass = r.
|
174
|
+
rklass = r.camelize
|
169
175
|
|
170
176
|
collection = case
|
171
|
-
when container.nil?; eval "#{rklass}"
|
177
|
+
when container.nil?; eval "#{ResourcePrefix}#{rklass}"
|
172
178
|
else; container.send("#{r.to_plural}")
|
173
179
|
end
|
174
180
|
|
@@ -193,6 +199,11 @@ module Sinatra
|
|
193
199
|
|
194
200
|
instance_variable_set('@'+r, resource)
|
195
201
|
|
202
|
+
API.aliases_for(r).each { |resource_alias|
|
203
|
+
instance_variable_set('@'+resource_alias, resource)
|
204
|
+
puts "API: resource #{rklass} exported to @#{resource_alias}"
|
205
|
+
}
|
206
|
+
|
196
207
|
resource
|
197
208
|
end
|
198
209
|
|
@@ -222,6 +233,8 @@ module Sinatra
|
|
222
233
|
end
|
223
234
|
|
224
235
|
def self.registered(app)
|
236
|
+
@@api_resource_aliases ||= {}
|
237
|
+
|
225
238
|
app.helpers Helpers
|
226
239
|
app.before do
|
227
240
|
@api = { required: {}, optional: {} }
|
@@ -252,5 +265,18 @@ module Sinatra
|
|
252
265
|
end
|
253
266
|
|
254
267
|
end
|
268
|
+
|
269
|
+
def self.alias_resource(original, resource_alias)
|
270
|
+
@@resource_aliases ||= {}
|
271
|
+
@@resource_aliases[original.to_sym] ||= []
|
272
|
+
@@resource_aliases[original.to_sym] << resource_alias.to_s
|
273
|
+
|
274
|
+
puts "API resource #{original} is now aliased as #{resource_alias}"
|
275
|
+
end
|
276
|
+
|
277
|
+
def self.aliases_for(resource)
|
278
|
+
@@resource_aliases ||= {}
|
279
|
+
@@resource_aliases[resource.to_sym] || []
|
280
|
+
end
|
255
281
|
end
|
256
282
|
end
|
data/lib/sinatra/api/version.rb
CHANGED
data/lib/sinatra-api-helpers.rb
CHANGED
@@ -23,7 +23,10 @@ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)))
|
|
23
23
|
|
24
24
|
require 'json'
|
25
25
|
require 'sinatra/base'
|
26
|
-
require '
|
26
|
+
require 'active_support/core_ext/hash'
|
27
|
+
require 'active_support/core_ext/string'
|
28
|
+
# require 'sinatra/api/ext/hash'
|
29
|
+
# require 'sinatra/api/ext/string'
|
27
30
|
require 'sinatra/api/version'
|
28
31
|
require 'sinatra/api/helpers'
|
29
32
|
|
data/sinatra-api-helpers.gemspec
CHANGED
data/spec/unit/helpers_spec.rb
CHANGED
@@ -120,4 +120,9 @@ describe "Helpers" do
|
|
120
120
|
last_response.status.should == 404
|
121
121
|
last_response.body.should match /No such resource/
|
122
122
|
end
|
123
|
+
|
124
|
+
it "should define a resource alias" do
|
125
|
+
Sinatra::API.alias_resource :item, :item_alias
|
126
|
+
Sinatra::API.aliases_for(:item).should == [ 'item_alias' ]
|
127
|
+
end
|
123
128
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra-api-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-09-
|
12
|
+
date: 2013-09-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -43,6 +43,22 @@ dependencies:
|
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: activesupport
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
46
62
|
- !ruby/object:Gem::Dependency
|
47
63
|
name: rspec
|
48
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,6 +116,7 @@ files:
|
|
100
116
|
- lib/sinatra-api-helpers.rb
|
101
117
|
- lib/sinatra/api/helpers.rb
|
102
118
|
- lib/sinatra/api/version.rb
|
119
|
+
- lib/sinatra/api/ext/string.rb
|
103
120
|
- lib/sinatra/api/ext/hash.rb
|
104
121
|
- spec/unit/helpers_spec.rb
|
105
122
|
- spec/helpers/router.rb
|