/[refeed]/trunk/script/comm.js
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/script/comm.js

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2 - (show annotations)
Wed Jul 5 00:27:49 2006 UTC (17 years, 11 months ago) by dpavlin
File MIME type: application/javascript
File size: 4430 byte(s)
make working copy of trunk
1 /*----------------------------------------
2 $Id: comm.js,v 1.5 2005/10/12 23:15:13 migurski Exp $
3 vim: ts=4 foldcolumn=4 foldmethod=marker
4
5 This file is part of Reblog: http://reblog.org
6 A derivative work of Feed On Feeds: http://feedonfeeds.com
7
8 Distributed under the Gnu Public License, see LICENSE
9
10 Copyright ©2004 Michael Frumin, Michal Migurski
11 mike@stamen.com, http://stamen.com
12 mfrumin@eyebeam.org, http://eyebeam.org
13
14 comm.js - Refeed.ServerComm handles JSON-RPC calls to Refeed
15 ----------------------------------------*/
16
17 // namespace
18 if(window.refeed == null) { window.refeed = {}; }
19 if(Refeed == null) { var Refeed = window.refeed; }
20
21 Refeed.ServerComm = {
22
23 remoteCall: function(method, params, onResult, onError)
24 {
25 if(window.XMLHttpRequest) {
26 var request = new XMLHttpRequest();
27
28 } else if(window.ActiveXObject) {
29 var request = new ActiveXObject("Microsoft.XMLHTTP");
30
31 }
32
33 if(request) {
34 request.onreadystatechange = function()
35 {
36 if(request.readyState == 4) {
37 if(request.status == '200') {
38 //alert(request.responseText);
39 eval('var response = '+request.responseText+';');
40
41 if(response.result && !response.error && onResult) {
42 onResult(response.result);
43
44 } else if(response.error && !response.result && onError) {
45 onError(response.error);
46
47 }
48 }
49 }
50 };
51
52 request.open("POST", Refeed.ServerComm.callHREF, true);
53 request.send(Refeed.ServerComm.jsonEncode({method:method, params:params, id:0}));
54 }
55 },
56
57 jsonEncode: function(arg)
58 {
59 var i, o, u, v;
60
61 switch (typeof arg) {
62 case 'object':
63 if (arg) {
64 if (arg.constructor == Array) {
65 o = '';
66 for (i = 0; i < arg.length; ++i) {
67 v = Refeed.ServerComm.jsonEncode(arg[i]);
68 if (o) {
69 o += ',';
70 }
71 if (v !== u) {
72 o += v;
73 } else {
74 o += 'null,';
75 }
76 }
77 return '[' + o + ']';
78 } else if (typeof arg.toString != 'undefined') {
79 o = '';
80 for (i in arg) {
81 v = Refeed.ServerComm.jsonEncode(arg[i]);
82 if (v !== u) {
83 if (o) {
84 o += ',';
85 }
86 o += Refeed.ServerComm.jsonEncode(i) + ':' + v;
87 }
88 }
89 return '{' + o + '}';
90 } else {
91 return;
92 }
93 }
94 return 'null';
95 case 'unknown':
96 case 'undefined':
97 case 'function':
98 return u;
99 case 'string':
100 var c, i, l = arg.length, o = '"';
101 for (i = 0; i < l; i += 1) {
102 c = arg.charAt(i);
103 if (c >= ' ') {
104 if (c == '\\' || c == '"') {
105 o += '\\';
106 }
107 o += c;
108 } else {
109 switch (c) {
110 case '\b':
111 o += '\\b';
112 break;
113 case '\f':
114 o += '\\f';
115 break;
116 case '\n':
117 o += '\\n';
118 break;
119 case '\r':
120 o += '\\r';
121 break;
122 case '\t':
123 o += '\\t';
124 break;
125 default:
126 c = c.charCodeAt();
127 o += '\\u00' + Math.floor(c / 16).toString(16) +
128 (c % 16).toString(16);
129 }
130 }
131 }
132 return o + '"';
133 default:
134 return String(arg);
135 }
136 }
137 };

  ViewVC Help
Powered by ViewVC 1.1.26