@@ -43,6 +43,16 @@ <h1 class="page-title">rails-ranger.js</h1>
43
43
import PathBuilder from './path-builder'
44
44
import RailsRouteBuilder from './rails-route-builder'
45
45
46
+ const ACTION_METHODS = {
47
+ index: 'get',
48
+ show: 'get',
49
+ new: 'get',
50
+ create: 'post',
51
+ edit: 'get',
52
+ update: 'patch',
53
+ destroy: 'delete'
54
+ }
55
+
46
56
class RailsRanger {
47
57
/**
48
58
* RailsRanger object constructor
@@ -51,7 +61,7 @@ <h1 class="page-title">rails-ranger.js</h1>
51
61
*/
52
62
constructor (configs = {}) {
53
63
this.client = Axios.create(configs)
54
- this.route = new RailsRouteBuilder()
64
+ this.routeBuilder = new RailsRouteBuilder()
55
65
this.pathBuilder = new PathBuilder()
56
66
}
57
67
@@ -66,8 +76,7 @@ <h1 class="page-title">rails-ranger.js</h1>
66
76
* //=> GET request to '/users/1?flag=true' path
67
77
*/
68
78
get (path, params) {
69
- let request = this.pathBuilder.get(path, params)
70
- return this.client.get(request.path)
79
+ return this._rawRequest({ method: 'get', path, params })
71
80
}
72
81
73
82
/**
@@ -81,8 +90,7 @@ <h1 class="page-title">rails-ranger.js</h1>
81
90
* //=> POST request to '/users/1' path with { flag: true } parameters
82
91
*/
83
92
post (path, params) {
84
- let request = this.pathBuilder.post(path, params)
85
- return this.client.post(request.path, request.params)
93
+ return this._rawRequest({ method: 'post', path, params })
86
94
}
87
95
88
96
/**
@@ -96,8 +104,7 @@ <h1 class="page-title">rails-ranger.js</h1>
96
104
* //=> PATCH request to '/users/1' path with { flag: true } parameters
97
105
*/
98
106
patch (path, params) {
99
- let request = this.pathBuilder.patch(path, params)
100
- return this.client.patch(request.path, request.params)
107
+ return this._rawRequest({ method: 'patch', path, params })
101
108
}
102
109
103
110
/**
@@ -111,8 +118,7 @@ <h1 class="page-title">rails-ranger.js</h1>
111
118
* //=> PUT request to '/users/1' path with { flag: true } parameters
112
119
*/
113
120
put (path, params) {
114
- let request = this.pathBuilder.put(path, params)
115
- return this.client.put(request.path, request.params)
121
+ return this._rawRequest({ method: 'put', path, params })
116
122
}
117
123
118
124
/**
@@ -126,8 +132,7 @@ <h1 class="page-title">rails-ranger.js</h1>
126
132
* //=> DELETE request to '/users/1?flag=true' path
127
133
*/
128
134
delete (path, params) {
129
- let request = this.pathBuilder.delete(path, params)
130
- return this.client.delete(request.path, request.params)
135
+ return this._rawRequest({ method: 'delete', path, params })
131
136
}
132
137
133
138
/**
@@ -137,12 +142,11 @@ <h1 class="page-title">rails-ranger.js</h1>
137
142
* @returns {Promise}
138
143
* @example
139
144
* let api = new RailsRanger
140
- * api.index ('users', { flag: true })
145
+ * api.list ('users', { flag: true })
141
146
* //=> GET request to '/users?flag=true' path
142
147
*/
143
148
list (resource, params) {
144
- let request = this.route.index(resource, params)
145
- return this.client.get(request.path)
149
+ return this._actionRequest({ action: 'index', resource, params })
146
150
}
147
151
148
152
/**
@@ -157,8 +161,7 @@ <h1 class="page-title">rails-ranger.js</h1>
157
161
* //=> GET request to '/users/1?flag=true' path
158
162
*/
159
163
show (resource, params) {
160
- let request = this.route.show(resource, params)
161
- return this.client.get(request.path)
164
+ return this._actionRequest({ action: 'show', resource, params })
162
165
}
163
166
164
167
/**
@@ -173,8 +176,7 @@ <h1 class="page-title">rails-ranger.js</h1>
173
176
* //=> DELETE request to '/users/1?flag=true' path
174
177
*/
175
178
destroy (resource, params) {
176
- let request = this.route.destroy(resource, params)
177
- return this.client.delete(request.path)
179
+ return this._actionRequest({ action: 'destroy', resource, params })
178
180
}
179
181
180
182
/**
@@ -188,8 +190,7 @@ <h1 class="page-title">rails-ranger.js</h1>
188
190
* //=
> POST request to '/users' path with the { email: '
[email protected] ', password: 123456 } parameters
189
191
*/
190
192
create (resource, params) {
191
- let request = this.route.create(resource, params)
192
- return this.client.post(request.path, request.params)
193
+ return this._actionRequest({ action: 'create', resource, params })
193
194
}
194
195
195
196
/**
@@ -204,8 +205,7 @@ <h1 class="page-title">rails-ranger.js</h1>
204
205
* //=
> PATCH request to '/users/1' path with the { email: '
[email protected] ' } parameters
205
206
*/
206
207
update (resource, params) {
207
- let request = this.route.update(resource, params)
208
- return this.client.patch(request.path, request.params)
208
+ return this._actionRequest({ action: 'update', resource, params })
209
209
}
210
210
211
211
/**
@@ -219,8 +219,7 @@ <h1 class="page-title">rails-ranger.js</h1>
219
219
* //=> GET request to '/users/new?flag=true' path
220
220
*/
221
221
new (resource, params) {
222
- let request = this.route.new(resource, params)
223
- return this.client.get(request.path)
222
+ return this._actionRequest({ action: 'new', resource, params })
224
223
}
225
224
226
225
/**
@@ -235,8 +234,20 @@ <h1 class="page-title">rails-ranger.js</h1>
235
234
* //=> GET request to '/users/1/edit?flag=true' path
236
235
*/
237
236
edit (resource, params) {
238
- let request = this.route.edit(resource, params)
239
- return this.client.get(request.path)
237
+ return this._actionRequest({ action: 'edit', resource, params })
238
+ }
239
+
240
+ _rawRequest ({ method, path, params }) {
241
+ const request = this.pathBuilder[method](path, params)
242
+
243
+ return this.client[method](request.path, request.params)
244
+ }
245
+
246
+ _actionRequest ({ action, resource, params }) {
247
+ const request = this.routeBuilder[action](resource, params)
248
+ const method = ACTION_METHODS[action]
249
+
250
+ return this.client[method](request.path, request.params)
240
251
}
241
252
}
242
253
@@ -253,7 +264,7 @@ <h1 class="page-title">rails-ranger.js</h1>
253
264
< br class ="clear ">
254
265
255
266
< footer >
256
- Generated by < a href ="https://github.com/jsdoc3/jsdoc "> JSDoc 3.4.3</ a > on Sun Jun 04 2017 21:45:38 GMT-0300 (-03) using the Minami theme.
267
+ Generated by < a href ="https://github.com/jsdoc3/jsdoc "> JSDoc 3.4.3</ a > on Wed Jun 14 2017 02:09:44 GMT-0300 (-03) using the Minami theme.
257
268
</ footer >
258
269
259
270
< script > prettyPrint ( ) ; </ script >
0 commit comments