Skip to content

Commit 65e9049

Browse files
fix issues
1 parent 6449e30 commit 65e9049

File tree

4 files changed

+136
-54
lines changed

4 files changed

+136
-54
lines changed

HsDropbox/.actionScriptProperties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
22
<actionScriptProperties analytics="false" mainApplicationPath="HsDropbox.as" projectUUID="a25a4239-2a71-45e2-80ba-22963fba4ac9" version="10">
3-
<compiler additionalCompilerArguments="-locale en_US" autoRSLOrdering="true" copyDependentFiles="false" fteInMXComponents="false" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="false" htmlPlayerVersionCheck="true" includeNetmonSwc="false" outputFolderPath="bin" removeUnusedRSL="true" sourceFolderPath="src" strict="true" targetPlayerVersion="0.0.0" useApolloConfig="false" useDebugRSLSwfs="true" verifyDigests="true" warn="true">
3+
<compiler additionalCompilerArguments="-locale en_US" autoRSLOrdering="true" copyDependentFiles="false" flexSDK="Flex 3.6" fteInMXComponents="false" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="false" htmlPlayerVersionCheck="true" includeNetmonSwc="false" outputFolderPath="bin" removeUnusedRSL="true" sourceFolderPath="src" strict="true" targetPlayerVersion="0.0.0" useApolloConfig="false" useDebugRSLSwfs="true" verifyDigests="true" warn="true">
44
<compilerSourcePath/>
55
<libraryPath defaultLinkType="0">
66
<libraryPathEntry kind="4" path="">

HsDropbox/.settings/com.adobe.flexbuilder.project.prefs

Lines changed: 0 additions & 3 deletions
This file was deleted.

HsDropbox/src/org/hamster/dropbox/DropboxClient.as

Lines changed: 43 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -22,43 +22,42 @@ package org.hamster.dropbox
2222
import org.hamster.dropbox.utils.OAuthHelper;
2323

2424
import ru.inspirit.net.MultipartURLLoader;
25-
26-
[Event(name="accountCreateResult", type="org.hamster.dropbox.DropboxEvent")]
27-
[Event(name="accountCreateFault", type="org.hamster.dropbox.DropboxEvent")]
2825

29-
[Event(name="requestTokenResult", type="org.hamster.dropbox.DropboxEvent")]
30-
[Event(name="requestTokenFault", type="org.hamster.dropbox.DropboxEvent")]
31-
[Event(name="accessTokenResult", type="org.hamster.dropbox.DropboxEvent")]
32-
[Event(name="accessTokenFault", type="org.hamster.dropbox.DropboxEvent")]
33-
[Event(name="tokenResult", type="org.hamster.dropbox.DropboxEvent")]
34-
[Event(name="tokenFault", type="org.hamster.dropbox.DropboxEvent")]
26+
[Event(name="DropboxEvent_AccountCreateResult", type="org.hamster.dropbox.DropboxEvent")]
27+
[Event(name="DropboxEvent_AccountCreateFault", type="org.hamster.dropbox.DropboxEvent")]
28+
[Event(name="DropboxEvent_RequestTokenResult", type="org.hamster.dropbox.DropboxEvent")]
29+
[Event(name="DropboxEvent_RequestTokenFault", type="org.hamster.dropbox.DropboxEvent")]
30+
[Event(name="DropboxEvent_AccessTokenResult", type="org.hamster.dropbox.DropboxEvent")]
31+
[Event(name="DropboxEvent_AccessTokenFault", type="org.hamster.dropbox.DropboxEvent")]
32+
[Event(name="DropboxEvent_TokenResult", type="org.hamster.dropbox.DropboxEvent")]
33+
[Event(name="DropboxEvent_TokenFault", type="org.hamster.dropbox.DropboxEvent")]
3534

36-
[Event(name="accountInfoResult", type="org.hamster.dropbox.DropboxEvent")]
37-
[Event(name="accountInfoFault", type="org.hamster.dropbox.DropboxEvent")]
38-
[Event(name="putFileResult", type="org.hamster.dropbox.DropboxEvent")]
39-
[Event(name="putFileFault", type="org.hamster.dropbox.DropboxEvent")]
40-
[Event(name="fileCopyResult", type="org.hamster.dropbox.DropboxEvent")]
41-
[Event(name="fileCopyFault", type="org.hamster.dropbox.DropboxEvent")]
42-
[Event(name="fileCreateFolderResult", type="org.hamster.dropbox.DropboxEvent")]
43-
[Event(name="fileCreateFolderFault", type="org.hamster.dropbox.DropboxEvent")]
44-
[Event(name="fileDeleteResult", type="org.hamster.dropbox.DropboxEvent")]
45-
[Event(name="fileDeleteFault", type="org.hamster.dropbox.DropboxEvent")]
46-
[Event(name="fileMoveResult", type="org.hamster.dropbox.DropboxEvent")]
47-
[Event(name="fileMoveFault", type="org.hamster.dropbox.DropboxEvent")]
48-
[Event(name="getFileResult", type="org.hamster.dropbox.DropboxEvent")]
49-
[Event(name="getFileFault", type="org.hamster.dropbox.DropboxEvent")]
50-
[Event(name="metadataResult", type="org.hamster.dropbox.DropboxEvent")]
51-
[Event(name="metadataFault", type="org.hamster.dropbox.DropboxEvent")]
52-
[Event(name="revisionResult", type="org.hamster.dropbox.DropboxEvent")]
53-
[Event(name="revisionFault", type="org.hamster.dropbox.DropboxEvent")]
54-
[Event(name="restoreResult", type="org.hamster.dropbox.DropboxEvent")]
55-
[Event(name="restoreFault", type="org.hamster.dropbox.DropboxEvent")]
56-
[Event(name="searchResult", type="org.hamster.dropbox.DropboxEvent")]
57-
[Event(name="searchFault", type="org.hamster.dropbox.DropboxEvent")]
58-
[Event(name="sharesResult", type="org.hamster.dropbox.DropboxEvent")]
59-
[Event(name="sharesFault", type="org.hamster.dropbox.DropboxEvent")]
60-
[Event(name="mediaResult", type="org.hamster.dropbox.DropboxEvent")]
61-
[Event(name="mediaFault", type="org.hamster.dropbox.DropboxEvent")]
35+
[Event(name="DropboxEvent_AccountInfoResult", type="org.hamster.dropbox.DropboxEvent")]
36+
[Event(name="DropboxEvent_AccountInfoFault", type="org.hamster.dropbox.DropboxEvent")]
37+
[Event(name="DropboxEvent_PutFileResult", type="org.hamster.dropbox.DropboxEvent")]
38+
[Event(name="DropboxEvent_PutFileFault", type="org.hamster.dropbox.DropboxEvent")]
39+
[Event(name="DropboxEvent_FileCopyResult", type="org.hamster.dropbox.DropboxEvent")]
40+
[Event(name="DropboxEvent_FileCopyFault", type="org.hamster.dropbox.DropboxEvent")]
41+
[Event(name="DropboxEvent_FileCreateFolderResult", type="org.hamster.dropbox.DropboxEvent")]
42+
[Event(name="DropboxEvent_FileCreateFolderFault", type="org.hamster.dropbox.DropboxEvent")]
43+
[Event(name="DropboxEvent_FileDeleteResult", type="org.hamster.dropbox.DropboxEvent")]
44+
[Event(name="DropboxEvent_FileDeleteFault", type="org.hamster.dropbox.DropboxEvent")]
45+
[Event(name="DropboxEvent_FileMoveResult", type="org.hamster.dropbox.DropboxEvent")]
46+
[Event(name="DropboxEvent_FileMoveFault", type="org.hamster.dropbox.DropboxEvent")]
47+
[Event(name="DropboxEvent_GetFileResult", type="org.hamster.dropbox.DropboxEvent")]
48+
[Event(name="DropboxEvent_GetFileFault", type="org.hamster.dropbox.DropboxEvent")]
49+
[Event(name="DropboxEvent_MetadataResult", type="org.hamster.dropbox.DropboxEvent")]
50+
[Event(name="DropboxEvent_MetadataFault", type="org.hamster.dropbox.DropboxEvent")]
51+
[Event(name="DropboxEvent_RevisionResult", type="org.hamster.dropbox.DropboxEvent")]
52+
[Event(name="DropboxEvent_RevisionFault", type="org.hamster.dropbox.DropboxEvent")]
53+
[Event(name="DropboxEvent_RestoreResult", type="org.hamster.dropbox.DropboxEvent")]
54+
[Event(name="DropboxEvent_RestoreFault", type="org.hamster.dropbox.DropboxEvent")]
55+
[Event(name="DropboxEvent_SearchResult", type="org.hamster.dropbox.DropboxEvent")]
56+
[Event(name="DropboxEvent_SearchFault", type="org.hamster.dropbox.DropboxEvent")]
57+
[Event(name="DropboxEvent_SharesResult", type="org.hamster.dropbox.DropboxEvent")]
58+
[Event(name="DropboxEvent_SharesFault", type="org.hamster.dropbox.DropboxEvent")]
59+
[Event(name="DropboxEvent_MediaResult", type="org.hamster.dropbox.DropboxEvent")]
60+
[Event(name="DropboxEvent_FMediaFault", type="org.hamster.dropbox.DropboxEvent")]
6261

6362
/**
6463
* Dropbox client class, in order to use, you should build an instance of
@@ -448,7 +447,7 @@ package org.hamster.dropbox
448447
buildOptionalParameters(params, 'locale', locale);
449448

450449
var urlRequest:URLRequest = buildURLRequest(
451-
config.server, '/metadata/' + root + '/' + buildFilePath(path), params);
450+
config.server, '/metadata/' + root + '/' + path, params);
452451
return this.load(urlRequest, DropboxEvent.METADATA_RESULT,
453452
DropboxEvent.METADATA_FAULT, DROPBOX_FILE);
454453
}
@@ -473,7 +472,7 @@ package org.hamster.dropbox
473472
"size" : size
474473
};
475474
var urlRequest:URLRequest = buildURLRequest(
476-
config.contentServer, "/thumbnails/" + root + '/' + buildFilePath(pathToPhoto), params);
475+
config.contentServer, "/thumbnails/" + root + '/' + pathToPhoto, params);
477476
return this.load(urlRequest, DropboxEvent.THUMBNAILS_RESULT,
478477
DropboxEvent.THUMBNAILS_FAULT, "", URLLoaderDataFormat.BINARY);
479478
}
@@ -502,7 +501,7 @@ package org.hamster.dropbox
502501
}
503502
}
504503
var urlRequest:URLRequest = buildURLRequest(
505-
config.contentServer, "/files/" + root + '/' + buildFilePath(filePath), params);
504+
config.contentServer, "/files/" + root + '/' + filePath, params);
506505
return this.load(urlRequest, DropboxEvent.GET_FILE_RESULT,
507506
DropboxEvent.GET_FILE_FAULT, "", URLLoaderDataFormat.BINARY);
508507
}
@@ -532,7 +531,7 @@ package org.hamster.dropbox
532531
parent_rev:String = "",
533532
root:String = DropboxConfig.DROPBOX):MultipartURLLoader
534533
{
535-
var url:String = encodeURI(this.buildFullURL(config.contentServer, '/files/' + root + '/' + buildFilePath(filePath)));
534+
var url:String = this.buildFullURL(config.contentServer, '/files/' + root + '/' + filePath);
536535
var params:Object = {
537536
"file" : fileName
538537
};
@@ -571,7 +570,7 @@ package org.hamster.dropbox
571570
root:String = DropboxConfig.DROPBOX):URLLoader
572571
{
573572
var urlRequest:URLRequest = buildURLRequest(
574-
config.server, '/revisions/' + root + '/' + buildFilePath(filePathWithName), null);
573+
config.server, '/revisions/' + root + '/' + filePathWithName, null);
575574
return this.load(urlRequest, DropboxEvent.REVISION_RESULT,
576575
DropboxEvent.REVISION_FAULT, DROPBOX_FILE_LIST, URLLoaderDataFormat.TEXT);
577576
}
@@ -605,7 +604,7 @@ package org.hamster.dropbox
605604
buildOptionalParameters(params, 'locale', locale);
606605

607606
var urlRequest:URLRequest = buildURLRequest(
608-
config.server, '/restore/' + root + '/' + buildFilePath(filePathWithName), params, URLRequestMethod.POST);
607+
config.server, '/restore/' + root + '/' + filePathWithName, params, URLRequestMethod.POST);
609608
return this.load(urlRequest, DropboxEvent.RESTORE_RESULT,
610609
DropboxEvent.RESTORE_FAULT, DROPBOX_FILE, URLLoaderDataFormat.TEXT);
611610
}
@@ -641,7 +640,7 @@ package org.hamster.dropbox
641640
buildOptionalParameters(params, 'include_deleted', include_deleted);
642641

643642
var urlRequest:URLRequest = buildURLRequest(
644-
config.server, '/search/' + root + '/' + buildFilePath(filePath), params, URLRequestMethod.POST);
643+
config.server, '/search/' + root + '/' + filePath, params, URLRequestMethod.POST);
645644
return this.load(urlRequest, DropboxEvent.SEARCH_RESULT,
646645
DropboxEvent.SEARCH_FAULT, DROPBOX_FILE_LIST, URLLoaderDataFormat.TEXT);
647646
}
@@ -666,7 +665,7 @@ package org.hamster.dropbox
666665
root:String = DropboxConfig.DROPBOX):URLLoader
667666
{
668667
var urlRequest:URLRequest = buildURLRequest(
669-
config.server, '/shares/' + root + '/' + buildFilePath(filePathWithName), null);
668+
config.server, '/shares/' + root + '/' + filePathWithName, null);
670669
return this.load(urlRequest, DropboxEvent.SHARES_RESULT,
671670
DropboxEvent.SHARES_FAULT, SHARES_INFO, URLLoaderDataFormat.TEXT);
672671
}
@@ -698,7 +697,7 @@ package org.hamster.dropbox
698697
}
699698

700699
var urlRequest:URLRequest = buildURLRequest(
701-
config.server, '/media/' + root + '/' + buildFilePath(filePathWithName), params, URLRequestMethod.POST);
700+
config.server, '/media/' + root + '/' + filePathWithName, params, URLRequestMethod.POST);
702701
return this.load(urlRequest, DropboxEvent.MEDIA_RESULT,
703702
DropboxEvent.MEDIA_FAULT, SHARES_INFO, URLLoaderDataFormat.TEXT);
704703
}

HsDropbox/src/org/hamster/dropbox/utils/OAuthHelper.as

Lines changed: 92 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ package org.hamster.dropbox.utils
99
import flash.net.URLRequestMethod;
1010
import flash.utils.ByteArray;
1111

12-
import mx.utils.ObjectUtil;
13-
import mx.utils.UIDUtil;
14-
1512
/**
1613
* a refactor util class from org.iotashan.oauth.OAuthRequest
1714
*
@@ -103,14 +100,14 @@ package org.hamster.dropbox.utils
103100
httpMethod:String = URLRequestMethod.GET,
104101
signMethod:String = "HMAC-SHA1"):Object
105102
{
106-
var result:Object = ObjectUtil.copy(params);
103+
var result:Object = objectUtilCopy(params);
107104

108105
if (result == null) {
109106
result = new Object();
110107
}
111108

112109
var curDate:Date = new Date();
113-
var uuid:String = UIDUtil.getUID(curDate);
110+
var uuid:String = uidUtilCreateUID();
114111

115112
// first, let's add the oauth required params
116113
result["oauth_nonce"] = uuid;
@@ -202,7 +199,7 @@ package org.hamster.dropbox.utils
202199
{
203200
var ret:String = encodeURIComponent(httpMethod.toUpperCase());
204201
ret += "&";
205-
ret += encodeURIComponent(url);
202+
ret += encodeURIComponent(encodeURL(url));
206203
ret += "&";
207204

208205
var aParams:Array = new Array();
@@ -220,6 +217,95 @@ package org.hamster.dropbox.utils
220217
return ret;
221218
}
222219

220+
private static function encodeURL(url:String):String
221+
{
222+
var protocol:String = getProtocol(url);
223+
var tempURL:String = url.substring(protocol.length + 3);
224+
225+
var paths:Array = tempURL.split('/');
226+
for (var i:int = 0; i < paths.length; i++) {
227+
paths[i] = encodeURIComponent(paths[i]);
228+
}
229+
return protocol + "://" + paths.join('/');
230+
}
231+
232+
public static function getProtocol(url:String):String
233+
{
234+
var slash:int = url.indexOf("/");
235+
var indx:int = url.indexOf(":/");
236+
if (indx > -1 && indx < slash)
237+
{
238+
return url.substring(0, indx);
239+
}
240+
else
241+
{
242+
indx = url.indexOf("::");
243+
if (indx > -1 && indx < slash)
244+
return url.substring(0, indx);
245+
}
246+
247+
return "";
248+
}
249+
250+
public static function objectUtilCopy(value:Object):Object
251+
{
252+
var buffer:ByteArray = new ByteArray();
253+
buffer.writeObject(value);
254+
buffer.position = 0;
255+
var result:Object = buffer.readObject();
256+
return result;
257+
}
258+
259+
private static const ALPHA_CHAR_CODES:Array = [48, 49, 50, 51, 52, 53, 54,
260+
55, 56, 57, 65, 66, 67, 68, 69, 70];
261+
private static function uidUtilCreateUID():String
262+
{
263+
var uid:Array = new Array(36);
264+
var index:int = 0;
265+
266+
var i:int;
267+
var j:int;
268+
269+
for (i = 0; i < 8; i++)
270+
{
271+
uid[index++] = ALPHA_CHAR_CODES[Math.floor(Math.random() * 16)];
272+
}
273+
274+
for (i = 0; i < 3; i++)
275+
{
276+
uid[index++] = 45; // charCode for "-"
277+
278+
for (j = 0; j < 4; j++)
279+
{
280+
uid[index++] = ALPHA_CHAR_CODES[Math.floor(Math.random() * 16)];
281+
}
282+
}
283+
284+
uid[index++] = 45; // charCode for "-"
285+
286+
var time:Number = new Date().getTime();
287+
// Note: time is the number of milliseconds since 1970,
288+
// which is currently more than one trillion.
289+
// We use the low 8 hex digits of this number in the UID.
290+
// Just in case the system clock has been reset to
291+
// Jan 1-4, 1970 (in which case this number could have only
292+
// 1-7 hex digits), we pad on the left with 7 zeros
293+
// before taking the low digits.
294+
var timeString:String = ("0000000" + time.toString(16).toUpperCase()).substr(-8);
295+
296+
for (i = 0; i < 8; i++)
297+
{
298+
uid[index++] = timeString.charCodeAt(i);
299+
}
300+
301+
for (i = 0; i < 4; i++)
302+
{
303+
uid[index++] = ALPHA_CHAR_CODES[Math.floor(Math.random() * 16)];
304+
}
305+
306+
return String.fromCharCode.apply(null, uid);
307+
}
308+
223309
/**
224310
*
225311
* @param tokenResponse Result from a getRequest/AccessToken call.

0 commit comments

Comments
 (0)