Skip to content

Commit 556122c

Browse files
added all new api and params in v1 without testing now
1 parent 31f42b5 commit 556122c

File tree

7 files changed

+259
-16
lines changed

7 files changed

+259
-16
lines changed

HsDropbox/.actionScriptProperties

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2-
<actionScriptProperties mainApplicationPath="HsDropbox.as" projectUUID="a25a4239-2a71-45e2-80ba-22963fba4ac9" version="6">
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" sourceFolderPath="src" strict="true" targetPlayerVersion="0.0.0" useApolloConfig="false" useDebugRSLSwfs="true" verifyDigests="true" warn="true">
2+
<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">
44
<compilerSourcePath/>
55
<libraryPath defaultLinkType="0">
66
<libraryPathEntry kind="4" path="">
77
<excludedEntries>
8-
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/flex.swc" useDefaultLinkType="false"/>
8+
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/core.swc" useDefaultLinkType="false"/>
99
</excludedEntries>
1010
</libraryPathEntry>
1111
<libraryPathEntry kind="1" linkType="1" path="libs"/>
@@ -17,4 +17,5 @@
1717
</applications>
1818
<modules/>
1919
<buildCSSFiles/>
20+
<flashCatalyst validateFlashCatalystCompatibility="false"/>
2021
</actionScriptProperties>

HsDropbox/.flexLibProperties

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2-
<flexLibProperties includeAllClasses="true" version="3">
3-
<includeClasses/>
2+
<flexLibProperties includeAllClasses="true" useMultiPlatformConfig="false" version="3">
3+
<includeClasses>
4+
<classEntry path="org.hamster.dropbox.models.SharesInfo"/>
5+
</includeClasses>
46
<includeResources/>
57
<namespaceManifests/>
68
</flexLibProperties>

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

Lines changed: 177 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ package org.hamster.dropbox
2121

2222
import org.hamster.dropbox.models.AccountInfo;
2323
import org.hamster.dropbox.models.DropboxFile;
24+
import org.hamster.dropbox.models.SharesInfo;
2425
import org.hamster.dropbox.utils.OAuthHelper;
2526

2627
import ru.inspirit.net.MultipartURLLoader;
@@ -51,6 +52,16 @@ package org.hamster.dropbox
5152
[Event(name="getFileFault", type="org.hamster.dropbox.DropboxEvent")]
5253
[Event(name="metadataResult", type="org.hamster.dropbox.DropboxEvent")]
5354
[Event(name="metadataFault", type="org.hamster.dropbox.DropboxEvent")]
55+
[Event(name="revisionResult", type="org.hamster.dropbox.DropboxEvent")]
56+
[Event(name="revisionFault", type="org.hamster.dropbox.DropboxEvent")]
57+
[Event(name="restoreResult", type="org.hamster.dropbox.DropboxEvent")]
58+
[Event(name="restoreFault", type="org.hamster.dropbox.DropboxEvent")]
59+
[Event(name="searchResult", type="org.hamster.dropbox.DropboxEvent")]
60+
[Event(name="searchFault", type="org.hamster.dropbox.DropboxEvent")]
61+
[Event(name="sharesResult", type="org.hamster.dropbox.DropboxEvent")]
62+
[Event(name="sharesFault", type="org.hamster.dropbox.DropboxEvent")]
63+
[Event(name="mediaResult", type="org.hamster.dropbox.DropboxEvent")]
64+
[Event(name="mediaFault", type="org.hamster.dropbox.DropboxEvent")]
5465

