crud-service 0.0.7 → 0.0.8
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.
- checksums.yaml +8 -8
- data/lib/api.rb +102 -61
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
Mzc4NzcyMDZkZjYyNmY1NDcwMjVmMDI2NWVhMGEwN2ZiN2QyOGViZA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YTk5OTkyYzY3YmQ5MmEzYTc3YmZhN2VjM2JiM2Q1MGEzYjRhMDBjYg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Y2RmY2NjNGU2MDMwNjZlNzA3ODhjZjlhN2MxMmNlMmI5MjQ3ZmU4ODdlZmVm
|
10
|
+
ZTRjN2Q2MTJkNWU0YmVlNjVmY2I4M2Y0NGUxOTIwODJkNGEzODg1NzBhOWQy
|
11
|
+
ZWI0OWEyYjU5ZTFkNDZiNzlkN2M0ZjkxZWEyYzUzNjI2MzExZWE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OGZiNGMyZmE0MDYxNWU3MDhjYTYyNmFmNTgyNjYwZTU1Y2RiODY3NGEyZTRi
|
14
|
+
YjYzMGY1YTM5MjZmOTZhNWNhNjNlMDkwYmUyYTliZTAyZGRlZjBjYTJkMzEz
|
15
|
+
MDk2MzZiM2YxMDk1ZTMyMDQyNDQwYjJlMmI2OWYzY2Q2MTkzYzk=
|
data/lib/api.rb
CHANGED
@@ -1,87 +1,128 @@
|
|
1
1
|
module CrudService
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
def
|
6
|
-
|
7
|
-
|
8
|
-
|
2
|
+
module Api
|
3
|
+
# This mixin provides a static method, crud_api, to configure a sinatra class with the
|
4
|
+
# provided resource name, service and api_options
|
5
|
+
def crud_api(resource_name, service_name, primary_key_name, api_options = {})
|
6
|
+
|
7
|
+
defaults = {
|
8
|
+
:enable_read => true,
|
9
|
+
:enable_write => true,
|
10
|
+
:enable_options => true,
|
11
|
+
:enable_get_all => true,
|
12
|
+
:enable_get => true,
|
13
|
+
:enable_post => true,
|
14
|
+
:enable_put => true,
|
15
|
+
:enable_delete => true,
|
16
|
+
}
|
17
|
+
api_options.merge!(defaults) { |key, v1, v2| v1 }
|
18
|
+
|
19
|
+
if api_options[:enable_options]
|
20
|
+
options '/'+resource_name do
|
21
|
+
204
|
22
|
+
end
|
9
23
|
end
|
10
24
|
|
11
|
-
|
12
|
-
# Get The data
|
13
|
-
begin
|
14
|
-
data = JSON.parse(request.body.read)
|
15
|
-
rescue Exception => e
|
16
|
-
return 400
|
17
|
-
end
|
25
|
+
if api_options[:enable_write]
|
18
26
|
|
19
|
-
|
20
|
-
|
27
|
+
if api_options[:enable_post]
|
28
|
+
post '/'+resource_name do
|
29
|
+
service = settings.send(service_name)
|
21
30
|
|
22
|
-
|
23
|
-
|
31
|
+
# Get The data
|
32
|
+
begin
|
33
|
+
data = JSON.parse(request.body.read)
|
34
|
+
rescue Exception => e
|
35
|
+
return 400
|
36
|
+
end
|
24
37
|
|
25
|
-
|
26
|
-
|
38
|
+
# Valid POST?
|
39
|
+
return 400 unless service.valid_insert?(data)
|
27
40
|
|
28
|
-
|
29
|
-
|
41
|
+
# Already Exists?
|
42
|
+
return 409 if service.exists_by_primary_key?(data['code'])
|
30
43
|
|
31
|
-
|
32
|
-
|
33
|
-
end
|
44
|
+
# Do Insert
|
45
|
+
record = service.insert(data)
|
34
46
|
|
35
|
-
|
36
|
-
|
37
|
-
# Check query validity
|
38
|
-
return 400 unless settings.send(service_name).valid_query?(params)
|
47
|
+
# Other Error
|
48
|
+
return 500 if record == false
|
39
49
|
|
40
|
-
|
41
|
-
|
42
|
-
|
50
|
+
# Output new record
|
51
|
+
JSON.fast_generate record
|
52
|
+
end
|
53
|
+
end
|
43
54
|
|
44
|
-
|
45
|
-
|
46
|
-
|
55
|
+
if api_options[:enable_put]
|
56
|
+
put '/'+resource_name+'/:'+primary_key_name do
|
57
|
+
service = settings.send(service_name)
|
47
58
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
59
|
+
# Must Exist
|
60
|
+
return 404 unless service.exists_by_primary_key?(params[:code])
|
61
|
+
|
62
|
+
# Get The Data
|
63
|
+
begin
|
64
|
+
data = JSON.parse(request.body.read)
|
65
|
+
rescue Exception => e
|
66
|
+
return 400
|
67
|
+
end
|
68
|
+
|
69
|
+
# Valid Update?
|
70
|
+
return 400 unless service.valid_update?(data)
|
52
71
|
|
53
|
-
|
54
|
-
|
55
|
-
return 404 unless settings.send(service_name).exists_by_primary_key?(params[:code])
|
72
|
+
# Do Update
|
73
|
+
record = service.update_by_primary_key(params[:code],data)
|
56
74
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
75
|
+
# Other Error
|
76
|
+
return 500 if record.nil?
|
77
|
+
|
78
|
+
# Return new Region
|
79
|
+
JSON.fast_generate record
|
80
|
+
end
|
62
81
|
end
|
63
82
|
|
64
|
-
|
65
|
-
|
83
|
+
if api_options[:enable_delete]
|
84
|
+
delete '/'+resource_name+'/:'+primary_key_name do
|
85
|
+
service = settings.send(service_name)
|
86
|
+
|
87
|
+
# Must Exist
|
88
|
+
return 404 unless service.exists_by_primary_key?(params[:code])
|
66
89
|
|
67
|
-
|
68
|
-
|
90
|
+
# Do Delete
|
91
|
+
return 400 unless service.delete_by_primary_key(params[:code])
|
69
92
|
|
70
|
-
|
71
|
-
|
93
|
+
204
|
94
|
+
end
|
95
|
+
end
|
72
96
|
|
73
|
-
# Return new Region
|
74
|
-
JSON.fast_generate record
|
75
97
|
end
|
76
98
|
|
77
|
-
|
78
|
-
# Must Exist
|
79
|
-
return 404 unless settings.send(service_name).exists_by_primary_key?(params[:code])
|
99
|
+
if api_options[:enable_read]
|
80
100
|
|
81
|
-
|
82
|
-
|
101
|
+
if api_options[:enable_get]
|
102
|
+
get '/'+resource_name do
|
103
|
+
service = settings.send(service_name)
|
83
104
|
|
84
|
-
|
105
|
+
sanitize_params(params)
|
106
|
+
# Check query validity
|
107
|
+
return 400 unless service.valid_query?(params)
|
108
|
+
|
109
|
+
# Return Regions on Query
|
110
|
+
JSON.fast_generate service.get_all_by_query(params)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
if api_options[:enable_get_all]
|
115
|
+
get '/'+resource_name+'/:'+primary_key_name do
|
116
|
+
service = self.settings.send(service_name)
|
117
|
+
|
118
|
+
sanitize_params(params)
|
119
|
+
return 400 unless service.valid_query?(params)
|
120
|
+
|
121
|
+
record = service.get_one_by_query(params)
|
122
|
+
return 404 if record.nil?
|
123
|
+
JSON.fast_generate record
|
124
|
+
end
|
125
|
+
end
|
85
126
|
end
|
86
127
|
end
|
87
128
|
end
|