forked from masyl/ducktappe.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sample1.js
86 lines (68 loc) · 2.29 KB
/
sample1.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*
Note that the router is the "director" library:
https://github.com/flatiron/director
*/
var ducktape = require("./ducktape");
// Créé un serveur proxy vers le Journal de Montreal!
var JDM = ducktape({
host: "www.journaldemontreal.com",
port: "80"
});
/*
Cet exemple untilise un patch en JSDOM/jQuery et enlève les script et styles d'une page en particulier
*/
JDM.router.get("/2013/03/03/adele-en-panne-dinspiration", function () {
this.patchDOM(function (err, window) {
console.log("Removing all scripts");
// Remove all scripts and stylesheets
window.$("script").remove();
window.$("link[rel='stylesheet']").remove();
// Read the modified html source from the dom
var newHTML = window.document.innerHTML;
// Add back the doctype lost by JSDOM
newHTML = "<!DOCTYPE html>" + newHTML;
// Write a "success" header
this.res.writeHead(200)
// Send back the new content to the browser
this.res.end(newHTML);
});
})
/*
Cet exemple log les accès à la page des sports et laisse le proxy passer
NOTE SPECIAL : Quand il y à usage de "this.pass()", il faut aussi spécified { stream: true }
*/
JDM.router.get("/sports", { stream: true }, function () {
console.log("SECTION DES SPORTS!!!! Mais on fait rien avec...");
this.pass();
})
/*
Cet exemple intercepte un url pour répondre quelque-chose de custom
*/
JDM.router.get("/custom", function () {
this.res.write("Some custom page!!!");
this.res.end();
})
/*
Cet exemple intercepte un url pour répondre quelque-chose de custom
*/
JDM.router.get("/custom/:id", function (id) {
this.res.write("Some custom page with id : " + id + " !!!");
this.res.end();
})
/*
Cet exemple utilise un patch en "string" et remplace TOUS les url hard-codé par les url locaux
*/
JDM.router.get("/", function () {
console.log("Remplacement des URLs");
this.patch(function (err, body) {
// Replace all occurence of the domain name
// Aussi il trim des whitespace non-conformes pour que le browser reconnaisse le contenu html!!!
newBody = body.replace(/http:\/\/www.journaldemontreal.com\//g, "http://localhost:8080/").trim();
// Write a "success" header
this.res.writeHead(200)
// Send back the new content to the browser
this.res.end(newBody);
});
})
JDM.listen("8080");
console.log("Listening on localhost:8080");