Commit 3f90e3a0ef64f6ee470c4d6db9bf61000c5d57ae
1 parent
f296ec68
Exists in
master
เรียงลำดับการทำงานเป็นส่วนๆ
Showing
24 changed files
with
598 additions
and
407 deletions
Show diff stats
.gitignore
1 | - | ||
2 | -# Created by https://www.gitignore.io/api/jetbrains,eclipse,node,composer,java,windows,osx,linux,bower,grunt,netbeans,android,laravel | ||
3 | - | ||
4 | -### OSX ### | ||
5 | -*.DS_Store | ||
6 | -.AppleDouble | ||
7 | -.LSOverride | ||
8 | - | ||
9 | -# Icon must end with two \r | ||
10 | -Icon | ||
11 | - | ||
12 | - | ||
13 | -# Thumbnails | ||
14 | -._* | ||
15 | - | ||
16 | -# Files that might appear in the root of a volume | ||
17 | -.DocumentRevisions-V100 | ||
18 | -.fseventsd | ||
19 | -.Spotlight-V100 | ||
20 | -.TemporaryItems | ||
21 | -.Trashes | ||
22 | -.VolumeIcon.icns | ||
23 | -.com.apple.timemachine.donotpresent | ||
24 | - | ||
25 | -# Directories potentially created on remote AFP share | ||
26 | -.AppleDB | ||
27 | -.AppleDesktop | ||
28 | -Network Trash Folder | ||
29 | -Temporary Items | ||
30 | -.apdisk | ||
31 | - | ||
32 | - | ||
33 | -### JetBrains ### | ||
34 | -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm | ||
35 | -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 | ||
36 | - | ||
37 | -# All idea folder | ||
38 | -.idea/* | ||
39 | - | ||
40 | -# User-specific stuff: | ||
41 | -.idea/workspace.xml | ||
42 | -.idea/tasks.xml | ||
43 | -.idea/dictionaries | ||
44 | -.idea/vcs.xml | ||
45 | -.idea/jsLibraryMappings.xml | ||
46 | - | ||
47 | -# Sensitive or high-churn files: | ||
48 | -.idea/dataSources.ids | ||
49 | -.idea/dataSources.xml | ||
50 | -.idea/dataSources.local.xml | ||
51 | -.idea/sqlDataSources.xml | ||
52 | -.idea/dynamic.xml | ||
53 | -.idea/uiDesigner.xml | ||
54 | - | ||
55 | -# Gradle: | ||
56 | -.idea/gradle.xml | ||
57 | -.idea/libraries | ||
58 | - | ||
59 | -# Mongo Explorer plugin: | ||
60 | -.idea/mongoSettings.xml | ||
61 | - | ||
62 | -## File-based project format: | ||
63 | -*.iws | ||
64 | - | ||
65 | -## Plugin-specific files: | ||
66 | - | ||
67 | -# IntelliJ | ||
68 | -/out/ | ||
69 | - | ||
70 | -# mpeltonen/sbt-idea plugin | ||
71 | -.idea_modules/ | ||
72 | - | ||
73 | -# JIRA plugin | ||
74 | -atlassian-ide-plugin.xml | ||
75 | - | ||
76 | -# Crashlytics plugin (for Android Studio and IntelliJ) | ||
77 | -com_crashlytics_export_strings.xml | ||
78 | -crashlytics.properties | ||
79 | -crashlytics-build.properties | ||
80 | -fabric.properties | ||
81 | - | ||
82 | -### JetBrains Patch ### | ||
83 | -# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 | ||
84 | - | ||
85 | -# *.iml | ||
86 | -# modules.xml | ||
87 | - | ||
88 | - | ||
89 | -### Node ### | ||
90 | -# Logs | ||
91 | -logs | 1 | +*.csv |
2 | +*.dat | ||
3 | +*.iml | ||
92 | *.log | 4 | *.log |
93 | -npm-debug.log* | ||
94 | - | ||
95 | -# Runtime data | ||
96 | -pids | 5 | +*.out |
97 | *.pid | 6 | *.pid |
98 | *.seed | 7 | *.seed |
99 | - | ||
100 | -# Directory for instrumented libs generated by jscoverage/JSCover | ||
101 | -lib-cov | ||
102 | - | ||
103 | -# Coverage directory used by tools like istanbul | ||
104 | -coverage | ||
105 | - | ||
106 | -# nyc test coverage | ||
107 | -.nyc_output | ||
108 | - | ||
109 | -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) | ||
110 | -.grunt | ||
111 | - | ||
112 | -# node-waf configuration | ||
113 | -.lock-wscript | ||
114 | - | ||
115 | -# Compiled binary addons (http://nodejs.org/api/addons.html) | ||
116 | -build/Release | ||
117 | - | ||
118 | -# Dependency directories | ||
119 | -node_modules | ||
120 | -jspm_packages | ||
121 | - | ||
122 | -# Optional npm cache directory | ||
123 | -.npm | ||
124 | - | ||
125 | -# Optional REPL history | ||
126 | -.node_repl_history | ||
127 | - | ||
128 | - | ||
129 | -### Composer ### | ||
130 | -composer.phar | ||
131 | -/vendor/ | ||
132 | - | ||
133 | -# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file | ||
134 | -# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file | ||
135 | -# composer.lock | ||
136 | - | ||
137 | - | ||
138 | -### Android ### | ||
139 | -# Built application files | ||
140 | -*.apk | ||
141 | -*.ap_ | ||
142 | - | ||
143 | -# Files for the ART/Dalvik VM | ||
144 | -*.dex | ||
145 | - | ||
146 | -# Java class files | ||
147 | -*.class | ||
148 | - | ||
149 | -# Generated files | ||
150 | -bin/ | ||
151 | -gen/ | ||
152 | -out/ | ||
153 | - | ||
154 | -# Gradle files | ||
155 | -.gradle/ | ||
156 | -build/ | ||
157 | - | ||
158 | -# Local configuration file (sdk path, etc) | ||
159 | -local.properties | ||
160 | - | ||
161 | -# Proguard folder generated by Eclipse | ||
162 | -proguard/ | ||
163 | - | ||
164 | -# Log Files | ||
165 | -*.log | ||
166 | - | ||
167 | -# Android Studio Navigation editor temp files | ||
168 | -.navigation/ | ||
169 | - | ||
170 | -# Android Studio captures folder | ||
171 | -captures/ | ||
172 | - | ||
173 | -# Intellij | ||
174 | -*.iml | ||
175 | -.idea/workspace.xml | ||
176 | - | ||
177 | -# Keystore files | ||
178 | -*.jks | ||
179 | - | ||
180 | -### Android Patch ### | ||
181 | -gen-external-apklibs | ||
182 | - | ||
183 | - | ||
184 | -### Windows ### | ||
185 | -# Windows image file caches | ||
186 | -Thumbs.db | ||
187 | -ehthumbs.db | ||
188 | - | ||
189 | -# Folder config file | ||
190 | -Desktop.ini | ||
191 | - | ||
192 | -# Recycle Bin used on file shares | ||
193 | -$RECYCLE.BIN/ | ||
194 | - | ||
195 | -# Windows Installer files | ||
196 | -*.cab | ||
197 | -*.msi | ||
198 | -*.msm | ||
199 | -*.msp | ||
200 | - | ||
201 | -# Windows shortcuts | ||
202 | -*.lnk | ||
203 | - | ||
204 | - | ||
205 | -### Eclipse ### | ||
206 | - | ||
207 | -.metadata | ||
208 | -bin/ | ||
209 | -tmp/ | ||
210 | -*.tmp | ||
211 | -*.bak | 8 | +*.sublime-* |
9 | +*.swo | ||
212 | *.swp | 10 | *.swp |
213 | -*~.nib | ||
214 | -local.properties | ||
215 | -.settings/ | ||
216 | -.loadpath | ||
217 | -.recommenders | ||
218 | - | ||
219 | -# Eclipse Core | 11 | +*.tgz |
12 | +*.xml | ||
13 | +.DS_Store | ||
14 | +.idea | ||
220 | .project | 15 | .project |
221 | - | ||
222 | -# External tool builders | ||
223 | -.externalToolBuilders/ | ||
224 | - | ||
225 | -# Locally stored "Eclipse launch configurations" | ||
226 | -*.launch | ||
227 | - | ||
228 | -# PyDev specific (Python IDE for Eclipse) | ||
229 | -*.pydevproject | ||
230 | - | ||
231 | -# CDT-specific (C/C++ Development Tooling) | ||
232 | -.cproject | ||
233 | - | ||
234 | -# JDT-specific (Eclipse Java Development Tools) | ||
235 | -.classpath | ||
236 | - | ||
237 | -# Java annotation processor (APT) | ||
238 | -.factorypath | ||
239 | - | ||
240 | -# PDT-specific (PHP Development Tools) | ||
241 | -.buildpath | ||
242 | - | ||
243 | -# sbteclipse plugin | ||
244 | -.target | ||
245 | - | ||
246 | -# Tern plugin | ||
247 | -.tern-project | ||
248 | - | ||
249 | -# TeXlipse plugin | ||
250 | -.texlipse | ||
251 | - | ||
252 | -# STS (Spring Tool Suite) | ||
253 | -.springBeans | ||
254 | - | ||
255 | -# Code Recommenders | ||
256 | -.recommenders/ | ||
257 | - | ||
258 | - | ||
259 | -### Linux ### | ||
260 | -*~ | ||
261 | - | ||
262 | -# temporary files which can be created if a process still has a handle open of a deleted file | ||
263 | -.fuse_hidden* | ||
264 | - | ||
265 | -# KDE directory preferences | ||
266 | -.directory | ||
267 | - | ||
268 | -# Linux trash folder which might appear on any partition or disk | ||
269 | -.Trash-* | ||
270 | - | ||
271 | - | ||
272 | -### Bower ### | ||
273 | -bower_components | ||
274 | -.bower-cache | ||
275 | -.bower-registry | ||
276 | -.bower-tmp | ||
277 | - | ||
278 | - | ||
279 | -### grunt ### | ||
280 | -# Grunt usually compiles files inside this directory | ||
281 | -dist/ | ||
282 | - | ||
283 | -# Grunt usually preprocesses files such as coffeescript, compass... inside the .tmp directory | ||
284 | -.tmp/ | ||
285 | - | ||
286 | - | ||
287 | -### NetBeans ### | ||
288 | -nbproject/private/ | ||
289 | -build/ | ||
290 | -nbbuild/ | ||
291 | -dist/ | ||
292 | -nbdist/ | ||
293 | -nbactions.xml | ||
294 | -.nb-gradle/ | ||
295 | - | ||
296 | - | ||
297 | -### Laravel ### | ||
298 | -vendor/ | ||
299 | -node_modules/ | ||
300 | - | ||
301 | -# Laravel 4 specific | ||
302 | -bootstrap/compiled.php | ||
303 | -app/storage/ | ||
304 | - | ||
305 | -# Laravel 5 & Lumen specific | ||
306 | -bootstrap/cache/ | ||
307 | -.env.*.php | ||
308 | -.env.php | ||
309 | -.env | ||
310 | - | ||
311 | -# Rocketeer PHP task runner and deployment package. https://github.com/rocketeers/rocketeer | ||
312 | -.rocketeer/ | ||
313 | - | ||
314 | - | ||
315 | -### Java ### | ||
316 | -*.class | ||
317 | - | ||
318 | -# Mobile Tools for Java (J2ME) | ||
319 | -.mtj.tmp/ | ||
320 | - | ||
321 | -# Package Files # | ||
322 | -*.jar | ||
323 | -*.war | ||
324 | -*.ear | ||
325 | - | ||
326 | -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml | ||
327 | -hs_err_pid* | ||
328 | -T6/~$T6_SSB-WO_FirstActivate(SQA)_v1.0.0_24062016.xlsx | 16 | +.strong-pm |
17 | +coverage | ||
18 | +node_modules | ||
19 | +npm-debug.log |
@@ -0,0 +1,99 @@ | @@ -0,0 +1,99 @@ | ||
1 | +module.exports = function(Callback) { | ||
2 | + Callback.disableRemoteMethod("create", true); | ||
3 | + Callback.disableRemoteMethod("upsert", true); | ||
4 | + Callback.disableRemoteMethod("updateAll", true); | ||
5 | + Callback.disableRemoteMethod("updateAttributes", false); | ||
6 | + | ||
7 | + Callback.disableRemoteMethod("find", true); | ||
8 | + Callback.disableRemoteMethod("findById", true); | ||
9 | + Callback.disableRemoteMethod("findOne", true); | ||
10 | + | ||
11 | + Callback.disableRemoteMethod("deleteById", true); | ||
12 | + | ||
13 | + Callback.disableRemoteMethod("confirm", true); | ||
14 | + Callback.disableRemoteMethod("count", true); | ||
15 | + Callback.disableRemoteMethod("exists", true); | ||
16 | + Callback.disableRemoteMethod("resetPassword", true); | ||
17 | + | ||
18 | + Callback.disableRemoteMethod('__count__accessTokens', false); | ||
19 | + Callback.disableRemoteMethod('__create__accessTokens', false); | ||
20 | + Callback.disableRemoteMethod('__delete__accessTokens', false); | ||
21 | + Callback.disableRemoteMethod('__destroyById__accessTokens', false); | ||
22 | + Callback.disableRemoteMethod('__findById__accessTokens', false); | ||
23 | + Callback.disableRemoteMethod('__get__accessTokens', false); | ||
24 | + Callback.disableRemoteMethod('__updateById__accessTokens', false); | ||
25 | + | ||
26 | + Callback.disableRemoteMethod('create', true); // Removes (POST) /products | ||
27 | + Callback.disableRemoteMethod('upsert', true); // Removes (PUT) /products | ||
28 | + Callback.disableRemoteMethod('deleteById', true); // Removes (DELETE) /products/:id | ||
29 | + Callback.disableRemoteMethod("updateAll", true); // Removes (POST) /products/update | ||
30 | + Callback.disableRemoteMethod("updateAttributes", false); // Removes (PUT) /products/:id | ||
31 | + Callback.disableRemoteMethod('createChangeStream', true); // removes (GET|POST) /products/change-stream | ||
32 | + | ||
33 | + Callback.EmptryParams = function (cb) { | ||
34 | + // cb = callback; | ||
35 | + var success = { | ||
36 | + "resultCode": 20000, | ||
37 | + "resultDescription":"Success" | ||
38 | + }; | ||
39 | + cb(null,success); | ||
40 | + }; | ||
41 | + Callback.remoteMethod('EmptryParams',{ | ||
42 | + http:{path:'/EmptryParams',verb:'get'}, | ||
43 | + returns: {arg: 'data', type: 'object', root: true} | ||
44 | + }); | ||
45 | + Callback.HttpPost = function (ctx,cb) { | ||
46 | + // cb = callback; | ||
47 | + var success = { | ||
48 | + "resultCode": 20000, | ||
49 | + "resultDescription":"Success", | ||
50 | + "data":ctx | ||
51 | + }; | ||
52 | + cb(null,success); | ||
53 | + }; | ||
54 | + Callback.remoteMethod('HttpPost',{ | ||
55 | + http:{path:'/HttpPost',verb:'post'}, | ||
56 | + accepts: { arg: 'ctx', type: 'object', default: { | ||
57 | + "string": "string", | ||
58 | + "number": 12345, | ||
59 | + "array": ['string',1234], | ||
60 | + "object": { | ||
61 | + "string":"string", | ||
62 | + "number":1234 | ||
63 | + } | ||
64 | + },http: { source: 'body' }}, | ||
65 | + returns: {arg: 'data', type: 'object', root: true} | ||
66 | + }); | ||
67 | + Callback.HttpGet = function (ctx,cb) { | ||
68 | + // cb = callback; | ||
69 | + | ||
70 | + var success = { | ||
71 | + "resultCode": 20000, | ||
72 | + "resultDescription":"Success", | ||
73 | + "Try it on":"http://localhost:3232/api/callbacks/models1/5555/models2/6666", | ||
74 | + "data":ctx | ||
75 | + | ||
76 | + }; | ||
77 | + cb(null,success); | ||
78 | + }; | ||
79 | + Callback.remoteMethod('HttpGet',{ | ||
80 | + http:{path:'/models1/:params1/models2/:params2',verb:'get'}, | ||
81 | + accepts: { arg: 'ctx', type: 'object', http: function(ctx) { | ||
82 | + // รับข้อมุลมาใส่ไว้ใน ctx | ||
83 | + // 1. รับข้อมูล object ที่ส่งมาโดยใช้ express | ||
84 | + var req = ctx.req; | ||
85 | + | ||
86 | + /* 2. Get ข้อมูลแบบ params | ||
87 | + * params คือค่าที่ส่งมากับ url ex http://localhost/Item/params1/params2 | ||
88 | + * รับค่ามาตั้งแต่ http:{path:'/: ตัวแปรที่รับค่าเก็บไว้ /: ตัวแปรที่รับค่าเก็บไว้ | ||
89 | + | ||
90 | + */ | ||
91 | + var params = { | ||
92 | + "params1":req.params.params1, | ||
93 | + "params2":req.params.params2 | ||
94 | + }; | ||
95 | + return params; | ||
96 | + } } , | ||
97 | + returns: {arg: 'data', type: 'object', root: true} | ||
98 | + }); | ||
99 | +}; |
@@ -0,0 +1,50 @@ | @@ -0,0 +1,50 @@ | ||
1 | + | ||
2 | +var yaml = require('node-yaml-config'); | ||
3 | +var config = yaml.load(__dirname + '/../../config/config.yml'); | ||
4 | +module.exports = function(Config) { | ||
5 | + | ||
6 | + | ||
7 | + Config.disableRemoteMethod("create", true); | ||
8 | + Config.disableRemoteMethod("upsert", true); | ||
9 | + Config.disableRemoteMethod("updateAll", true); | ||
10 | + Config.disableRemoteMethod("updateAttributes", false); | ||
11 | + | ||
12 | + Config.disableRemoteMethod("find", true); | ||
13 | + Config.disableRemoteMethod("findById", true); | ||
14 | + Config.disableRemoteMethod("findOne", true); | ||
15 | + | ||
16 | + Config.disableRemoteMethod("deleteById", true); | ||
17 | + | ||
18 | + Config.disableRemoteMethod("confirm", true); | ||
19 | + Config.disableRemoteMethod("count", true); | ||
20 | + Config.disableRemoteMethod("exists", true); | ||
21 | + Config.disableRemoteMethod("resetPassword", true); | ||
22 | + | ||
23 | + Config.disableRemoteMethod('__count__accessTokens', false); | ||
24 | + Config.disableRemoteMethod('__create__accessTokens', false); | ||
25 | + Config.disableRemoteMethod('__delete__accessTokens', false); | ||
26 | + Config.disableRemoteMethod('__destroyById__accessTokens', false); | ||
27 | + Config.disableRemoteMethod('__findById__accessTokens', false); | ||
28 | + Config.disableRemoteMethod('__get__accessTokens', false); | ||
29 | + Config.disableRemoteMethod('__updateById__accessTokens', false); | ||
30 | + | ||
31 | + Config.disableRemoteMethod('create', true); // Removes (POST) /products | ||
32 | + Config.disableRemoteMethod('upsert', true); // Removes (PUT) /products | ||
33 | + Config.disableRemoteMethod('deleteById', true); // Removes (DELETE) /products/:id | ||
34 | + Config.disableRemoteMethod("updateAll", true); // Removes (POST) /products/update | ||
35 | + Config.disableRemoteMethod("updateAttributes", false); // Removes (PUT) /products/:id | ||
36 | + Config.disableRemoteMethod('createChangeStream', true); // removes (GET|POST) /products/change-stream | ||
37 | + | ||
38 | + Config.HttpGet = function (cb) { | ||
39 | + var success = { | ||
40 | + "config":config.server.config, | ||
41 | + "docs":config.server.docs, | ||
42 | + "directory":config.server.directory | ||
43 | + }; | ||
44 | + cb(null,success); | ||
45 | + }; | ||
46 | + Config.remoteMethod('HttpGet',{ | ||
47 | + http:{path:'/config',verb:'get'}, | ||
48 | + returns: {arg: 'data', type: 'object', root: true} | ||
49 | + }); | ||
50 | +}; |
@@ -0,0 +1,70 @@ | @@ -0,0 +1,70 @@ | ||
1 | +var fs_ex = require('fs.extra'); | ||
2 | +var fs = require('fs'); | ||
3 | +var console = process.console; | ||
4 | +module.exports = function(Files) { | ||
5 | + | ||
6 | + Files.disableRemoteMethod("create", true); | ||
7 | + Files.disableRemoteMethod("upsert", true); | ||
8 | + Files.disableRemoteMethod("updateAll", true); | ||
9 | + Files.disableRemoteMethod("updateAttributes", false); | ||
10 | + | ||
11 | + Files.disableRemoteMethod("find", true); | ||
12 | + Files.disableRemoteMethod("findById", true); | ||
13 | + Files.disableRemoteMethod("findOne", true); | ||
14 | + | ||
15 | + Files.disableRemoteMethod("deleteById", true); | ||
16 | + | ||
17 | + Files.disableRemoteMethod("confirm", true); | ||
18 | + Files.disableRemoteMethod("count", true); | ||
19 | + Files.disableRemoteMethod("exists", true); | ||
20 | + Files.disableRemoteMethod("resetPassword", true); | ||
21 | + | ||
22 | + Files.disableRemoteMethod('__count__accessTokens', false); | ||
23 | + Files.disableRemoteMethod('__create__accessTokens', false); | ||
24 | + Files.disableRemoteMethod('__delete__accessTokens', false); | ||
25 | + Files.disableRemoteMethod('__destroyById__accessTokens', false); | ||
26 | + Files.disableRemoteMethod('__findById__accessTokens', false); | ||
27 | + Files.disableRemoteMethod('__get__accessTokens', false); | ||
28 | + Files.disableRemoteMethod('__updateById__accessTokens', false); | ||
29 | + | ||
30 | + Files.disableRemoteMethod('create', true); // Removes (POST) /products | ||
31 | + Files.disableRemoteMethod('upsert', true); // Removes (PUT) /products | ||
32 | + Files.disableRemoteMethod('deleteById', true); // Removes (DELETE) /products/:id | ||
33 | + Files.disableRemoteMethod("updateAll", true); // Removes (POST) /products/update | ||
34 | + Files.disableRemoteMethod("updateAttributes", false); // Removes (PUT) /products/:id | ||
35 | + Files.disableRemoteMethod('createChangeStream', true); // removes (GET|POST) /products/change-stream | ||
36 | + | ||
37 | + | ||
38 | + Files.Files = function(ctx,cb){ | ||
39 | + var path = __dirname+'/../uploads/upload'; | ||
40 | + console.log(path); | ||
41 | + fs.readFile(path+'.txt', 'utf8', function (err, body) { | ||
42 | + if (err){ | ||
43 | + FnwriteFile(body,ctx) | ||
44 | + }else{ | ||
45 | + FnwriteFile(body,ctx) | ||
46 | + } | ||
47 | + }); | ||
48 | + }; | ||
49 | + function FnwriteFile(body,data){ | ||
50 | + var path = __dirname+'/../uploads/upload'; | ||
51 | + | ||
52 | + //Do your processing, MD5, send a satellite to the moon, etc. | ||
53 | + fs.writeFile(path+'.txt', body+"\n"+data.data, 'utf8', function (err) { | ||
54 | + if (err) { | ||
55 | + console.log(err); | ||
56 | + }else { | ||
57 | + console.tag('docs').log("Write file complete"); | ||
58 | + } | ||
59 | + }); | ||
60 | + | ||
61 | + } | ||
62 | + Files.remoteMethod('Files',{ | ||
63 | + http:{path:'/Files',verb:'post'}, | ||
64 | + accepts: { arg: 'ctx', type: 'object', default: { | ||
65 | + "data":"https://www.npmjs.com/package/fs.extra // https://nodejs.org/api/fs.html" | ||
66 | + },http: { source: 'body' }}, | ||
67 | + returns: {arg: 'data', type: 'object', root: true} | ||
68 | + }) | ||
69 | + | ||
70 | +}; |
common/models/item.js
@@ -100,8 +100,11 @@ module.exports = function(Item) { | @@ -100,8 +100,11 @@ module.exports = function(Item) { | ||
100 | Item.Moment = function(cb){ | 100 | Item.Moment = function(cb){ |
101 | var this_time = { | 101 | var this_time = { |
102 | "default": moment().format(), | 102 | "default": moment().format(), |
103 | - "DD-MM-YYY":moment().format("DD-MM-YYYY"), | ||
104 | - "HH:MM:SS":moment().format("HH:mm:ss") | 103 | + "DD-MM-YYYY":moment().format("DD-MM-YYYY"), |
104 | + "HH:MM:SS":moment().format("HH:mm:ss"), | ||
105 | + "DDMMYYYY":moment().format("DDMMYYYY"), | ||
106 | + "DD-MM-YYYY HH:II::SS":moment().format("DD-MM-YYYY HH:mm:ss"), | ||
107 | + "YYYYMMDD-HHmmssSSS":moment().format("YYYYMMDD-HHmmssSSS") | ||
105 | }; | 108 | }; |
106 | cb(null,this_time); | 109 | cb(null,this_time); |
107 | }; | 110 | }; |
@@ -0,0 +1,15 @@ | @@ -0,0 +1,15 @@ | ||
1 | +var console = process.console; | ||
2 | +module.exports = function(Logs) { | ||
3 | + Logs.Logs = function(cb){ | ||
4 | + console.tag('TestLog','Logs').file().time().log('http://localhost:3232/logs/'); | ||
5 | + console.tag('TestLog','Logs').file().time().warning('http://localhost:3232/logs/'); | ||
6 | + console.tag('TestLog','Logs').file().time().error('http://localhost:3232/logs/'); | ||
7 | + console.tag('TestLog','Logs').file().time().info('http://localhost:3232/logs/'); | ||
8 | + cb(null); | ||
9 | + }; | ||
10 | + Logs.remoteMethod('Logs',{ | ||
11 | + http:{path:'/Logs',verb:'get'}, | ||
12 | + returns: {arg: 'data', type: 'object', root: true} | ||
13 | + }); | ||
14 | + | ||
15 | +}; |
@@ -0,0 +1,55 @@ | @@ -0,0 +1,55 @@ | ||
1 | + | ||
2 | +var moment = require('moment'); | ||
3 | +module.exports = function(Moment) { | ||
4 | + | ||
5 | + Moment.disableRemoteMethod("create", true); | ||
6 | + Moment.disableRemoteMethod("upsert", true); | ||
7 | + Moment.disableRemoteMethod("updateAll", true); | ||
8 | + Moment.disableRemoteMethod("updateAttributes", false); | ||
9 | + | ||
10 | + Moment.disableRemoteMethod("find", true); | ||
11 | + Moment.disableRemoteMethod("findById", true); | ||
12 | + Moment.disableRemoteMethod("findOne", true); | ||
13 | + | ||
14 | + Moment.disableRemoteMethod("deleteById", true); | ||
15 | + | ||
16 | + Moment.disableRemoteMethod("confirm", true); | ||
17 | + Moment.disableRemoteMethod("count", true); | ||
18 | + Moment.disableRemoteMethod("exists", true); | ||
19 | + Moment.disableRemoteMethod("resetPassword", true); | ||
20 | + | ||
21 | + Moment.disableRemoteMethod('__count__accessTokens', false); | ||
22 | + Moment.disableRemoteMethod('__create__accessTokens', false); | ||
23 | + Moment.disableRemoteMethod('__delete__accessTokens', false); | ||
24 | + Moment.disableRemoteMethod('__destroyById__accessTokens', false); | ||
25 | + Moment.disableRemoteMethod('__findById__accessTokens', false); | ||
26 | + Moment.disableRemoteMethod('__get__accessTokens', false); | ||
27 | + Moment.disableRemoteMethod('__updateById__accessTokens', false); | ||
28 | + | ||
29 | + Moment.disableRemoteMethod('create', true); // Removes (POST) /products | ||
30 | + Moment.disableRemoteMethod('upsert', true); // Removes (PUT) /products | ||
31 | + Moment.disableRemoteMethod('deleteById', true); // Removes (DELETE) /products/:id | ||
32 | + Moment.disableRemoteMethod("updateAll", true); // Removes (POST) /products/update | ||
33 | + Moment.disableRemoteMethod("updateAttributes", false); // Removes (PUT) /products/:id | ||
34 | + Moment.disableRemoteMethod('createChangeStream', true); // removes (GET|POST) /products/change-stream | ||
35 | + | ||
36 | + | ||
37 | + Moment.Moment = function(cb){ | ||
38 | + var this_time = { | ||
39 | + "docs":"http://momentjs.com/docs/", | ||
40 | + "default": moment().format(), | ||
41 | + "DD-MM-YYYY":moment().format("DD-MM-YYYY"), | ||
42 | + "HH:MM:SS":moment().format("HH:mm:ss"), | ||
43 | + "DDMMYYYY":moment().format("DDMMYYYY"), | ||
44 | + "DD-MM-YYYY HH:II::SS":moment().format("DD-MM-YYYY HH:mm:ss"), | ||
45 | + "YYYYMMDD-HHmmssSSS":moment().format("YYYYMMDD-HHmmssSSS") | ||
46 | + }; | ||
47 | + cb(null,this_time); | ||
48 | + | ||
49 | + }; | ||
50 | + Moment.remoteMethod('Moment',{ | ||
51 | + http:{path:'/Moment',verb:'get'}, | ||
52 | + returns: {arg: 'data', type: 'object', root: true} | ||
53 | + }) | ||
54 | + | ||
55 | +}; |
@@ -0,0 +1,26 @@ | @@ -0,0 +1,26 @@ | ||
1 | +var bluebird = require('bluebird'); | ||
2 | +var promise = new Promise(function (resolve,reject) { | ||
3 | + resolve('success') | ||
4 | +}) | ||
5 | +module.exports = function(Promises) { | ||
6 | + Promises.Ex = function (cb) { | ||
7 | + promise | ||
8 | + .then(MyFunc1()) | ||
9 | + .then(MyFunc2()); | ||
10 | + | ||
11 | + }; | ||
12 | + function MyFunc1(){ | ||
13 | + setTimeout(function(){ | ||
14 | + console.log('first'); | ||
15 | + return true; | ||
16 | + },1000); | ||
17 | + } | ||
18 | + function MyFunc2(){ | ||
19 | + console.log('second'); | ||
20 | + } | ||
21 | + Promises.remoteMethod('Ex',{ | ||
22 | + http:{path:'/Ex',verb:'get'}, | ||
23 | + accepts: { arg: 'ctx', type: 'object' } , | ||
24 | + returns: {arg: 'data', type: 'object', root: true} | ||
25 | + }) | ||
26 | +}; |
@@ -0,0 +1,82 @@ | @@ -0,0 +1,82 @@ | ||
1 | +var console = process.console; | ||
2 | +var unirest = require('unirest'); | ||
3 | + | ||
4 | +module.exports = function(Unirest) { | ||
5 | + | ||
6 | + Unirest.disableRemoteMethod("create", true); | ||
7 | + Unirest.disableRemoteMethod("upsert", true); | ||
8 | + Unirest.disableRemoteMethod("updateAll", true); | ||
9 | + Unirest.disableRemoteMethod("updateAttributes", false); | ||
10 | + | ||
11 | + Unirest.disableRemoteMethod("find", true); | ||
12 | + Unirest.disableRemoteMethod("findById", true); | ||
13 | + Unirest.disableRemoteMethod("findOne", true); | ||
14 | + | ||
15 | + Unirest.disableRemoteMethod("deleteById", true); | ||
16 | + | ||
17 | + Unirest.disableRemoteMethod("confirm", true); | ||
18 | + Unirest.disableRemoteMethod("count", true); | ||
19 | + Unirest.disableRemoteMethod("exists", true); | ||
20 | + Unirest.disableRemoteMethod("resetPassword", true); | ||
21 | + | ||
22 | + Unirest.disableRemoteMethod('__count__accessTokens', false); | ||
23 | + Unirest.disableRemoteMethod('__create__accessTokens', false); | ||
24 | + Unirest.disableRemoteMethod('__delete__accessTokens', false); | ||
25 | + Unirest.disableRemoteMethod('__destroyById__accessTokens', false); | ||
26 | + Unirest.disableRemoteMethod('__findById__accessTokens', false); | ||
27 | + Unirest.disableRemoteMethod('__get__accessTokens', false); | ||
28 | + Unirest.disableRemoteMethod('__updateById__accessTokens', false); | ||
29 | + | ||
30 | + Unirest.disableRemoteMethod('create', true); // Removes (POST) /products | ||
31 | + Unirest.disableRemoteMethod('upsert', true); // Removes (PUT) /products | ||
32 | + Unirest.disableRemoteMethod('deleteById', true); // Removes (DELETE) /products/:id | ||
33 | + Unirest.disableRemoteMethod("updateAll", true); // Removes (POST) /products/update | ||
34 | + Unirest.disableRemoteMethod("updateAttributes", false); // Removes (PUT) /products/:id | ||
35 | + Unirest.disableRemoteMethod('createChangeStream', true); // removes (GET|POST) /products/change-stream | ||
36 | + | ||
37 | + | ||
38 | + Unirest.HttpPost = function (ctx,cb) { | ||
39 | + console.log(ctx); | ||
40 | + var success = { | ||
41 | + "resultCode": 20000, | ||
42 | + "resultDescription":"Success", | ||
43 | + "data":ctx | ||
44 | + }; | ||
45 | + console.log(success); | ||
46 | + cb(null,success); | ||
47 | + }; | ||
48 | + Unirest.remoteMethod('HttpPost',{ | ||
49 | + http:{path:'/HttpPost',verb:'post'}, | ||
50 | + accepts: { arg: 'ctx', type: 'object',http: { source: 'body' }}, | ||
51 | + returns: {arg: 'data', type: 'object', root: true} | ||
52 | + }); | ||
53 | + Unirest.HttpGet = function (ctx,cb) { | ||
54 | + // cb = callback; | ||
55 | + var data = { | ||
56 | + "data":ctx | ||
57 | + }; | ||
58 | + unirest.post('http://localhost:3232/api/unirests/HttpPost') | ||
59 | + .send(data) | ||
60 | + .end(function (response) { | ||
61 | + response.body.data.docs = "http://unirest.io/nodejs.html"; | ||
62 | + console.log(response.body); | ||
63 | + cb(null,response.body) | ||
64 | + }); | ||
65 | + }; | ||
66 | + Unirest.remoteMethod('HttpGet',{ | ||
67 | + http:{path:'/unirest/:data',verb:'get'}, | ||
68 | + accepts: { arg: 'ctx', type: 'string', http: function(ctx) { | ||
69 | + // รับข้อมุลมาใส่ไว้ใน ctx | ||
70 | + // 1. รับข้อมูล object ที่ส่งมาโดยใช้ express | ||
71 | + var req = ctx.req; | ||
72 | + | ||
73 | + /* 2. Get ข้อมูลแบบ params | ||
74 | + * params คือค่าที่ส่งมากับ url ex http://localhost/Item/params1/params2 | ||
75 | + * รับค่ามาตั้งแต่ http:{path:'/: ตัวแปรที่รับค่าเก็บไว้ /: ตัวแปรที่รับค่าเก็บไว้ | ||
76 | + | ||
77 | + */ | ||
78 | + return req.params.data; | ||
79 | + } } , | ||
80 | + returns: {arg: 'data', type: 'object', root: true} | ||
81 | + }); | ||
82 | +}; |
package.json
@@ -8,10 +8,12 @@ | @@ -8,10 +8,12 @@ | ||
8 | "posttest": "nsp check" | 8 | "posttest": "nsp check" |
9 | }, | 9 | }, |
10 | "dependencies": { | 10 | "dependencies": { |
11 | + "bluebird": "^3.4.1", | ||
11 | "body-parser": "^1.15.2", | 12 | "body-parser": "^1.15.2", |
12 | "compression": "^1.0.3", | 13 | "compression": "^1.0.3", |
13 | "cors": "^2.5.2", | 14 | "cors": "^2.5.2", |
14 | "ejs": "^2.4.2", | 15 | "ejs": "^2.4.2", |
16 | + "fs.extra": "^1.3.2", | ||
15 | "helmet": "^1.3.0", | 17 | "helmet": "^1.3.0", |
16 | "loopback": "^2.22.0", | 18 | "loopback": "^2.22.0", |
17 | "loopback-boot": "^2.6.5", | 19 | "loopback-boot": "^2.6.5", |
@@ -20,6 +22,7 @@ | @@ -20,6 +22,7 @@ | ||
20 | "loopback-connector-mysql": "^2.3.0", | 22 | "loopback-connector-mysql": "^2.3.0", |
21 | "loopback-datasource-juggler": "^2.39.0", | 23 | "loopback-datasource-juggler": "^2.39.0", |
22 | "moment": "^2.13.0", | 24 | "moment": "^2.13.0", |
25 | + "node-yaml-config": "0.0.4", | ||
23 | "path": "^0.12.7", | 26 | "path": "^0.12.7", |
24 | "scribe-js": "^2.0.4", | 27 | "scribe-js": "^2.0.4", |
25 | "serve-favicon": "^2.0.1", | 28 | "serve-favicon": "^2.0.1", |
@@ -0,0 +1,45 @@ | @@ -0,0 +1,45 @@ | ||
1 | +/** | ||
2 | + * Created by Develop-SC on 11/7/2559. | ||
3 | + */ | ||
4 | +module.exports = function(app) { | ||
5 | + | ||
6 | + function modifyResponse(ctx, model, next) { | ||
7 | + var response; | ||
8 | + var status = ctx.res.statusCode; | ||
9 | + console.log(status); | ||
10 | + console.log(model); | ||
11 | + if(status === 200){ | ||
12 | + response = { | ||
13 | + "resultCode":model.resultCode ? model.resultCode : "20000", | ||
14 | + "resultDescript": model.resultDescript ? model.resultDescript : "Success", | ||
15 | + "data": model.data ? model.data : model | ||
16 | + }; | ||
17 | + }else{ | ||
18 | + response = { | ||
19 | + "resultCode":model.resultCode ? model.resultCode : "20000", | ||
20 | + "resultDescript": model.resultDescript ? model.resultDescript : "Success", | ||
21 | + "data": model.data ? model.data : model | ||
22 | + }; | ||
23 | + | ||
24 | + } | ||
25 | + ctx.res.send(response) | ||
26 | + .end(); | ||
27 | + } | ||
28 | + function modifyError(ctx,model,next){ | ||
29 | + var fail = { | ||
30 | + "resultCode": 50000, | ||
31 | + "resultDescription":"fail" | ||
32 | + }; | ||
33 | + ctx.res.send(fail).end(); | ||
34 | + } | ||
35 | + /*function validate(ctx,model,next){ | ||
36 | + var fail = { | ||
37 | + "resultCode": 50000, | ||
38 | + "resultDescription":"fail" | ||
39 | + }; | ||
40 | + ctx.res.send(fail).end(); | ||
41 | + } | ||
42 | + app.models.beforeRemote('**', validate);*/ | ||
43 | + app.models.Logs.afterRemote('**', modifyResponse); | ||
44 | + app.models.Logs.afterRemoteError('**', modifyError); | ||
45 | +}; | ||
0 | \ No newline at end of file | 46 | \ No newline at end of file |
server/config.json
server/datasources.json
@@ -22,86 +22,5 @@ | @@ -22,86 +22,5 @@ | ||
22 | "name": "radius", | 22 | "name": "radius", |
23 | "user": "radius", | 23 | "user": "radius", |
24 | "connector": "mysql" | 24 | "connector": "mysql" |
25 | - }, | ||
26 | - "account": { | ||
27 | - "host": "server8.sourcecode.co.th", | ||
28 | - "port": 3306, | ||
29 | - "url": "", | ||
30 | - "database": "account", | ||
31 | - "password": "A83kKhoAH4jcEHMY", | ||
32 | - "name": "account", | ||
33 | - "user": "npm_account", | ||
34 | - "connector": "mysql" | ||
35 | - }, | ||
36 | - "refill": { | ||
37 | - "host": "server8.sourcecode.co.th", | ||
38 | - "port": 3306, | ||
39 | - "url": "", | ||
40 | - "database": "refill", | ||
41 | - "password": "Fe8Vf63LtdGQaFtd", | ||
42 | - "name": "refill", | ||
43 | - "user": "npm_refill", | ||
44 | - "connector": "mysql" | ||
45 | - }, | ||
46 | - "smartquotation": { | ||
47 | - "host": "server8.sourcecode.co.th", | ||
48 | - "port": 3306, | ||
49 | - "url": "", | ||
50 | - "database": "smartquotation", | ||
51 | - "password": "Bwa7Z6ZRosU4RuAH", | ||
52 | - "name": "smartquotation", | ||
53 | - "user": "npm_smtquot", | ||
54 | - "connector": "mysql" | ||
55 | - }, | ||
56 | - "smartzone": { | ||
57 | - "host": "server8.sourcecode.co.th", | ||
58 | - "port": 3306, | ||
59 | - "url": "", | ||
60 | - "database": "smartzone", | ||
61 | - "password": "pADobokFAoPC384B", | ||
62 | - "name": "account", | ||
63 | - "user": "npm_szv3", | ||
64 | - "connector": "mysql" | ||
65 | - }, | ||
66 | - "smartzonev4": { | ||
67 | - "host": "server8.sourcecode.co.th", | ||
68 | - "port": 3306, | ||
69 | - "url": "", | ||
70 | - "database": "smartzonev4", | ||
71 | - "password": "Q7TsWo7UNbCsi3sb", | ||
72 | - "name": "smartzonev4", | ||
73 | - "user": "npm_szv4", | ||
74 | - "connector": "mysql" | ||
75 | - }, | ||
76 | - "thespecialdress": { | ||
77 | - "host": "server8.sourcecode.co.th", | ||
78 | - "port": 3306, | ||
79 | - "url": "", | ||
80 | - "database": "thespecialdress", | ||
81 | - "password": "bXGhkLoTJ9atAx72", | ||
82 | - "name": "thespecialdress", | ||
83 | - "user": "npm_tsd", | ||
84 | - "connector": "mysql" | ||
85 | - }, | ||
86 | - "thespecialdress_wp": { | ||
87 | - "host": "server8.sourcecode.co.th", | ||
88 | - "port": 3306, | ||
89 | - "url": "", | ||
90 | - "database": "thespecialdress_wp", | ||
91 | - "password": "gAUmK7Jcvq4F7CUs", | ||
92 | - "name": "thespecialdress_wp", | ||
93 | - "user": "npm_tsdwp", | ||
94 | - "connector": "mysql" | ||
95 | - }, | ||
96 | - "vtigercrm510": { | ||
97 | - "host": "server8.sourcecode.co.th", | ||
98 | - "port": 3306, | ||
99 | - "url": "", | ||
100 | - "database": "vtigercrm510", | ||
101 | - "password": "X6UUfWM8GJEPBzv3", | ||
102 | - "name": "vtigercrm510", | ||
103 | - "user": "npm_vtiger", | ||
104 | - "connector": "mysql" | ||
105 | } | 25 | } |
106 | } | 26 | } |
107 | - |
server/model-config.json
@@ -43,5 +43,33 @@ | @@ -43,5 +43,33 @@ | ||
43 | "order": { | 43 | "order": { |
44 | "dataSource": "mongodb", | 44 | "dataSource": "mongodb", |
45 | "public": true | 45 | "public": true |
46 | + }, | ||
47 | + "promises": { | ||
48 | + "dataSource": "db", | ||
49 | + "public": true | ||
50 | + }, | ||
51 | + "logs": { | ||
52 | + "dataSource": "db", | ||
53 | + "public": true | ||
54 | + }, | ||
55 | + "callback": { | ||
56 | + "dataSource": "db", | ||
57 | + "public": true | ||
58 | + }, | ||
59 | + "moment": { | ||
60 | + "dataSource": "db", | ||
61 | + "public": true | ||
62 | + }, | ||
63 | + "files": { | ||
64 | + "dataSource": "db", | ||
65 | + "public": true | ||
66 | + }, | ||
67 | + "unirest": { | ||
68 | + "dataSource": "db", | ||
69 | + "public": true | ||
70 | + }, | ||
71 | + "config": { | ||
72 | + "dataSource": "db", | ||
73 | + "public": true | ||
46 | } | 74 | } |
47 | } | 75 | } |