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 = "https://one.ubuntu.com/api/file_storage/v1"
133 +encodeURI(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);
142 var resp = eval('('+xhr.responseText+')');
143 var nodes = resp.children;
151 function getFileTree(secrets,root)
153 var url = "https://one.ubuntu.com/api/file_storage/v1";
154 var xhr = oAuthRequest(url,secrets);
155 xhr.onreadystatechange = function() {
156 if(xhr.readyState===4) {
157 if(xhr.status>=400||xhr.status===0) {
158 console.log(xhr.status);
159 root.onErr(xhr.status);
161 //console.log(xhr.responseText);
162 var resp = eval('('+xhr.responseText+')');
163 var rootNode = resp.root_node_path;
164 getFiles(secrets,rootNode,root);
171 function renameFile(secrets,resourcePath,targetPath,root)
173 var url = "https://one.ubuntu.com/api/file_storage/v1"+encodeURI(resourcePath);
174 //console.log("url: "+url);
175 //console.log("target: "+encodeURI(targetPath));
176 //console.log("target: "+targetPath);
177 var xhr = oAuthRequest(url,secrets,"PUT");
178 xhr.setRequestHeader("Content-Type","application/json");
179 //var body = '{"path":"'+encodeURI(targetPath)+'"}';
180 var body = '{"path":"'+targetPath+'"}';
181 //console.log("body: "+body);
182 xhr.onreadystatechange = function() {
183 if(xhr.readyState===4) {
184 if(xhr.status>=400||xhr.status===0) {
185 console.log("status: "+xhr.status);
186 //console.log(xhr.responseText);
187 root.onErrRename(xhr.status);
189 //console.log("status: "+xhr.status);
190 //console.log(xhr.responseText);
191 var resp = eval('('+xhr.responseText+')');
193 root.onRespRename(resp);
201 function newFolder(secrets,resourcePath,root)
203 var url = "https://one.ubuntu.com/api/file_storage/v1"+encodeURI(resourcePath);
204 console.log("url: "+url);
205 var xhr = oAuthRequest(url,secrets,"PUT");
206 xhr.setRequestHeader("Content-Type","application/json");
207 var body = '{"kind": "directory"}';
208 console.log("body: "+body);
209 xhr.onreadystatechange = function() {
210 if(xhr.readyState===4) {
211 if(xhr.status>=400||xhr.status===0) {
212 console.log("status: "+xhr.status);
213 //console.log(xhr.responseText);
214 root.onErrNew(xhr.status);
216 //console.log("status: "+xhr.status);
217 //console.log(xhr.responseText);
226 function deleteFile(secrets,resourcePath,root,utils)
228 var url = "https://one.ubuntu.com/api/file_storage/v1"+encodeURI(resourcePath);
229 //console.log("url: "+url);
230 var auth = oAuthHeader(url,secrets,"DELETE");
231 utils.deleteFile(url,auth);
234 function getFileContentType(secrets,root,path)
236 //var url = "https://one.ubuntu.com/api/file_storage/v1"+encodeURI(path);
237 var url = "https://files.one.ubuntu.com"+encodeURI(path);
238 //console.log("url: "+url);
239 var xhr = oAuthRequest(url,secrets,"GET","bytes=0-10");
240 xhr.onreadystatechange = function() {
241 console.log("readyState: "+xhr.readyState);
242 if(xhr.readyState===4) {
243 if(xhr.status>=400||xhr.status===0) {
246 var ind = path.lastIndexOf("/");
248 filename = path.substr(ind+1);
252 var type = xhr.getResponseHeader("content-type");
253 //console.log("filename: "+filename+" type: "+type);
254 root.setContentType(type);
261 function fixFilename(path) {
262 path = path.toString();
264 var ind = path.lastIndexOf("/");
266 path = path.substr(ind+1);
268 if(path=="") path = "/";
273 function fixFolder(path) {
274 path = path.toString();
276 var ind = path.lastIndexOf("file://");
278 path = path.substr(ind+7);
280 if(path=="") path = "/";
285 function getFileContent(secrets,root,path,folder,size,utils)
287 //var url = "https://one.ubuntu.com/api/file_storage/v1"+encodeURI(path);
288 var url = "https://files.one.ubuntu.com"+encodeURI(path);
289 var filename = fixFilename(path);
290 var ffolder = fixFolder(folder);
291 //console.log("url: "+url);
292 //console.log("ffolder: "+ffolder);
293 var auth = oAuthHeader(url,secrets,"GET");
294 //console.log("auth: "+auth);
295 utils.downloadFile(ffolder,filename,url,size,auth);
298 function uploadFile(secrets,root,path,filename,folder,utils)
300 //var url = "https://one.ubuntu.com/api/file_storage/v1"+encodeURI(path);
301 var url = "https://files.one.ubuntu.com"+encodeURI(path);
302 var ffolder = fixFolder(folder);
303 var auth = oAuthHeader(url,secrets,"PUT");
304 utils.uploadFile(ffolder,filename,url,auth);