sinatra-api-helpers 1.0.0 → 1.0.1
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/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
|