Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f3334e6

Browse files
New changes.
1 parent 988168a commit f3334e6

File tree

26 files changed

+227
-268
lines changed

26 files changed

+227
-268
lines changed

‎async/controllers/default.js

Lines changed: 87 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,131 @@
11
exports.install = function() {
2-
F.route('/', view_index);
2+
F.route('/', json_index);
3+
4+
// Recommend:
5+
F.route('/array/', json_array);
6+
F.route('/array2/', json_array2);
7+
F.route('/number/', json_number);
38
};
49

5-
function view_index() {
10+
function json_index() {
611

712
var self = this;
8-
var builder = [];
9-
var async = new Utils.Async();
13+
var response = [];
14+
var async = new U.Async();
1015

1116
async.await(function(complete) {
12-
utils.request('https://www.google.com', ['get'],null, function(err, data) {
17+
U.request('https://www.google.com', ['get'], function(err, data) {
1318
var output = err ? 'error' : data.length.toString();
14-
builder.push('www.google.com -> ' + output);
19+
response.push('www.google.com -> ' + output);
1520
complete();
1621
});
1722
});
1823

1924
async.await(function(complete) {
20-
utils.request('http://www.expressjs.com', ['get'],null, function(err, data) {
25+
U.request('http://www.expressjs.com', ['get'], function(err, data) {
2126
var output = err ? 'error' : data.length.toString();
22-
builder.push('www.expressjs.com -> ' + output);
27+
response.push('www.expressjs.com -> ' + output);
2328
complete();
2429
});
2530
});
2631

2732
async.await(function(complete) {
28-
utils.request('http://www.yahoo.com', ['get'],null, function(err, data) {
33+
U.request('http://www.yahoo.com', ['get'], function(err, data) {
2934
var output = err ? 'error' : data.length.toString();
30-
builder.push('www.yahoo.com -> ' + output);
35+
response.push('www.yahoo.com -> ' + output);
3136
complete();
3237
});
3338
});
3439

3540
async.await('partial', function(complete) {
36-
utils.request('http://www.totaljs.com', ['get'],null, function(err, data) {
41+
U.request('http://www.totaljs.com', ['get'], function(err, data) {
3742
var output = err ? 'error' : data.length.toString();
38-
builder.push('www.totaljs.com -> ' + output);
43+
response.push('www.totaljs.com -> ' + output);
3944
complete();
4045
});
4146
});
4247

4348
// waiting for await('partial')
4449
async.wait('waiting 1', 'partial', function(complete) {
4550
console.log('waiting 1 complete');
46-
setTimeout(function() {
47-
complete();
48-
}, 1000);
51+
setTimeout(() => complete(), 1000);
4952
});
5053

5154
// waiting for wait('waiting')
5255
async.wait('waiting 2', 'waiting 1', function(complete) {
5356
console.log('waiting 2 complete');
54-
setTimeout(function() {
55-
complete();
56-
}, 1000);
57+
setTimeout(() => complete(), 1000);
5758
});
5859

5960
async.run(function() {
6061
if (self.xhr)
61-
return self.json(builder);
62-
self.view('index', builder);
62+
return self.json(response);
63+
self.view('index', response);
64+
});
65+
}
66+
67+
function json_array() {
68+
var async = [];
69+
var response = [];
70+
var self = this;
71+
72+
async.push(function(next) {
73+
U.request('https://www.google.com', ['get'], function(err, data) {
74+
var output = err ? 'error' : data.length.toString();
75+
response.push('www.google.com -> ' + output);
76+
next();
77+
});
78+
});
79+
80+
async.push(function(next) {
81+
U.request('http://www.expressjs.com', ['get'], function(err, data) {
82+
var output = err ? 'error' : data.length.toString();
83+
response.push('www.expressjs.com -> ' + output);
84+
next();
85+
});
86+
});
87+
88+
async.push(function(next) {
89+
U.request('http://www.yahoo.com', ['get'], function(err, data) {
90+
var output = err ? 'error' : data.length.toString();
91+
response.push('www.yahoo.com -> ' + output);
92+
next();
93+
});
6394
});
95+
96+
async.async(() => self.json(response));
97+
}
98+
99+
function json_array2() {
100+
var url = ['https://www.google.com', 'http://www.expressjs.com', 'http://www.yahoo.com'];
101+
var response = [];
102+
var self = this;
103+
104+
url.wait(function(item, next) {
105+
U.request(item, ['get'], function(err, data) {
106+
var output = err ? 'error' : data.length.toString();
107+
response.push(item + ' -> ' + output);
108+
next();
109+
});
110+
}, () => self.json(response));
111+
}
112+
113+
function json_number() {
114+
115+
var self = this;
116+
var response = [];
117+
var url = ['https://www.google.com', 'http://www.expressjs.com', 'http://www.yahoo.com'];
118+
var count = url.length;
119+
120+
count.async(function(index, next) {
121+
122+
index -= 1;
123+
124+
U.request(url[index], ['get'], function(err, data) {
125+
var output = err ? 'error' : data.length.toString();
126+
response.push(url[index] + ' -> ' + output);
127+
next();
128+
});
129+
130+
}, () => self.json(response));
64131
}

‎authorization/config-debug

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name : total.js
1+
name : Total.js
22
secret : secret-key-for-signature
33

44
// session cookie name

‎authorization/controllers/default.js

Lines changed: 5 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
exports.install = function() {
22
F.route('/', view_logged, ['authorize']);
33
F.route('/', view_homepage);
4-
F.route('/', json_homepage, ['xhr', 'post']);
5-
F.route('/logout/', logout, ['authorize','get']);
4+
F.route('/', json_login, ['post', '*User']);
5+
F.route('/logout/', logout, ['authorize']);
66
};
77

88
function view_logged() {
@@ -12,39 +12,12 @@ function view_logged() {
1212

1313
function view_homepage() {
1414
var self = this;
15-
self.view('homepage', { LoginName: '@' });
15+
self.view('homepage', { email: '@' });
1616
}
1717

18-
function json_homepage() {
19-
18+
function json_login() {
2019
var self = this;
21-
var error = self.validate(self.post, ['LoginName', 'LoginPassword']);
22-
23-
if (self.user !== null)
24-
error.add('Logged');
25-
26-
if (error.hasError()) {
27-
self.json(error);
28-
return;
29-
}
30-
31-
var db = self.database('users');
32-
db.one(n => n.email === self.body.LoginName && n.password === self.body.LoginPassword, function(err, user) {
33-
34-
if (user === null) {
35-
error.add('LoginError');
36-
self.json(error);
37-
return;
38-
}
39-
40-
self.database('users-logs').insert({ id: user.id, email: user.email, ip: self.req.ip, date: new Date() });
41-
42-
// Save to cookie
43-
self.res.cookie(F.config.cookie, F.encrypt({ id: user.id, ip: self.req.ip }, 'user'), new Date().add('5 minutes'));
44-
45-
// Return result
46-
self.json({ r: true });
47-
});
20+
self.body.$workflow('login', self, self.callback());
4821
}
4922

5023
function logout() {

‎authorization/definitions/authorization.js

Lines changed: 13 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,47 +5,33 @@
55
F.onAuthorize = function(req, res, flags, callback) {
66

77
var cookie = req.cookie(F.config.cookie);
8-
if (cookie===null || cookie.length < 10) {
8+
if (!cookie || cookie.length < 10) {
99
callback(false);
1010
return;
1111
}
1212

1313
var obj = F.decrypt(cookie, 'user');
1414

15-
if (obj===null||obj==='' || obj.ip !== req.ip) {
15+
if (!obj || obj.ip !== req.ip) {
1616
callback(false);
1717
return;
1818
}
1919

2020
var user = F.cache.read('user_' + obj.id);
21-
if (user!==null) {
21+
if (user) {
2222
req.user = user;
2323
callback(true);
2424
return;
2525
}
2626

27-
var db = F.database('users');
28-
29-
// find the user in database
30-
db.one(n => n.id === obj.id, function(err, user) {
31-
32-
if (user === null) {
33-
callback(false);
34-
return;
35-
}
36-
37-
F.cache.add('user_' + user.id, user, new Date().add('m', 5));
38-
callback(true, user);
27+
NOSQL('users').find().make(function(builder) {
28+
builder.where('id', obj.id);
29+
builder.first();
30+
builder.callback(function(err, response) {
31+
if (!response)
32+
return callback(false);
33+
F.cache.add('user_' + response.id, response, '5 minutes');
34+
callback(true, response);
35+
});
3936
});
40-
41-
};
42-
43-
44-
F.onValidation = function(name, value) {
45-
switch (name) {
46-
case 'LoginName':
47-
return U.isEmail(value);
48-
case 'LoginPassword':
49-
return value.length > 0;
50-
};
51-
}
37+
};

‎authorization/models/user.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
NEWSCHEMA('User').make(function(schema) {
2+
3+
schema.define('email', 'Email', true);
4+
schema.define('password', 'String(30)', true);
5+
6+
schema.addWorkflow('login', function(error, model, controller, callback) {
7+
8+
NOSQL('users').find().make(function(builder) {
9+
builder.first();
10+
builder.where('email', model.email);
11+
builder.where('password', model.password);
12+
builder.callback(function(err, response) {
13+
14+
if (!response) {
15+
error.push('error-user-404');
16+
return callback();
17+
}
18+
19+
// Writes logs
20+
NOSQL('users-logs').insert({ id: response.id, email: response.email, ip: controller.ip, date: new Date() });
21+
22+
// Sets cookies
23+
controller.cookie(F.config.cookie, F.encrypt({ id: response.id, ip: controller.ip }, 'user'), '5 minutes');
24+
25+
// Responds
26+
callback(SUCCESS(true));
27+
28+
}, error);
29+
});
30+
});
31+
32+
});
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
LoginName : please fill login name
22
LoginPassword : please fill login password
33
LoginError : your login is not valid
4-
Logged : you are still logged
4+
Logged : you are still logged
5+
6+
error-user-404 : User not found.

‎authorization/views/homepage.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,24 @@
2121
<form action="#" method="POST" id="f">
2222
<div>
2323
<div>Login name:</div>
24-
<div><input type="text" name="LoginName" value="@{model.LoginName}" maxlength="200" /></div>
24+
<div><input type="text" name="email" value="@{model.email}" maxlength="200" /></div>
2525
</div>
2626
<br />
2727
<div>
2828
<div>Login password:</div>
29-
<div><input type="text" name="LoginPassword" value="" maxlength="30" /></div>
29+
<div><input type="text" name="password" value="" maxlength="30" /></div>
3030
</div>
3131
<div id="error"></div>
3232
</form>
3333
<br />
3434
<button>Submit</button>
3535

36-
<scripttype="text/javascript">
36+
<script>
3737
$(document).ready(function() {
3838
$('button').bind('click', function() {
39-
$.post('/?ts=' + newDate().getTime(), $('#f').serialize(), function(d) {
39+
$.post('/?ts=' + Date.now(), $('#f').serialize(), function(d) {
4040
var err = $('#error');
41-
41+
4242
if (d instanceof Array) {
4343

4444
err.empty();

‎cache-partial/controllers/default.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ function view_homepage_cached() {
1111

1212
var item = F.cache.get(key);
1313

14-
if (item===null) {
14+
if (!item) {
1515
var date = new Date();
1616
item = date.toString();
17-
F.cache.add(key, item, date.add('5 minutes'));
17+
F.cache.add(key, item, '5 minutes');
1818
}
1919

2020
// press 15x refresh browser

‎contact-form/controllers/default.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
exports.install = function() {
22
F.route('/', view_form);
3-
F.route('/', json_form, ['xhr','post', '*ContactForm']);
3+
F.route('/', json_form, ['post', '*ContactForm']);
44
};
55

66
function view_form() {

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /