Aggregator's blueprints
Manual for jaggi Jaggi Π‘ΡΡΡΠΊΡΡΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²/ΠΏΠ°ΠΏΠΎΠΊ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ blocks -includes -%file_name%.js %pages_folder_name% -%page_folder_name% -%page_name.blocks.js%
%file_name%.js ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Β«Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΒ» ΠΎΡ ΠΊΡΠ΄Π° ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ Π±ΡΠ°ΡΡ json, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ (Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ json), Π΄Π»Ρ http ΠΈ https ΠΏΠ°ΠΏΠ°ΠΌΠ΅ΡΡ call ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ http
ΠΡΠΈΠΌΠ΅Ρ:
module.exports = {
call : 'http',
params : {
url : 'https://api.twitter.com/1/trends/1.json'
}
};
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ (Π² ΠΏΠΎΠ»Π΅ params)
-data
-method
-headers
-maxRedirects
-url
-dataType
ΠΠ΅ΡΠΎΠ΄Ρ Jaggi: create(): Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ call, Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ timeout (Π½Ρ) Π² call ΠΏΠΈΡΠ΅ΡΡΡΡ ΠΈΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ½ΠΈΠΌΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ Π² Β«ΠΊΠ°ΠΊΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π°Ρ Β» ΠΏΡΠΈΠΌΠ΅Ρ 1: call : { A : { //ΠΈΠΌΡ call : function(_, promise) { //Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ promise.fulfill('A done'); }, toState : { 'A-1-res' : '.' } } } ΠΡΠΈΠΌΠ΅Ρ2: { call : { 'feeds' : { include : 'includes/feeds.js',//ΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡΡ ΡΠ°ΠΉΠ» Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ (ΡΠΌ Π²ΡΡΠ΅ %file_name%.js) timeout : 10000, //ΡΠ°ΠΉΠΌΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡ call pointer : '.[:5]'//ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ², ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°Π΄ΠΎ Π²Π΅ΡΠ½ΡΡΡ, ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π½ΡΠΆΠ½ΠΎ Π²Π΅ΡΠ½ΡΡΡ } }, timeout : 10000, done : function(res, _, promise) { promise.fulfill(somefunc(res.feeds, res.users)); } } }, timeout : 20000 } ΠΡΠΈΠΌΠ΅Ρ3: { call : { 'top-trends' : { call : { 'trends' : { include : 'includes/trends.js', timeout : 10000, toState : { trends : '.trends[:3]' }, pointer : '.trends[:3]' },
'tweets' : {
deps : 'trends', //ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ trends
guard : 'trends',
params : function(ctx) {
return { trends : ctx.state('trends') };
},
call : function(params) {
return params.trends.map(function(trend) {
return {
include : 'includes/tweets.js',
timeout : 10000,
params : function() {
var res = this.__base();
res.data = { q : trend.query };
return res;
},
pointer : '.results[:3]'
}
});
},
timeout : 10000
}
},
timeout : 10000,
done : function(res, _, promise) {
promise.fulfillsomefunc(res.trends, res.tweets));
}
}
},
timeout : 20000
};
run(): Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ then(): ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΊΠ°Π»Π±ΡΠΊ