5566
/**
5667
* Dropbox client class, in order to use, you should build an instance of
@@ -82,6 +93,8 @@ package org.hamster.dropbox
8293
protected static const ACCESS_TOKEN:String = 'access_token';
8394
protected static const ACCOUNT_INFO:String = 'account_info';
8495
protected static const DROPBOX_FILE:String = 'dropbox_file';
96+
protected static const DROPBOX_FILE_LIST:String = 'dropbox_file_list';
97+
protected static const SHARES_INFO:String = 'shares_info';
8598

8699
/**
87100
* xperiments UPDATE
@@ -381,20 +394,34 @@ package org.hamster.dropbox
381394
* @param hash pass a hash value to perform better performance
382395
* @param list if query a directory, true to show sub list.
383396
* @param root, optional, default is "dropbox" 2011/01/22
397+
* @param include_deleted optional, added in v1
398+
* @param rev optional, added in v1
399+
* @param locale optional, added in v1
384400
* @return urlLoader
385401
*/
386402
public function metadata(path:String,
387-
fileLimit:int, hash:String, list:Boolean,
388-
root:String = DropboxConfig.DROPBOX):URLLoader
403+
fileLimit:int,
404+
hash:String,
405+
list:Boolean,
406+
include_deleted:Boolean = false,
407+
rev:String = "",
408+
locale:String = "",
409+
root:String = DropboxConfig.DROPBOX):URLLoader
389410
{
390411
var params:Object = {
391412
"file_limit" : fileLimit,
392413
"hash": hash,
393414
"list": list
394415
};
395416

417+
// added in v1
418+
if (include_deleted == true)
419+
buildOptionalParameters(params, 'include_deleted', include_deleted);
420+
buildOptionalParameters(params, 'rev', rev);
421+
buildOptionalParameters(params, 'locale', locale);
422+
396423
var urlRequest:URLRequest = buildURLRequest(
397-
config.server, "/metadata/" + root + '/' + buildFilePath(path), params);
424+
config.server, '/metadata/' + root + '/' + buildFilePath(path), params);
398425
return this.load(urlRequest, DropboxEvent.METADATA_RESULT,
399426
DropboxEvent.METADATA_FAULT, DROPBOX_FILE);
400427
}
@@ -451,17 +478,29 @@ package org.hamster.dropbox
451478
* @param fileName
452479
* @param data
453480
* @param root, optional, default is "dropbox" 2011/01/22
481+
* @param locale optional added in v1
482+
* @param overwrite optional added in v1
483+
* @param parent_rev optional added in v1
454484
* @return multipartURLLoader
455485
*/
456486
public function putFile(filePath:String,
457487
fileName:String,
458488
data:ByteArray,
489+
locale:String = "",
490+
overwrite:Boolean = true,
491+
parent_rev:String = "",
459492
root:String = DropboxConfig.DROPBOX):MultipartURLLoader
460493
{
461494
var url:String = this.buildFullURL(config.contentServer, '/files/' + root + '/' + buildFilePath(filePath));
462495
var params:Object = {
463496
"file" : fileName
464497
};
498+
499+
//added in version 1
500+
buildOptionalParameters(params, 'locale', locale);
501+
params.overwrite = overwrite.toString();
502+
buildOptionalParameters(params, 'parent_rev', parent_rev);
503+
465504
var urlReqHeader:URLRequestHeader = OAuthHelper.buildURLRequestHeader(url, params,
466505
config.consumerKey, config.consumerSecret,
467506
config.accessTokenKey, config.accessTokenSecret, URLRequestMethod.POST);
@@ -475,6 +514,117 @@ package org.hamster.dropbox
475514
return m;
476515
}
477516

517+
/**
518+
* added in v1, get revisions of a file.
519+
* https://api.dropbox.com/1/revisions/<root>/<path>
520+
*
521+
* @param filePathWithName
522+
* @root optional, default is dropbox.
523+
*/
524+
public function revisions(filePathWithName:String,
525+
root:String = DropboxConfig.DROPBOX):URLLoader
526+
{
527+
var urlRequest:URLRequest = buildURLRequest(
528+
config.server, '/revisions/' + root + '/' + buildFilePath(filePathWithName), null);
529+
return this.load(urlRequest, DropboxEvent.REVISION_RESULT,
530+
DropboxEvent.REVISION_FAULT, DROPBOX_FILE_LIST, URLLoaderDataFormat.TEXT);
531+
}
532+
533+
/**
534+
* added in v1, restore file by rev.
535+
* https://api.dropbox.com/1/restore/<root>/<path>
536+
*
537+
* @param filePathWithName
538+
* @param rev revision to restore
539+
* @locale optional
540+
* @root optional, default is dropbox.
541+
*
542+
*/
543+
public function restore(filePathWithName:String,
544+
rev:String,
545+
locale:String="",
546+
root:String = DropboxConfig.DROPBOX):URLLoader
547+
{
548+
var params:Object = {
549+
rev : rev
550+
};
551+
552+
buildOptionalParameters(params, 'locale', locale);
553+
554+
var urlRequest:URLRequest = buildURLRequest(
555+
config.server, '/restore/' + root + '/' + buildFilePath(filePathWithName), params, URLRequestMethod.POST);
556+
return this.load(urlRequest, DropboxEvent.RESTORE_RESULT,
557+
DropboxEvent.RESTORE_FAULT, DROPBOX_FILE, URLLoaderDataFormat.TEXT);
558+
}
559+
560+
/**
561+
* added in v1, search by query.
562+
* https://api.dropbox.com/1/search/<root>/<path>
563+
*
564+
* @param filePathWithName
565+
* @param rev revision to restore
566+
* @locale optional
567+
* @root optional, default is dropbox.
568+
*
569+
*/
570+
public function search(filePath:String,
571+
query:String,
572+
file_limit:int = 1000,
573+
include_deleted:Boolean = false,
574+
root:String = DropboxConfig.DROPBOX):URLLoader
575+
{
576+
var params:Object = {
577+
query : query
578+
};
579+
580+
buildOptionalParameters(params, 'file_limit', file_limit);
581+
buildOptionalParameters(params, 'include_deleted', include_deleted);
582+
583+
var urlRequest:URLRequest = buildURLRequest(
584+
config.server, '/search/' + root + '/' + buildFilePath(filePath), params, URLRequestMethod.POST);
585+
return this.load(urlRequest, DropboxEvent.SEARCH_RESULT,
586+
DropboxEvent.SEARCH_FAULT, DROPBOX_FILE_LIST, URLLoaderDataFormat.TEXT);
587+
}
588+
589+
/**
590+
*
591+
* https://api.dropbox.com/1/shares/<root>/<path>
592+
*
593+
* @param filePathWithName
594+
* @root optional, default is dropbox.
595+
*/
596+
public function shares(filePathWithName:String,
597+
root:String = DropboxConfig.DROPBOX):URLLoader
598+
{
599+
var urlRequest:URLRequest = buildURLRequest(
600+
config.server, '/shares/' + root + '/' + buildFilePath(filePathWithName), null);
601+
return this.load(urlRequest, DropboxEvent.SHARES_RESULT,
602+
DropboxEvent.SHARES_FAULT, SHARES_INFO, URLLoaderDataFormat.TEXT);
603+
}
604+
605+
/**
606+
*
607+
* https://api.dropbox.com/1/media/<root>/<path>
608+
*
609+
* @param filePathWithName
610+
* @root optional, default is dropbox.
611+
*/
612+
public function media(filePathWithName:String,
613+
locale:String = "",
614+
root:String = DropboxConfig.DROPBOX):URLLoader
615+
{
616+
var params:Object;
617+
if (locale != null && locale != "") {
618+
params = new Object();
619+
buildOptionalParameters(params, 'locale', locale);
620+
}
621+
622+
var urlRequest:URLRequest = buildURLRequest(
623+
config.server, '/media/' + root + '/' + buildFilePath(filePathWithName), params, URLRequestMethod.POST);
624+
return this.load(urlRequest, DropboxEvent.MEDIA_RESULT,
625+
DropboxEvent.MEDIA_FAULT, SHARES_INFO, URLLoaderDataFormat.TEXT);
626+
}
627+
478628
/**
479629
* Build a OAuth URL request.
480630
*
@@ -565,6 +715,19 @@ package org.hamster.dropbox
565715
var dropboxFile:DropboxFile = new DropboxFile();
566716
dropboxFile.decode(JSON.decode(urlLoader.data));
567717
resultObject = dropboxFile;
718+
} else if (urlLoader.resultType == DROPBOX_FILE_LIST) {
719+
var array:Array = new Array();
720+
var resultArray:* = JSON.decode(urlLoader.data);
721+
for each (var ro:Object in resultArray) {
722+
var df:DropboxFile = new DropboxFile();
723+
df.decode(ro);
724+
array.push(df);
725+
}
726+
resultObject = array;
727+
} else if (urlLoader.resultType == SHARES_INFO) {
728+
var sharesInfo:SharesInfo = new SharesInfo();
729+
sharesInfo.decode(JSON.decode(urlLoader.data));
730+
resultObject = sharesInfo;
568731
} else {
569732
resultObject = urlLoader.data;
570733
}
@@ -685,12 +848,22 @@ package org.hamster.dropbox
685848
*/
686849
private static function buildFilePath(filePath:String):String
687850
{
851+
if (filePath.indexOf('/') < 0) {
852+
return filePath;
853+
}
688854
var filePaths:Array = filePath.split('/');
689855
for (var i:int = 0; i < filePaths.length; i++) {
690856
filePaths[i] = encodeURIComponent(filePaths[i]);
691857
}
692858
return filePaths.join('/');
693859
}
860+
861+
private static function buildOptionalParameters(paramTarget:Object, paramName:String, paramValue:*):void
862+
{
863+
if (paramName != null && paramName != "" && paramValue != null && paramValue != "") {
864+
paramTarget[paramName] = paramValue.toString();
865+
}
866+
}
694867
}
695868
}
696869

