flexible_api_server 0.0.13 → 0.1.0
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/flexible_api_server.rb +16 -4
- data/lib/flexible_api_server/version.rb +1 -1
- metadata +84 -93
data/lib/flexible_api_server.rb
CHANGED
@@ -13,11 +13,18 @@ class ActiveRecord::Base
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
|
17
|
+
|
16
18
|
module FlexibleApiServer
|
17
19
|
|
18
20
|
class App < Sinatra::Base
|
19
|
-
|
21
|
+
# to allow periods in parameters without it being a MIME type, respondto tries to replace all periods, so we intercept before
|
22
|
+
before do
|
23
|
+
request.path_info = request.path_info.sub(/\.(?=([.*\)]))/, '\period')
|
24
|
+
end
|
25
|
+
|
20
26
|
register Sinatra::RespondTo
|
27
|
+
|
21
28
|
mime_type :jsonp, 'application/javascript'
|
22
29
|
mime_type :js, 'application/json'
|
23
30
|
mime_type :xml, 'application/xml'
|
@@ -203,14 +210,19 @@ module FlexibleApiServer
|
|
203
210
|
|
204
211
|
DEFAULT_LIMIT = 50
|
205
212
|
|
213
|
+
# override this method to allow backspace (%5C) escaping commas, parentheses, and backspaces in params
|
206
214
|
def add_scopes(query, scope_param)
|
207
215
|
scopes = []
|
208
216
|
scopes.concat scope_param.split ':' unless scope_param.nil?
|
209
217
|
scopes.concat params[:scopes] if params[:scopes].is_a?(Array)
|
210
218
|
scopes.each do |scope|
|
211
|
-
|
212
|
-
|
213
|
-
|
219
|
+
method, arg_string = scope.split(/(?<=[^\\])\(/)
|
220
|
+
if !arg_string.nil?
|
221
|
+
arg_string = arg_string.chop.gsub(/\\\\/, "\\backspace").gsub(/\\period/, '.')
|
222
|
+
# split on non-escaped commas
|
223
|
+
args = arg_string.split(/(?<=[^\\]),/).map(&:strip)
|
224
|
+
# map escaped characters to normal values
|
225
|
+
args = args.map {|arg| arg.gsub(/\\,/, ',')}.map {|arg| arg.gsub(/\\\(/, '(')}.map {|arg| arg.gsub(/\\backspace/, '\\')}
|
214
226
|
query = query.send method.to_sym, *args
|
215
227
|
else
|
216
228
|
query = query.send method.to_sym
|
metadata
CHANGED
@@ -1,146 +1,137 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: flexible_api_server
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
4
5
|
prerelease:
|
5
|
-
version: 0.0.13
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- John Crepezzi
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-10-07 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
17
15
|
name: rspec
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70236559424220 !ruby/object:Gem::Requirement
|
20
17
|
none: false
|
21
|
-
requirements:
|
22
|
-
- -
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version:
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
25
22
|
type: :development
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: sqlite3
|
29
23
|
prerelease: false
|
30
|
-
|
24
|
+
version_requirements: *70236559424220
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: sqlite3
|
27
|
+
requirement: &70236559423520 !ruby/object:Gem::Requirement
|
31
28
|
none: false
|
32
|
-
requirements:
|
33
|
-
- -
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version:
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
36
33
|
type: :development
|
37
|
-
version_requirements: *id002
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: rack-test
|
40
34
|
prerelease: false
|
41
|
-
|
35
|
+
version_requirements: *70236559423520
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rack-test
|
38
|
+
requirement: &70236559422400 !ruby/object:Gem::Requirement
|
42
39
|
none: false
|
43
|
-
requirements:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version:
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
47
44
|
type: :development
|
48
|
-
version_requirements: *id003
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
name: flexible_api
|
51
45
|
prerelease: false
|
52
|
-
|
46
|
+
version_requirements: *70236559422400
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: flexible_api
|
49
|
+
requirement: &70236559421440 !ruby/object:Gem::Requirement
|
53
50
|
none: false
|
54
|
-
requirements:
|
55
|
-
- -
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: 0.0
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.1.0
|
58
55
|
type: :runtime
|
59
|
-
version_requirements: *id004
|
60
|
-
- !ruby/object:Gem::Dependency
|
61
|
-
name: json
|
62
56
|
prerelease: false
|
63
|
-
|
57
|
+
version_requirements: *70236559421440
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: json
|
60
|
+
requirement: &70236559420920 !ruby/object:Gem::Requirement
|
64
61
|
none: false
|
65
|
-
requirements:
|
66
|
-
- -
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version:
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
69
66
|
type: :runtime
|
70
|
-
version_requirements: *id005
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: activerecord
|
73
67
|
prerelease: false
|
74
|
-
|
68
|
+
version_requirements: *70236559420920
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: activerecord
|
71
|
+
requirement: &70236559409220 !ruby/object:Gem::Requirement
|
75
72
|
none: false
|
76
|
-
requirements:
|
77
|
-
- -
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
version:
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
80
77
|
type: :runtime
|
81
|
-
version_requirements: *id006
|
82
|
-
- !ruby/object:Gem::Dependency
|
83
|
-
name: sinatra
|
84
78
|
prerelease: false
|
85
|
-
|
79
|
+
version_requirements: *70236559409220
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: sinatra
|
82
|
+
requirement: &70236559407680 !ruby/object:Gem::Requirement
|
86
83
|
none: false
|
87
|
-
requirements:
|
88
|
-
- -
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version:
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
91
88
|
type: :runtime
|
92
|
-
version_requirements: *id007
|
93
|
-
- !ruby/object:Gem::Dependency
|
94
|
-
name: sinatra-respond_to
|
95
89
|
prerelease: false
|
96
|
-
|
90
|
+
version_requirements: *70236559407680
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: sinatra-respond_to
|
93
|
+
requirement: &70236559406900 !ruby/object:Gem::Requirement
|
97
94
|
none: false
|
98
|
-
requirements:
|
99
|
-
- -
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version:
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
102
99
|
type: :runtime
|
103
|
-
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70236559406900
|
104
102
|
description: Server for exposing Flexible APIs
|
105
103
|
email: john.crepezzi@gmail.com
|
106
104
|
executables: []
|
107
|
-
|
108
105
|
extensions: []
|
109
|
-
|
110
106
|
extra_rdoc_files: []
|
111
|
-
|
112
|
-
files:
|
107
|
+
files:
|
113
108
|
- lib/flexible_api_server/version.rb
|
114
109
|
- lib/flexible_api_server.rb
|
115
110
|
- views/doc_index.html.erb
|
116
111
|
- spec/spec_helper.rb
|
117
|
-
has_rdoc: false
|
118
112
|
homepage: http://github.com/seejohnrun/flexible_api_server
|
119
113
|
licenses: []
|
120
|
-
|
121
114
|
post_install_message:
|
122
115
|
rdoc_options: []
|
123
|
-
|
124
|
-
require_paths:
|
116
|
+
require_paths:
|
125
117
|
- lib
|
126
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
127
119
|
none: false
|
128
|
-
requirements:
|
129
|
-
- -
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version:
|
132
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ! '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
125
|
none: false
|
134
|
-
requirements:
|
135
|
-
- -
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
version:
|
126
|
+
requirements:
|
127
|
+
- - ! '>='
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
138
130
|
requirements: []
|
139
|
-
|
140
131
|
rubyforge_project: flexible_api_server
|
141
|
-
rubygems_version: 1.
|
132
|
+
rubygems_version: 1.8.10
|
142
133
|
signing_key:
|
143
134
|
specification_version: 3
|
144
135
|
summary: Server for exposing Flexible APIs created by FlexibleAPI
|
145
|
-
test_files:
|
136
|
+
test_files:
|
146
137
|
- spec/spec_helper.rb
|