annotate static-files/js/api.js @ 58:422fcf9774b1

added js, css, and img subdirectories to static-files.
author Atul Varma <avarma@mozilla.com>
date Mon, 28 Jun 2010 16:51:13 -0700
parents static-files/api.js@fe5a2f26787d
children ce0fb8a780a4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
1 (
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
2 // Set up the public API for the Summit IDP.
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
3 function(window) {
54
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
4 // parseUri 1.2.2
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
5 // (c) Steven Levithan <stevenlevithan.com>
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
6 // MIT License
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
7
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
8 function parseUri (str) {
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
9 var o = parseUri.options,
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
10 m = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
11 uri = {},
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
12 i = 14;
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
13
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
14 while (i--) uri[o.key[i]] = m[i] || "";
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
15
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
16 uri[o.q.name] = {};
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
17 uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
18 if ($1) uri[o.q.name][$1] = $2;
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
19 });
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
20
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
21 return uri;
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
22 };
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
23
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
24 parseUri.options = {
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
25 strictMode: false,
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
26 key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
27 q: {
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
28 name: "queryKey",
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
29 parser: /(?:^|&)([^&=]*)=?([^&]*)/g
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
30 },
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
31 parser: {
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
32 strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
33 loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
34 }
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
35 };
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
36
17
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
37 var currId = 0;
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
38
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
39 function MessageBroker(handlers, postMessage) {
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
40 var awaitingResponses = {};
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
41
19
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
42 function sendResponse(id, value, target) {
17
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
43 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
44
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
45 this.callCmd = function callCmd(cmd, options, cb) {
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
46 var msg = {
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
47 type: "cmd",
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
48 name: cmd,
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
49 id: ++currId,
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
50 options: options
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
51 };
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
52 if (cb) {
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
53 awaitingResponses[currId] = cb;
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
54 msg.cb = true;
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
55 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
56 postMessage(msg);
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
57 };
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
58
19
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
59 this.onMessage = function onMessage(msg, origin, source) {
17
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
60 switch (msg.type) {
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
61 case "response":
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
62 if (msg.id in awaitingResponses) {
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
63 var cb = awaitingResponses[msg.id];
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
64 delete awaitingResponses[msg.id];
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
65 cb(msg.value);
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
66 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
67 break;
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
68 case "cmd":
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
69 var handler = msg.name;
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
70 if (handler in handlers) {
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
71 var cb = undefined;
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
72 if (msg.cb)
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
73 cb = function(response) {
19
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
74 postMessage({type: "response",
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
75 id: msg.id,
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
76 value: response
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
77 },
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
78 source);
17
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
79 };
19
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
80 handlers[handler](msg.options, cb, origin);
17
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
81 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
82 break;
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
83 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
84 };
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
85 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
86
19
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
87 function Server(handlers) {
17
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
88 var broker = new MessageBroker(handlers, postMessage);
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
89 var originBrokers = {};
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
90
19
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
91 function brokerForOrigin(origin) {
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
92 function postMessage(msg, target) {
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
93 target.postMessage(JSON.stringify(msg), origin);
17
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
94 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
95
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
96 return new MessageBroker(handlers, postMessage);
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
97 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
98
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
99 function onMessage(event) {
19
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
100 if (!(event.origin in originBrokers))
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
101 originBrokers[event.origin] = brokerForOrigin(event.origin);
17
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
102
19
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
103 originBrokers[event.origin].onMessage(JSON.parse(event.data),
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
104 event.origin,
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
105 event.source);
17
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
106 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
107
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
108 window.addEventListener("message", onMessage, false);
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
109 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
110
54
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
111 function GenericClient(origin, url) {
17
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
112 var broker = new MessageBroker({}, postMessage);
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
113 var iframe = window.document.createElement("iframe");
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
114 var otherWindow;
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
115 var queuedMessages = [];
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
116
54
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
117 iframe.src = url;
17
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
118
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
119 iframe.onload = function() {
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
120 otherWindow = iframe.contentWindow;
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
121 queuedMessages.forEach(postMessage);
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
122 queuedMessages = [];
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
123 };
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
124
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
125 iframe.style.display = "none";
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
126 window.document.documentElement.appendChild(iframe);
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
127
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
128 function postMessage(msg) {
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
129 if (!otherWindow)
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
130 queuedMessages.push(msg);
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
131 else
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
132 otherWindow.postMessage(JSON.stringify(msg), origin);
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
133 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
134
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
135 function onMessage(event) {
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
136 if (event.origin == origin)
19
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
137 broker.onMessage(JSON.parse(event.data), event.origin,
e1b3e9916b57 made origin detection happen on a per-handler basis.
Atul Varma <avarma@mozilla.com>
parents: 17
diff changeset
138 event.source);
17
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
139 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
140
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
141 this.callCmd = broker.callCmd;
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
142
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
143 window.addEventListener("message", onMessage, false);
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
144 };
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
145
54
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
146 function Client(url) {
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
147 if (url === undefined)
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
148 url = ".";
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
149
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
150 var parsed = parseUri(url);
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
151
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
152 if (parsed.protocol == "") {
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
153 var a = window.document.createElement("a");
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
154 a.href = url;
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
155 window.document.documentElement.appendChild(a);
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
156 url = a.href;
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
157 window.document.documentElement.removeChild(a);
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
158 parsed = parseUri(url);
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
159 }
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
160
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
161 if (parsed.protocol != "http" &&
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
162 parsed.protocol != "https")
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
163 throw new Error("invalid server URL: " + url);
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
164
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
165 var origin = parsed.protocol + "://" + parsed.authority;
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
166
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
167 console.log(parsed, origin, url);
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
168
17
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
169 var self = this;
54
fe5a2f26787d Made client api more humane wrt: urls.
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
170 var client = new GenericClient(origin, url + "server.html");
17
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
171
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
172 function addMethod(name) {
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
173 self[name] = function(options, cb) {
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
174 if (typeof(options) == "function" && !cb) {
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
175 cb = options;
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
176 options = null;
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
177 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
178 client.callCmd(name, options, cb);
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
179 };
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
180 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
181
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
182 addMethod("getAllUsers");
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
183 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
184
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
185 window.Summit = {
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
186 Client: Client,
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
187 Server: Server
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
188 };
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
189 }
18d28e6a9887 Added sample client and postMessage-based API.
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
190 )(window);