@@ -711,6 +884,7 @@ internal class DropboxURLLoader extends URLLoader
711884
* REQUEST_TOKEN & ACCESS_TOKEN : set to DropboxConfig when type is requestToken & accessToken.
712885
* ACCOUNT_INFO : return an AccountInfo object
713886
* DROPBOX_FILE : return an DropboxFile object
887+
* DROPBOX_FILE_LIST : return an array of DropboxFile object
714888
* others : return response string.
715889
*/
716890
public var resultType:String;

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,19 @@ package org.hamster.dropbox
3939
*/
4040
public static const ACCOUNT_CREATE_RESULT:String = 'DropboxEvent_AccountCreateResult';
4141
public static const ACCOUNT_CREATE_FAULT:String = 'DropboxEvent_AccountCreateFault';
42+
/**
43+
* added in v1
44+
*/
45+
public static const REVISION_RESULT:String = "DropboxEvent_RevisionResult";
46+
public static const REVISION_FAULT:String = "DropboxEvent_RevisionFault";
47+
public static const RESTORE_RESULT:String = "DropboxEvent_RestoreResult";
48+
public static const RESTORE_FAULT:String = "DropboxEvent_RestoreFault";
49+
public static const SEARCH_RESULT:String = 'DropboxEvent_SearchResult';
50+
public static const SEARCH_FAULT:String = 'DropboxEvent_SearchFault';
51+
public static const SHARES_RESULT:String = 'DropboxEvent_SharesResult';
52+
public static const SHARES_FAULT:String = 'DropboxEvent_SharesFault';
53+
public static const MEDIA_RESULT:String = 'DropboxEvent_MediaResult';
54+
public static const MEDIA_FAULT:String = 'DropboxEvent_MediaFault';
4255

4356
/**
4457
* related URLLoader Event.

HsDropbox/src/org/hamster/dropbox/models/AccountInfo.as

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,16 @@ package org.hamster.dropbox.models
88
*/
99
public class AccountInfo extends DropboxModelSupport
1010
{
11-
[Bindable] public var uid:int;
12-
[Bindable] public var country:String;
13-
[Bindable] public var displayName:String;
14-
[Bindable] public var quotaInfo_shared:Number;
15-
[Bindable] public var quotaInfo_quota:Number;
16-
[Bindable] public var quotaInfo_normal:Number;
11+
public var uid:int;
12+
public var country:String;
13+
public var displayName:String;
14+
public var quotaInfo_shared:Number;
15+
public var quotaInfo_quota:Number;
16+
public var quotaInfo_normal:Number;
17+
18+
// added in version 1
19+
public var referral_link:String;
20+
public var email:String;
1721

1822
public function AccountInfo()
1923
{
@@ -31,12 +35,17 @@ package org.hamster.dropbox.models
3135
this.quotaInfo_normal = quotaInfo['normal'];
3236
this.quotaInfo_quota = quotaInfo['quota'];
3337
this.quotaInfo_shared = quotaInfo['shared'];
38+
this.referral_link = result['referral_link'];
39+
this.email = result['email'];
3440
}
3541

3642
override public function toString():String
3743
{
38-
return "AccountInfo [country=" + country + ", displayName="
39-
+ displayName + ", quotaInfo_normal=" + quotaInfo_normal
44+
return "AccountInfo [referral_link=" + referral_link
45+
+ ", email=" + email
46+
+ ", country=" + country
47+
+ ", displayName=" + displayName
48+
+ ", quotaInfo_normal=" + quotaInfo_normal
4049
+ ", quotaInfo_quota=" + quotaInfo_quota
4150
+ ", quotaInfo_shared=" + quotaInfo_shared + ", uid=" + uid
4251
+ "]";

HsDropbox/src/org/hamster/dropbox/models/DropboxFile.as

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ package org.hamster.dropbox.models
1616
public var mimeType:String;
1717
public var size:String;
1818
public var path:String;
19+
// added in version 1
20+
public var rev:String;
21+
public var revision:String;
22+
public var isDeleted:Boolean;
1923

2024
public var hash:String;
2125
public var contents:Array;
@@ -42,6 +46,9 @@ package org.hamster.dropbox.models
4246
this.mimeType = result['mime_type'];
4347
this.size = result['size'];
4448
this.path = result['path'];
49+
this.rev = result['rev'];
50+
this.revision = result['revision'];
51+
this.isDeleted = result['is_deleted'];
4552

4653
this.hash = result['hash'];
4754

@@ -57,6 +64,9 @@ package org.hamster.dropbox.models
5764
{
5865
var s:String = "DropboxFile [bytes=" + bytes
5966
s += ", hash=" + (hash == null ? "null" : hash)
67+
s += ", rev=" + (rev == null ? "null" : rev)
68+
s += ", revision=" + (revision == null ? "null" : revision)
69+
s += ", isDeleted=" + isDeleted
6070
s += ", icon=" + (icon == null ? "null" : icon)
6171
s += ", isDir=" + isDir == null
6272
s += ", mimeType=" + (mimeType == null ? "null" : mimeType)

0 commit comments

Comments
 (0)