Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(582)

Side by Side Diff: remoting/webapp/me2mom/xhr.js

Issue 8587050: Implement rename and delete. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleaned up CSS. Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview 6 * @fileoverview
7 * Simple utilities for making XHRs more pleasant. 7 * Simple utilities for making XHRs more pleasant.
8 */ 8 */
9 9
10 'use strict'; 10 'use strict';
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 * either as an associative array, or a string. If it is a string, do 44 * either as an associative array, or a string. If it is a string, do
45 * not include the ? and be sure it is correctly URLEncoded. 45 * not include the ? and be sure it is correctly URLEncoded.
46 * @param {Object.<string>=} opt_headers Additional headers to include on the 46 * @param {Object.<string>=} opt_headers Additional headers to include on the
47 * request. 47 * request.
48 * @param {boolean=} opt_withCredentials Set the withCredentials flags in the 48 * @param {boolean=} opt_withCredentials Set the withCredentials flags in the
49 * XHR. 49 * XHR.
50 * @return {XMLHttpRequest} The request object. 50 * @return {XMLHttpRequest} The request object.
51 */ 51 */
52 remoting.xhr.get = function(url, onDone, opt_parameters, opt_headers, 52 remoting.xhr.get = function(url, onDone, opt_parameters, opt_headers,
53 opt_withCredentials) { 53 opt_withCredentials) {
54 /** @type {XMLHttpRequest} */ 54 return remoting.xhr.doMethod('GET', url, onDone, opt_parameters,
55 var xhr = new XMLHttpRequest(); 55 opt_headers, opt_withCredentials);
56 xhr.onreadystatechange = function() {
57 if (xhr.readyState != 4) {
58 return;
59 }
60 onDone(xhr);
61 };
62
63 // Add parameters into URL.
64 if (typeof(opt_parameters) === 'string') {
65 if (opt_parameters.length > 0) {
66 url = url + '?' + opt_parameters;
67 }
68 } else if (typeof(opt_parameters) === 'object') {
69 var paramString = remoting.xhr.urlencodeParamHash(opt_parameters);
70 if (paramString.length > 0) {
71 url = url + '?' + paramString;
72 }
73 } else if (opt_parameters === undefined) {
74 // No problem here. Do nothing.
75 } else {
76 throw 'opt_parameters must be string or associated array.';
77 }
78
79 xhr.open('GET', url, true);
80
81 // Add in request headers.
82 if (typeof(opt_headers) === 'object') {
83 for (var key in opt_headers) {
84 xhr.setRequestHeader(key, opt_headers[key]);
85 }
86 } else if (opt_headers === undefined) {
87 // No problem here. Do nothing.
88 } else {
89 throw 'opt_headers must be associative array.';
90 }
91
92 if (opt_withCredentials) {
93 xhr.withCredentials = true;
94 }
95
96 xhr.send(null);
97 return xhr;
98 }; 56 };
99 57
100 /** 58 /**
101 * Execute an XHR POST asynchronously. 59 * Execute an XHR POST asynchronously.
102 * 60 *
103 * @param {string} url The base URL to POST, excluding parameters. 61 * @param {string} url The base URL to POST, excluding parameters.
104 * @param {function(XMLHttpRequest):void} onDone The function to call on 62 * @param {function(XMLHttpRequest):void} onDone The function to call on
105 * completion. 63 * completion.
106 * @param {(string|Object.<string>)=} opt_parameters The request parameters, 64 * @param {(string|Object.<string>)=} opt_parameters The request parameters,
107 * either as an associative array, or a string. If it is a string, be 65 * either as an associative array, or a string. If it is a string, be
108 * sure it is correctly URLEncoded. 66 * sure it is correctly URLEncoded.
109 * @param {Object.<string>=} opt_headers Additional headers to include on the 67 * @param {Object.<string>=} opt_headers Additional headers to include on the
110 * request. 68 * request.
111 * @param {boolean=} opt_withCredentials Set the withCredentials flags in the 69 * @param {boolean=} opt_withCredentials Set the withCredentials flags in the
112 * XHR. 70 * XHR.
113 * @return {void} Nothing. 71 * @return {XMLHttpRequest} The request object.
114 */ 72 */
115 remoting.xhr.post = function(url, onDone, opt_parameters, opt_headers, 73 remoting.xhr.post = function(url, onDone, opt_parameters, opt_headers,
116 opt_withCredentials) { 74 opt_withCredentials) {
75 return remoting.xhr.doMethod('POST', url, onDone, opt_parameters,
76 opt_headers, opt_withCredentials);
77 };
78
79 /**
80 * Execute an XHR DELETE asynchronously.
81 *
82 * @param {string} url The base URL to DELETE, excluding parameters.
83 * @param {function(XMLHttpRequest):void} onDone The function to call on
84 * completion.
85 * @param {(string|Object.<string>)=} opt_parameters The request parameters,
86 * either as an associative array, or a string. If it is a string, be
87 * sure it is correctly URLEncoded.
88 * @param {Object.<string>=} opt_headers Additional headers to include on the
89 * request.
90 * @param {boolean=} opt_withCredentials Set the withCredentials flags in the
91 * XHR.
92 * @return {XMLHttpRequest} The request object.
93 */
94 remoting.xhr.remove = function(url, onDone, opt_parameters, opt_headers,
95 opt_withCredentials) {
96 return remoting.xhr.doMethod('DELETE', url, onDone, opt_parameters,
97 opt_headers, opt_withCredentials);
98 };
99
100 /**
101 * Execute an XHR PUT asynchronously.
102 *
103 * @param {string} url The base URL to PUT, excluding parameters.
104 * @param {function(XMLHttpRequest):void} onDone The function to call on
105 * completion.
106 * @param {(string|Object.<string>)=} opt_parameters The request parameters,
107 * either as an associative array, or a string. If it is a string, be
108 * sure it is correctly URLEncoded.
109 * @param {Object.<string>=} opt_headers Additional headers to include on the
110 * request.
111 * @param {boolean=} opt_withCredentials Set the withCredentials flags in the
112 * XHR.
113 * @return {XMLHttpRequest} The request object.
114 */
115 remoting.xhr.put = function(url, onDone, opt_parameters, opt_headers,
116 opt_withCredentials) {
117 return remoting.xhr.doMethod('PUT', url, onDone, opt_parameters,
118 opt_headers, opt_withCredentials);
119 };
120
121 /**
122 * Execute an arbitrary HTTP method asynchronously.
123 *
124 * @param {string} methodName The HTTP method name, e.g. "GET", "POST" etc.
125 * @param {string} url The base URL to POST, excluding parameters.
Wez 2011/11/17 22:58:58 nit: lose "to POST", and clarify that the URL shou
Jamie 2011/11/18 22:54:57 I've done the first bit. I don't think the second
126 * @param {function(XMLHttpRequest):void} onDone The function to call on
127 * completion.
128 * @param {(string|Object.<string>)=} opt_parameters The request parameters,
129 * either as an associative array, or a string. If it is a string, be
130 * sure it is correctly URLEncoded.
131 * @param {Object.<string>=} opt_headers Additional headers to include on the
132 * request.
133 * @param {boolean=} opt_withCredentials Set the withCredentials flags in the
134 * XHR.
135 * @return {XMLHttpRequest} The XMLHttpRequest object.
136 */
137 remoting.xhr.doMethod = function(methodName, url, onDone,
138 opt_parameters, opt_headers,
139 opt_withCredentials) {
117 /** @type {XMLHttpRequest} */ 140 /** @type {XMLHttpRequest} */
118 var xhr = new XMLHttpRequest(); 141 var xhr = new XMLHttpRequest();
119 xhr.onreadystatechange = function() { 142 xhr.onreadystatechange = function() {
120 if (xhr.readyState != 4) { 143 if (xhr.readyState != 4) {
121 return; 144 return;
122 } 145 }
123 onDone(xhr); 146 onDone(xhr);
124 }; 147 };
125 148
126 // Add parameters into URL. 149 var parameterString = '';
127 var postData = '';
128 if (typeof(opt_parameters) === 'string') { 150 if (typeof(opt_parameters) === 'string') {
129 postData = opt_parameters; 151 parameterString = opt_parameters;
130 } else if (typeof(opt_parameters) === 'object') { 152 } else if (typeof(opt_parameters) === 'object') {
131 postData = remoting.xhr.urlencodeParamHash(opt_parameters); 153 parameterString = remoting.xhr.urlencodeParamHash(opt_parameters);
Wez 2011/11/17 22:58:58 Are you sure you should URL-encode the PUT body, g
Jamie 2011/11/18 22:54:57 Now that you mention it, no. Since we never curren
132 } else if (opt_parameters === undefined) { 154 } else if (opt_parameters === undefined) {
133 // No problem here. Do nothing. 155 // No problem here. Do nothing.
134 } else { 156 } else {
135 throw 'opt_parameters must be string or associated array.'; 157 throw 'opt_parameters must be string or associated array.';
136 } 158 }
137 159
138 xhr.open('POST', url, true); 160 var useBody = (methodName == 'POST') || (methodName == 'PUT');
Wez 2011/11/17 22:58:58 Do we ever POST a large enough chunk of data to ju
Jamie 2011/11/18 22:54:57 No, but I don't think it works otherwise. I'll dou
139 xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
140 161
162 if (!useBody && parameterString != '') {
163 url = url + '?' + parameterString;
164 }
165
166 xhr.open(methodName, url, true);
167 if (methodName == 'POST') {
168 xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
Wez 2011/11/17 22:58:58 So presumably the caller _must_ specify the conten
Jamie 2011/11/18 22:54:57 Unless there's a default. We only call it in one p
169 }
141 // Add in request headers. 170 // Add in request headers.
142 if (typeof(opt_headers) === 'object') { 171 if (typeof(opt_headers) === 'object') {
143 for (var key in opt_headers) { 172 for (var key in opt_headers) {
144 xhr.setRequestHeader(key, opt_headers[key]); 173 xhr.setRequestHeader(key, opt_headers[key]);
145 } 174 }
146 } else if (opt_headers === undefined) { 175 } else if (opt_headers === undefined) {
147 // No problem here. Do nothing. 176 // No problem here. Do nothing.
148 } else { 177 } else {
149 throw 'opt_headers must be associative array.'; 178 throw 'opt_headers must be associative array.';
150 } 179 }
151 180
152 if (opt_withCredentials) { 181 if (opt_withCredentials) {
153 xhr.withCredentials = true; 182 xhr.withCredentials = true;
154 } 183 }
155 184
156 xhr.send(postData); 185 xhr.send(useBody ? parameterString : null);
186 return xhr;
157 }; 187 };
OLDNEW
« remoting/webapp/me2mom/host_list.js ('K') | « remoting/webapp/me2mom/host_list.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698