4 Qt.include("oauth/oauth.js")
5 Qt.include("oauth/sha1.js")
7 function getToken(user,pass,root)
9 var url = "https://login.ubuntu.com/api/1.0/authentications?ws.op=authenticate&token_name=Ubuntu%20One%20@%20Ubi"
10 var xhr = new XMLHttpRequest();
12 xhr.open("GET",url,true,user,pass);
13 xhr.onreadystatechange = function() {
14 if(xhr.readyState===4) {
15 //console.log(xhr.status);
17 root.onErr(xhr.status);
19 //console.log(xhr.responseText);
20 var resp = eval('('+xhr.responseText+')');
23 secret: resp.token_secret,
24 consumer_key : resp.consumer_key,
25 consumer_secret: resp.consumer_secret,
27 registerToken(secrets,user,root);
37 function oAuthRequest(url,secrets,method,range)
40 consumerKey: secrets.consumer_key,
41 consumerSecret: secrets.consumer_secret,
43 tokenSecret: secrets.secret
45 if(!method) method = "GET";
50 ["oauth_consumer_key",accessor.consumerKey],
51 ["oauth_token",accessor.token],
52 ["oauth_version","1.0"]
55 OAuth.setTimestampAndNonce(message);
56 OAuth.SignatureMethod.sign(message,accessor);
57 var xhr = new XMLHttpRequest();
58 xhr.open(method,url,true);
59 var auth = OAuth.getAuthorizationHeader("",message.parameters);
60 xhr.setRequestHeader("Authorization",auth);
61 if(range) xhr.setRequestHeader("Range",range);
65 function oAuthHeader(url,secrets,method)
68 consumerKey: secrets.consumer_key,
69 consumerSecret: secrets.consumer_secret,
71 tokenSecret: secrets.secret
73 if(!method) method = "GET";
78 ["oauth_consumer_key",accessor.consumerKey],
79 ["oauth_token",accessor.token],
80 ["oauth_version","1.0"]
83 OAuth.setTimestampAndNonce(message);
84 OAuth.SignatureMethod.sign(message,accessor);
85 return OAuth.getAuthorizationHeader("",message.parameters);
88 function registerToken(secrets,user,root)
90 var url = "https://one.ubuntu.com/oauth/sso-finished-so-get-tokens/"+user;
91 var xhr = oAuthRequest(url,secrets);
92 xhr.onreadystatechange = function() {
93 if(xhr.readyState===4) {
95 //console.log(xhr.responseText);
96 root.onErr(xhr.status);
98 //root.onResp(secrets);
99 //console.log(xhr.responseText);
100 getAccount(secrets,root);
107 function getAccount(secrets,root)
109 var url = "https://one.ubuntu.com/api/account/";
110 var xhr = oAuthRequest(url,secrets);
111 //console.log("getAccount");
112 xhr.onreadystatechange = function() {
113 if(xhr.readyState===4) {
114 if(xhr.status>=400||xhr.status===0) {
115 //console.log(xhr.status);
116 //console.log(xhr.responseText);
117 //console.log("getAccount: err");
118 root.onErr(xhr.status);
120 //console.log(xhr.responseText);
121 //console.log("getAccount: ok");
122 var account = eval('('+xhr.responseText+')');
123 root.onResp(secrets,account);
130 function getFiles(secrets,rootNode,root)
132 var url = encodeURI2("https://one.ubuntu.com/api/file_storage/v1"
133 +rootNode+"/?include_children=true");
134 //console.log("url: "+url);
135 var xhr = oAuthRequest(url,secrets);
136 xhr.onreadystatechange = function() {
137 if(xhr.readyState===4) {
138 if(xhr.status>=400||xhr.status===0) {
139 root.onErr(xhr.status);
141 //console.log(xhr.responseText);
143 //console.log(xhr.getAllResponseHeaders());
144 var resp = eval('('+xhr.responseText+')');
145 var nodes = resp.children;
153 function getRootNode(secrets,root)
155 var url = "https://one.ubuntu.com/api/file_storage/v1";
156 var xhr = oAuthRequest(url,secrets);
157 xhr.onreadystatechange = function() {
158 if(xhr.readyState===4) {
159 if(xhr.status>=400||xhr.status===0) {
160 //console.log(xhr.status);
161 root.onErr(xhr.status);
163 //console.log(xhr.responseText);
164 var resp = eval('('+xhr.responseText+')');
165 root.onRespRootNode(resp);
172 function getFileTree(secrets,root)
174 var url = "https://one.ubuntu.com/api/file_storage/v1";
175 var xhr = oAuthRequest(url,secrets);
176 xhr.onreadystatechange = function() {
177 if(xhr.readyState===4) {
178 if(xhr.status>=400||xhr.status===0) {
179 //console.log(xhr.status);
180 root.onErr(xhr.status);
182 //console.log(xhr.responseText);
183 var resp = eval('('+xhr.responseText+')');
184 var rootNode = resp.root_node_path;
185 getFiles(secrets,rootNode,root);
192 function renameFile(secrets,resourcePath,targetPath,root)
194 var url = encodeURI2("https://one.ubuntu.com/api/file_storage/v1"+resourcePath);
195 console.log("url: "+url);
196 //console.log("target: "+encodeURI(targetPath));
197 //console.log("target: "+targetPath);
198 var xhr = oAuthRequest(url,secrets,"PUT");
199 xhr.setRequestHeader("Content-Type","application/json");
200 //var body = '{"path":"'+encodeURI(targetPath)+'"}';
201 var body = '{"path":"'+targetPath+'"}';
202 //console.log("body: "+body);
203 xhr.onreadystatechange = function() {
204 if(xhr.readyState===4) {
205 if(xhr.status>=400||xhr.status===0) {
206 console.log("status: "+xhr.status);
207 //console.log(xhr.responseText);
208 root.onErrRename(xhr.status);
210 //console.log("status: "+xhr.status);
211 //console.log(xhr.responseText);
212 var resp = eval('('+xhr.responseText+')');
214 root.onRespRename(resp);
222 function stopPublishing(secrets,resourcePath,root)
224 var url = encodeURI2("https://one.ubuntu.com/api/file_storage/v1"+resourcePath);
225 var xhr = oAuthRequest(url,secrets,"PUT");
226 xhr.setRequestHeader("Content-Type","application/json");
227 var body = '{"is_public":false}';
228 xhr.onreadystatechange = function() {
229 if(xhr.readyState===4) {
230 if(xhr.status>=400||xhr.status===0) {
231 //console.log("status: "+xhr.status);
232 //console.log(xhr.responseText);
233 root.onErrStopPublishing(xhr.status);
235 //console.log("status: "+xhr.status);
236 //console.log(xhr.responseText);
237 var resp = eval('('+xhr.responseText+')');
239 root.onRespStopPublishing(resp);
246 function startPublishing(secrets,resourcePath,root)
248 var url = encodeURI2("https://one.ubuntu.com/api/file_storage/v1"+resourcePath);
249 var xhr = oAuthRequest(url,secrets,"PUT");
250 xhr.setRequestHeader("Content-Type","application/json");
251 var body = '{"is_public":true}';
252 xhr.onreadystatechange = function() {
253 if(xhr.readyState===4) {
254 if(xhr.status>=400||xhr.status===0) {
255 //console.log("status: "+xhr.status);
256 //console.log(xhr.responseText);
257 root.onErrStartPublishing(xhr.status);
259 //console.log("status: "+xhr.status);
260 //console.log(xhr.responseText);
261 var resp = eval('('+xhr.responseText+')');
263 root.onRespStartPublishing(resp);
270 function newFolder(secrets,resourcePath,root)
272 var url = encodeURI2("https://one.ubuntu.com/api/file_storage/v1"+resourcePath);
273 //console.log("url: "+url);
274 var xhr = oAuthRequest(url,secrets,"PUT");
275 xhr.setRequestHeader("Content-Type","application/json");
276 var body = '{"kind": "directory"}';
277 //console.log("body: "+body);
278 xhr.onreadystatechange = function() {
279 if(xhr.readyState===4) {
280 if(xhr.status>=400||xhr.status===0) {
281 //console.log("status: "+xhr.status);
282 //console.log(xhr.responseText);
283 root.onErrNew(xhr.status);
285 //console.log("status: "+xhr.status);
286 //console.log(xhr.responseText);
295 function deleteFile(secrets,resourcePath,root,utils)
297 //var urlA = "https://one.ubuntu.com/api/file_storage/v1"+encodeURI(resourcePath);
298 var url = "https://one.ubuntu.com/api/file_storage/v1"+resourcePath;
299 var urlA = encodeURI2(url);
301 //console.log("u1.js:delete url="+url);
302 var auth = oAuthHeader(urlA,secrets,"DELETE");
303 utils.deleteFile(url,auth);
306 function getFileContentType(secrets,root,path)
308 //var url = "https://one.ubuntu.com/api/file_storage/v1"+encodeURI(path);
309 var url = encodeURI2("https://files.one.ubuntu.com"+path);
310 //console.log("url: "+url);
311 var xhr = oAuthRequest(url,secrets,"GET","bytes=0-10");
312 xhr.onreadystatechange = function() {
313 console.log("readyState: "+xhr.readyState);
314 if(xhr.readyState===4) {
315 if(xhr.status>=400||xhr.status===0) {
318 var ind = path.lastIndexOf("/");
320 filename = path.substr(ind+1);
324 var type = xhr.getResponseHeader("content-type");
325 //console.log("filename: "+filename+" type: "+type);
326 root.setContentType(type);
333 function fixFilename(path) {
334 path = path.toString();
336 var ind = path.lastIndexOf("/");
338 path = path.substr(ind+1);
340 if(path=="") path = "/";
345 function fixFolder(path) {
346 path = path.toString();
348 var ind = path.lastIndexOf("file://");
350 path = path.substr(ind+7);
352 if(path=="") path = "/";
357 function getFileContent(secrets,root,path,folder,size,utils)
359 //var url = "https://one.ubuntu.com/api/file_storage/v1"+encodeURI(path);
360 var url = "https://files.one.ubuntu.com"+path;
361 var urlA = encodeURI2(url);
363 var filename = fixFilename(path);
364 var ffolder = fixFolder(folder);
365 //console.log("url: "+url);
366 //console.log("ffolder: "+ffolder);
367 var auth = oAuthHeader(urlA,secrets,"GET");
368 //console.log("auth: "+auth);
369 utils.downloadFile(ffolder,filename,url,size,auth);
372 function uploadFile(secrets,root,path,filename,folder,utils)
374 var url = "https://files.one.ubuntu.com"+path;
375 var urlA = encodeURI2(url);
377 //console.log("u1.js:uploadFile url=" + url);
378 //console.log("u1.js:uploadFile urAl=" + urlA);
380 var ffolder = fixFolder(folder);
381 var auth = oAuthHeader(urlA,secrets,"PUT");
382 utils.uploadFile(ffolder,filename,url,auth);
385 function encodeURI2(uri)
387 var uri2 = encodeURI(uri);
388 uri2 = uri2.replace(/\%5B/g, "[");
389 uri2 = uri2.replace(/\%5D/g, "]");