diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..f80c54e9dd6e4365e04d34935e16ab8a3325134b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,190 @@
+# Created by .ignore support plugin (hsz.mobi)
+### Android template
+# Built application files
+*.apk
+*.ap_
+*.aab
+
+# Files for the ART/Dalvik VM
+*.dex
+
+# Java class files
+*.class
+
+# Generated files
+bin/
+gen/
+out/
+release/
+
+# Gradle files
+.gradle
+build
+
+# Local configuration file (sdk path, etc)
+local.properties
+
+# Proguard folder generated by Eclipse
+proguard/
+
+# Log Files
+*.log
+
+# Android Studio Navigation editor temp files
+.navigation/
+
+# Android Studio captures folder
+captures/
+
+# IntelliJ
+*.iml
+.idea/workspace.xml
+.idea/tasks.xml
+.idea/gradle.xml
+.idea/assetWizardSettings.xml
+.idea/dictionaries
+.idea/libraries
+# Android Studio 3 in .gitignore file.
+.idea/caches
+.idea/modules.xml
+# Comment next line if keeping position of elements in Navigation Editor is relevant for you
+.idea/navEditor.xml
+*.iml
+*.ipr
+*.iws
+out
+.idea
+
+# Keystore files
+# Uncomment the following lines if you do not want to check your keystore files in.
+#*.jks
+#*.keystore
+
+# External native build folder generated in Android Studio 2.2 and later
+.externalNativeBuild
+
+# Google Services (e.g. APIs or Firebase)
+# google-services.json
+
+# Freeline
+freeline.py
+freeline/
+freeline_project_description.json
+
+# fastlane
+fastlane/report.xml
+fastlane/Preview.html
+fastlane/screenshots
+fastlane/test_output
+fastlane/readme.md
+
+# Version control
+vcs.xml
+
+# lint
+lint/intermediates/
+lint/generated/
+lint/outputs/
+lint/tmp/
+# lint/reports/
+
+### JetBrains template
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn. Uncomment if using
+# auto-import.
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+# *.iml
+# *.ipr
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+### macOS template
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+/.idea/
+/demo/src/main/assets/global.properties
diff --git a/ks3-android-sdk/.gitignore b/ks3-android-sdk/.gitignore
index 7c4863e306aebb2fc48bfbd75463a06520a2981d..f80c54e9dd6e4365e04d34935e16ab8a3325134b 100644
--- a/ks3-android-sdk/.gitignore
+++ b/ks3-android-sdk/.gitignore
@@ -187,3 +187,4 @@ Temporary Items
.apdisk
/.idea/
+/demo/src/main/assets/global.properties
diff --git a/ks3-android-sdk/README.md b/ks3-android-sdk/README.md
index c9e4c7166fddbbca20c965a7269f3d888dac9a63..e665f000dacabbdd8ab811a5ff70651bed7ae3d7 100644
--- a/ks3-android-sdk/README.md
+++ b/ks3-android-sdk/README.md
@@ -1,5 +1,36 @@
+## 打包
+
+### 打包前注意事项
+
+- 修改`ksyun.ks3/util/Constants`内的`VERSION`版本号。
+
### 打包过程
+- 执行 Build --> Clean Project
+- 执行 Build --> Rebuild Project
+- 打开`ks3-android-sdk/ks3androidsdk/build.gradle`
+- 修改`current_version`版本号
+- 执行`makeJar`任务
+
+### 打包后jar包路径
+
+- ks3-android-sdk/ks3androidsdk/build/libs/
+
+### 压缩包整合
+
+- 将sdk jar包与依赖包整合为压缩包放至`releases`目录下
+
+## demo运行
+
+### 运行准备
+
+- 在`ks3-android-sdk/demo/src/main`目录下新建`assets`目录
+- 在`assets`目录下新建`global.properties`文件
+- 在`global.properties`文件中添加如下配置
+
+```
+ak=your_ak
+sk=your_sk
+```
-### 注意事项
-- 每次更新,打jar时需要修改`ksyun.ks3/util/Constants`内的`VERSION`版本号。
\ No newline at end of file
+- 运行`ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MainActivity.java`
\ No newline at end of file
diff --git a/ks3-android-sdk/demo/build.gradle b/ks3-android-sdk/demo/build.gradle
index 7d296e02d5bfca9ae5d0ef7a337e0cd9a0b11ed5..4afd8b455082ad7ab25260b75be4f3f725d03fa8 100644
--- a/ks3-android-sdk/demo/build.gradle
+++ b/ks3-android-sdk/demo/build.gradle
@@ -24,6 +24,5 @@ dependencies {
implementation 'com.blankj:utilcodex:1.25.8'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'junit:junit:4.12'
-// implementation files('libs/ks3-androidsdk-1.5.0.jar')
}
diff --git a/ks3-android-sdk/demo/src/main/AndroidManifest.xml b/ks3-android-sdk/demo/src/main/AndroidManifest.xml
index 5096ab4a7d1ac76c84b2747ad43dd68385455817..e57bb26646b942e5de334d2972799316101b3394 100644
--- a/ks3-android-sdk/demo/src/main/AndroidManifest.xml
+++ b/ks3-android-sdk/demo/src/main/AndroidManifest.xml
@@ -1,8 +1,8 @@
+ package="com.ks3.demo.main"
+ android:versionCode="1"
+ android:versionName="1.0">
@@ -11,31 +11,38 @@
+ android:name=".MyApplication"
+ android:usesCleartextTraffic="true"
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@style/AppTheme">
+ android:name=".MainActivity"
+ android:exported="true"
+ android:theme="@style/AppTheme"
+ android:label="@string/app_name">
+ android:name=".UploadActivity"
+ android:exported="true"
+ android:label="@string/app_name" />
+ android:name=".DownloadActivity"
+ android:exported="true"
+ android:label="@string/app_name" />
+ android:name=".RESTAPITestResult"
+ android:exported="true"
+ android:label="@string/title_activity_main" />
-
+
\ No newline at end of file
diff --git a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/BucketInpuDialog.java b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/BucketInpuDialog.java
index 4a372ad6f5d326439bd1550c3ebca523ff0df9d9..5fa8780b2dcff33dc4207b5425faae056b936ca9 100644
--- a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/BucketInpuDialog.java
+++ b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/BucketInpuDialog.java
@@ -9,6 +9,8 @@ import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
+import java.util.Date;
+
/**
*
* 自定义Dialog,Bucket输入对话框
diff --git a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/BucketObjectInpuDialog.java b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/BucketObjectInpuDialog.java
index 843e3c2cb2335f346926ad9283b33fec4e00260b..56bfcfcb2c7f81f71e605479c0db55e582804511 100644
--- a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/BucketObjectInpuDialog.java
+++ b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/BucketObjectInpuDialog.java
@@ -9,6 +9,8 @@ import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
+import com.ksyun.ks3.util.StringUtils;
+
/**
*
* 自定义Dialog
@@ -26,6 +28,7 @@ public class BucketObjectInpuDialog extends Dialog implements
private Button cancelBtn;
private Context context;
private EditText objectField;
+ private EditText paramField; // 除bucket object外的参数
public BucketObjectInpuDialog(Context context) {
super(context);
@@ -48,12 +51,35 @@ public class BucketObjectInpuDialog extends Dialog implements
private void setUpViews() {
bucketField = (EditText) findViewById(R.id.input);
objectField = (EditText) findViewById(R.id.input_second);
+ paramField = findViewById(R.id.param);
okBtn = (Button) findViewById(R.id.ok);
cancelBtn = (Button) findViewById(R.id.cancel);
okBtn.setOnClickListener(this);
cancelBtn.setOnClickListener(this);
}
+ public void showParamField () {
+ this.paramField.setVisibility(View.VISIBLE);
+ }
+
+ public void hidParamField () {
+ this.paramField.setVisibility(View.INVISIBLE);
+ }
+
+ public void setDefaultValue (String bucketName, String objectKey) {
+ if (StringUtils.isBlank(bucketName)) {
+ bucketField.setText(bucketName);
+ }
+ if (StringUtils.isBlank(objectKey)) {
+ objectField.setText(objectKey);
+ }
+ }
+
+ // 获取param的值
+ public String getParamValue () {
+ return paramField.getText().toString();
+ }
+
@Override
public void onClick(View v) {
if (listener != null) {
@@ -73,6 +99,7 @@ public class BucketObjectInpuDialog extends Dialog implements
break;
case R.id.cancel:
BucketObjectInpuDialog.this.dismiss();
+ this.hidParamField();
break;
default:
break;
diff --git a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/Constants.java b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/Constants.java
index 1b9f04eb011c6296278fe85e262eaf33dda0c1c2..2fe15843e2dd7a4a3d20b8422c85b39419a5a709 100644
--- a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/Constants.java
+++ b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/Constants.java
@@ -1,33 +1,38 @@
package com.ks3.demo.main;
/**
- *
* Demo中一些常量
- *
*/
public class Constants {
- // public static final String ACCESS_KEY__ID = "YOUR_ACCESS_KEY_ID";
- // public static final String ACCESS_KEY_SECRET = "YOUR_ACCESS_KEY_SECRET";
- public static final String TEST_TXT = "YOUR_TEST_TXT_IN_SDCARD_ROOT_PATH";
- public static final String TEST_IMG = "YOUR_TEST_IMG_IN_SDCARD_ROOT_PATH";
- protected static final String UPLOAD_ID = "YOUR_UPLOAD_ID";
- // public static final String APP_SERTVER_HOST =
- // "http://192.168.231.49:119
- public static final String TEST_MULTIUPLOAD_FILE = "/storage/emulated/0/storage/watch.jpg";
- public static final String TEST_MULTIUPLOAD_BUCKET = "aaabbbccc";
+ // public static final String ACCESS_KEY__ID = "YOUR_ACCESS_KEY_ID";
+ // public static final String ACCESS_KEY_SECRET = "YOUR_ACCESS_KEY_SECRET";
+ public static final String TEST_TXT = "YOUR_TEST_TXT_IN_SDCARD_ROOT_PATH";
+ public static final String TEST_IMG = "/storage/emulated/0/storage/watch.jpg";
+ protected static final String UPLOAD_ID = "a0112e98e1614a20ab287fab070c2f47";
+ // public static final String APP_SERTVER_HOST =
+ // "http://192.168.231.49:119
+ public static final String TEST_MULTIUPLOAD_FILE = "/storage/emulated/0/storage/PDF.pdf";
+ public static final String TEST_MULTIUPLOAD_BUCKET = "android-test";
- public static final String APP_SERTVER_HOST = "YOUR_APP_SERVER_HOST";
- // 测试用AK&SK
- public static final String ACCESS_KEY__ID = "YOUR_AK";
- public static final String ACCESS_KEY_SECRET = "YOUR_SK";
- public static final String END_POINT = "YOUR_END_POINT";
+ public static final String APP_SERTVER_HOST = "YOUR_APP_SERVER_HOST";
+ // 测试用AK&SK
+ public static String ACCESS_KEY__ID = "YOUR_AK";
+ public static String ACCESS_KEY_SECRET = "YOUR_SK";
+ public static final String END_POINT = "ks3-cn-beijing.ksyuncs.com";
- public static final long MULTI_UPLOAD_THREADHOLD = 1 * 1024 * 1024;
+ public static final long MULTI_UPLOAD_THREADHOLD = 1 * 1024 * 1024;
- public static final int READ_TIMEOUT = 3000;
+ public static final int READ_TIMEOUT = 3000;
- public static final String SRC_BUCKETNAME = "";
- public static final String SRC_OBJECTKEY = "";
- public static final String DST_BUCKETNAME = "";
+ public static final String SRC_BUCKETNAME = "android-test";
+ public static final String SRC_OBJECTKEY = "1.jpg";
+ public static final String DST_BUCKETNAME = "android-test";
+ public static final String DST_OBJECTKEY = "1.copy.jpg";
+
+ // 为调试方便从assets/global.properties文件中读取ak、sk并赋值 不建议在正式环境使用如下方式
+ public static void setAKSK(String ak, String sk) {
+ ACCESS_KEY__ID = ak;
+ ACCESS_KEY_SECRET = sk;
+ }
}
\ No newline at end of file
diff --git a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/DownloadActivity.java b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/DownloadActivity.java
index 60b46e3f82b9557bbcb86c1b222167af52f67259..299029c6527196200f35fb418bde615162b7a48e 100644
--- a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/DownloadActivity.java
+++ b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/DownloadActivity.java
@@ -8,8 +8,6 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
-import cz.msebera.android.httpclient.Header;
-
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
@@ -34,10 +32,12 @@ import android.widget.Toast;
import com.blankj.utilcode.util.ToastUtils;
import com.ks3.demo.main.BucketInpuDialog.OnBucketDialogListener;
-import com.ksyun.ks3.exception.Ks3Error;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
import com.ksyun.ks3.model.Ks3ObjectSummary;
import com.ksyun.ks3.model.ObjectListing;
import com.ksyun.ks3.model.result.GetObjectResult;
+import com.ksyun.ks3.model.result.ListObjectsResult;
import com.ksyun.ks3.services.Ks3Client;
import com.ksyun.ks3.services.Ks3ClientConfiguration;
import com.ksyun.ks3.services.handler.GetObjectResponseHandler;
@@ -47,428 +47,440 @@ import com.ksyun.ks3.services.request.ListObjectsRequest;
import com.ksyun.ks3.util.StringUtils;
/**
- *
* Download相关API使用示例,如getObject,listObject等
- *
*/
public class DownloadActivity extends Activity implements OnItemClickListener {
- private ListView mListView;
- private ProgressBar mProgressBar;
- private Ks3ClientConfiguration configuration;
- private Ks3Client client;
- private Map dataSource;
- private RemoteFileAdapter adapter;
- private TextView currentBucketTextView;
- private File storeForder;
- private myHandler mHandler = new myHandler();
- private BucketInpuDialog bucketInpuDialog;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_download);
- setUp();
- bucketInpuDialog = new BucketInpuDialog(DownloadActivity.this);
- prepareStoreForder();
- bucketInpuDialog.setOnBucketInputListener(new OnBucketDialogListener() {
- @Override
- public void confirmBucket(String name) {
- // 输入框确获取Bucket之后,开始ListObjects操作
- listObjects(name, null);
- }
- });
- bucketInpuDialog.show();
- }
-
- private void prepareStoreForder() {
- storeForder = new File(Environment.getExternalStorageDirectory(),
- "ksyun_download");
- if (!storeForder.exists()) {
- storeForder.mkdirs();
- } else if (storeForder.isFile()) {
- storeForder.delete();
- }
- }
-
- private void listObjects(String bucketName, final String prefix) {
- final ListObjectsRequest request = new ListObjectsRequest(bucketName);
- if (!StringUtils.isBlank(prefix))
- request.setPrefix(prefix);
- request.setDelimiter("/");
- client.listObjects(request, new ListObjectsResponseHandler() {
- @Override
- public void onSuccess(int statesCode, Header[] responceHeaders,
- ObjectListing objectListing) {
- mProgressBar.setVisibility(View.GONE);
- currentBucketTextView.setVisibility(View.VISIBLE);
- mListView.setVisibility(View.VISIBLE);
- currentBucketTextView.setText("当前路径:Bucket:"
- + request.getBucketname() + "-" + prefix);
-
- List objectSummaries = objectListing
- .getObjectSummaries();
- if (objectSummaries != null && objectSummaries.size() != 0) {
- for (Ks3ObjectSummary object : objectSummaries) {
- String objectKey = object.getKey();
- if (dataSource.get(objectKey) == null) {
- RemoteFile remoteFile = new RemoteFile();
- remoteFile.bucketName = objectListing
- .getBucketName();
- remoteFile.objectKey = objectKey;
- remoteFile.isCommomPrefix = false;
- remoteFile.icon = DemoUtils.matchImage(
- DownloadActivity.this, false, objectKey);
- remoteFile.size = object.getSize();
- remoteFile.lastModified = object.getLastModified();
- remoteFile.progress = 0;
- remoteFile.status = RemoteFile.STATUS_NOT_START;
- dataSource.put(objectKey, remoteFile);
- }
- }
- }
- List commonPrefixes = objectListing.getCommonPrefixes();
- if (commonPrefixes != null && commonPrefixes.size() != 0) {
- for (String prifix : commonPrefixes) {
- RemoteFile remoteFile = new RemoteFile();
- remoteFile.bucketName = objectListing.getBucketName();
- remoteFile.objectKey = prifix;
- remoteFile.icon = DemoUtils.matchImage(
- DownloadActivity.this, true, prifix);
- remoteFile.progress = 0;
- remoteFile.isCommomPrefix = true;
- remoteFile.status = RemoteFile.STATUS_NOT_START;
- dataSource.put(prifix, remoteFile);
- }
- }
- adapter.fillDatas();
- }
-
- @Override
- public void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
-
- }
- });
- }
-
- private void setUp() {
- // Ks3Client初始化
- configuration = Ks3ClientConfiguration.getDefaultConfiguration();
- client = Ks3ClientFactory.getDefaultClient(this);
-
- // AuthListener方式初始化
- // client = new Ks3Client(new AuthListener() {
- // @Override
- // public String onCalculateAuth(final String httpMethod,
- // final String ContentType, final String Date,
- // final String ContentMD5, final String Resource,
- // final String Headers) {
- // // 此处应由APP端向业务服务器发送post请求返回Token。
- // // 需要注意该回调方法运行在非主线程
- // // 此处内部写法仅为示例,开发者请根据自身情况修改
- // StringBuffer result = new StringBuffer();
- // HttpPost request = new HttpPost(Constants.APP_SERTVER_HOST);
- // StringEntity se;
- // try {
- // JSONObject object = new JSONObject();
- // object.put("http_method", httpMethod.toString());
- // object.put("content_type", ContentType);
- // object.put("date", Date);
- // object.put("content_md5", ContentMD5);
- // object.put("resource", Resource);
- // object.put("headers", Headers);
- // se = new StringEntity(object.toString());
- // request.setEntity(se);
- // HttpResponse httpResponse = new DefaultHttpClient().execute(request);
- // String retSrc = EntityUtils.toString(httpResponse
- // .getEntity());
- // result.append(retSrc);
- // } catch (JSONException e) {
- // e.printStackTrace();
- // } catch (UnsupportedEncodingException e) {
- // e.printStackTrace();
- // } catch (ClientProtocolException e) {
- // e.printStackTrace();
- // } catch (IOException e) {
- // e.printStackTrace();
- // }
- // return result.toString();
- // }
- // }, DownloadActivity.this);
-
- // UI初始化
- currentBucketTextView = (TextView) findViewById(R.id.current_bucket_tv);
- mListView = (ListView) findViewById(R.id.object_list);
- mProgressBar = (ProgressBar) findViewById(R.id.progress_bar);
- dataSource = new HashMap();
- adapter = new RemoteFileAdapter(this, null);
- mListView.setAdapter(adapter);
- mListView.setOnItemClickListener(this);
- }
-
- class RemoteFileAdapter extends BaseAdapter {
- private List mRemoteFiles;
- private LayoutInflater mInflater;
-
- RemoteFileAdapter(Context context, List remoteFiles) {
- this.mRemoteFiles = new ArrayList();
- if (remoteFiles != null)
- this.mRemoteFiles.addAll(remoteFiles);
- this.mInflater = (LayoutInflater) context
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- }
-
- @Override
- public int getCount() {
- return mRemoteFiles.size();
- }
-
- @Override
- public RemoteFile getItem(int position) {
- return this.mRemoteFiles.get(position);
- }
-
- @Override
- public long getItemId(int position) {
- return position;
- }
-
- public void fillDatas() {
- this.mRemoteFiles.clear();
- for (Entry entry : dataSource.entrySet()) {
- this.mRemoteFiles.add(entry.getValue());
- }
- this.notifyDataSetChanged();
- }
-
- public void updateCurrent() {
- this.notifyDataSetChanged();
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- ViewHolder viewHolder;
- if (convertView == null) {
- convertView = mInflater.inflate(R.layout.download_list_item,
- parent, false);
- viewHolder = new ViewHolder();
- viewHolder.remoteObjectIcon = (ImageView) convertView
- .findViewById(R.id.remote_object_icon);
- viewHolder.remoteObjectKeyTextView = (TextView) convertView
- .findViewById(R.id.remote_object_key);
- viewHolder.remoteObjectSummaryLayout = (LinearLayout) convertView
- .findViewById(R.id.remote_object_summary_layout);
- viewHolder.remoteObjectSizeTextView = (TextView) convertView
- .findViewById(R.id.remote_object_size);
- viewHolder.remoteObjectModiyTextView = (TextView) convertView
- .findViewById(R.id.remote_object_last_modiy);
- viewHolder.downloadSummaryLayout = (LinearLayout) convertView
- .findViewById(R.id.progress_summary_layout);
- viewHolder.downloadProgressBar = (ProgressBar) convertView
- .findViewById(R.id.download_progress_bar);
- viewHolder.progressTextView = (TextView) convertView
- .findViewById(R.id.download_progress_txt);
- viewHolder.downloadBtn = (ImageView) convertView
- .findViewById(R.id.download_btn);
- convertView.setTag(viewHolder);
- } else {
- viewHolder = (ViewHolder) convertView.getTag();
- }
- viewHolder.remoteObjectIcon.setImageDrawable(mRemoteFiles
- .get(position).icon);
- viewHolder.remoteObjectKeyTextView.setText(mRemoteFiles
- .get(position).objectKey);
-
- if (!mRemoteFiles.get(position).isCommomPrefix) {
- viewHolder.remoteObjectKeyTextView.setVisibility(View.VISIBLE);
- long size = mRemoteFiles.get(position).size;
- String sizeStr = "unkown-size";
-
- if (size >= 1024 * 1024) {
- sizeStr = ((int) (size / 1024 / 1024) * 100) / 100 + "MB";
- } else {
- sizeStr = (size / 1024) + "kb";
- }
- viewHolder.remoteObjectSizeTextView.setText(sizeStr);
- String modiyStr = DemoUtils.formatDate(mRemoteFiles
- .get(position).lastModified);
- viewHolder.remoteObjectModiyTextView.setText(modiyStr);
- if (mRemoteFiles.get(position).status > RemoteFile.STATUS_NOT_START) {
- viewHolder.downloadSummaryLayout
- .setVisibility(View.VISIBLE);
- viewHolder.downloadProgressBar.setProgress(mRemoteFiles
- .get(position).progress);
- viewHolder.remoteObjectSummaryLayout
- .setVisibility(View.GONE);
- viewHolder.downloadBtn.setVisibility(View.GONE);
- switch (mRemoteFiles.get(position).status) {
- case RemoteFile.STATUS_STARTED:
- viewHolder.progressTextView.setText("准备");
- break;
- case RemoteFile.STATUS_DOWNLOADING:
- viewHolder.progressTextView.setText(mRemoteFiles
- .get(position).progress + "%");
- break;
- case RemoteFile.STATUS_FINISH:
- viewHolder.progressTextView.setText("完成下载");
- break;
- case RemoteFile.STATUS_FAIL:
- viewHolder.progressTextView.setText("下载失败");
- break;
- }
- } else {
- viewHolder.remoteObjectSummaryLayout
- .setVisibility(View.VISIBLE);
- viewHolder.downloadBtn.setVisibility(View.VISIBLE);
- viewHolder.downloadSummaryLayout.setVisibility(View.GONE);
- }
- } else {
- viewHolder.remoteObjectSummaryLayout.setVisibility(View.GONE);
- viewHolder.downloadSummaryLayout.setVisibility(View.GONE);
- viewHolder.downloadBtn.setVisibility(View.GONE);
- }
-
- return convertView;
- }
- }
-
- class ViewHolder {
- ImageView remoteObjectIcon;
- TextView remoteObjectKeyTextView;
- LinearLayout remoteObjectSummaryLayout;
- TextView remoteObjectSizeTextView;
- TextView remoteObjectModiyTextView;
- LinearLayout downloadSummaryLayout;
- ProgressBar downloadProgressBar;
- TextView progressTextView;
- ImageView downloadBtn;
- }
-
- class RemoteFile {
- static final int STATUS_NOT_START = 0;
- static final int STATUS_STARTED = 1;
- static final int STATUS_DOWNLOADING = 2;
- static final int STATUS_FINISH = 3;
- static final int STATUS_FAIL = 4;
- Drawable icon;
- String bucketName;
- String objectKey;
- long size;
- Date lastModified;
- int progress;
- int status;
- boolean isCommomPrefix;
-
- @Override
- public String toString() {
- return bucketName + ",download?" + status + ",progress:" + progress;
- }
- }
-
- @Override
- public void onItemClick(AdapterView> adpterView, final View view,
- final int position, long arg3) {
- final RemoteFile item = adapter.getItem(position);
- if (item.isCommomPrefix) {
- // listObjects(item.bucketName, item.objectKey);
- Toast.makeText(this, "请自行实现下一级目录的检索", Toast.LENGTH_LONG).show();
- } else {
- if (item.status == RemoteFile.STATUS_STARTED
- || item.status == RemoteFile.STATUS_DOWNLOADING
- || item.status == RemoteFile.STATUS_FINISH)
- return;
-
- // 下载操作示例
- final GetObjectRequest request = new GetObjectRequest(
- item.bucketName, item.objectKey);
- String objectName = item.objectKey.substring(item.objectKey
- .lastIndexOf("/") == -1 ? 0 : item.objectKey
- .lastIndexOf("/"));
+ private ListView mListView;
+ private ProgressBar mProgressBar;
+ private Ks3ClientConfiguration configuration;
+ private Ks3Client client;
+ private Map dataSource;
+ private RemoteFileAdapter adapter;
+ private TextView currentBucketTextView;
+ private File storeForder;
+ private myHandler mHandler = new myHandler();
+ private BucketInpuDialog bucketInpuDialog;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_download);
+ setUp();
+ bucketInpuDialog = new BucketInpuDialog(DownloadActivity.this);
+ prepareStoreForder();
+ bucketInpuDialog.setOnBucketInputListener(new OnBucketDialogListener() {
+ @Override
+ public void confirmBucket(final String name) {
+ // 输入框确获取Bucket之后,开始ListObjects操作
+ listObjects(name, null);
+ }
+ });
+ bucketInpuDialog.show();
+ }
+
+ private void prepareStoreForder() {
+ storeForder = new File(Environment.getExternalStorageDirectory(),
+ "ksyun_download");
+ if (!storeForder.exists()) {
+ storeForder.mkdirs();
+ } else if (storeForder.isFile()) {
+ storeForder.delete();
+ }
+ }
+
+ private void listObjects(String bucketName, final String prefix) {
+ final ListObjectsRequest request = new ListObjectsRequest(bucketName);
+ if (!StringUtils.isBlank(prefix))
+ request.setPrefix(prefix);
+ request.setDelimiter("/");
+ client.listObjects(request, new ListObjectsResponseHandler() {
+ @Override
+ public void onSuccess(ListObjectsRequest listObjectsRequest, ListObjectsResult result) {
+ ObjectListing objectListing = result.getObjectListing();
+ List objectSummaries = objectListing
+ .getObjectSummaries();
+ if (objectSummaries != null && objectSummaries.size() != 0) {
+ for (Ks3ObjectSummary object : objectSummaries) {
+ String objectKey = object.getKey();
+ if (dataSource.get(objectKey) == null) {
+ RemoteFile remoteFile = new RemoteFile();
+ remoteFile.bucketName = objectListing
+ .getBucketName();
+ remoteFile.objectKey = objectKey;
+ remoteFile.isCommomPrefix = false;
+ remoteFile.icon = DemoUtils.matchImage(
+ DownloadActivity.this, false, objectKey);
+ remoteFile.size = object.getSize();
+ remoteFile.lastModified = object.getLastModified();
+ remoteFile.progress = 0;
+ remoteFile.status = RemoteFile.STATUS_NOT_START;
+ dataSource.put(objectKey, remoteFile);
+ }
+ }
+ }
+ List commonPrefixes = objectListing.getCommonPrefixes();
+ if (commonPrefixes != null && commonPrefixes.size() != 0) {
+ for (String prifix : commonPrefixes) {
+ RemoteFile remoteFile = new RemoteFile();
+ remoteFile.bucketName = objectListing.getBucketName();
+ remoteFile.objectKey = prifix;
+ remoteFile.icon = DemoUtils.matchImage(
+ DownloadActivity.this, true, prifix);
+ remoteFile.progress = 0;
+ remoteFile.isCommomPrefix = true;
+ remoteFile.status = RemoteFile.STATUS_NOT_START;
+ dataSource.put(prifix, remoteFile);
+ }
+ }
+
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mProgressBar.setVisibility(View.GONE);
+ currentBucketTextView.setVisibility(View.VISIBLE);
+ mListView.setVisibility(View.VISIBLE);
+ String path = StringUtils.isBlank(prefix) ? "" : "-" + prefix;
+ currentBucketTextView.setText("当前路径:Bucket:"
+ + request.getBucketname() + path);
+ adapter.fillDatas();
+ }
+ });
+ }
+
+ @Override
+ public void onFailure(ListObjectsRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+// System.err.println(paramThrowable);
+ if (clientException != null) {
+ System.err.println(clientException.getMessage());
+ }
+ if (serviceException != null) {
+ System.err.println(serviceException.getResponse());
+ }
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ ToastUtils.showShort("获取列表异常");
+ }
+ });
+ finish();
+ }
+ });
+ }
+
+ private void setUp() {
+ // Ks3Client初始化
+ configuration = Ks3ClientConfiguration.getDefaultConfiguration();
+ client = Ks3ClientFactory.getDefaultClient(this);
+
+ // AuthListener方式初始化
+ // client = new Ks3Client(new AuthListener() {
+ // @Override
+ // public String onCalculateAuth(final String httpMethod,
+ // final String ContentType, final String Date,
+ // final String ContentMD5, final String Resource,
+ // final String Headers) {
+ // // 此处应由APP端向业务服务器发送post请求返回Token。
+ // // 需要注意该回调方法运行在非主线程
+ // // 此处内部写法仅为示例,开发者请根据自身情况修改
+ // StringBuffer result = new StringBuffer();
+ // HttpPost request = new HttpPost(Constants.APP_SERTVER_HOST);
+ // StringEntity se;
+ // try {
+ // JSONObject object = new JSONObject();
+ // object.put("http_method", httpMethod.toString());
+ // object.put("content_type", ContentType);
+ // object.put("date", Date);
+ // object.put("content_md5", ContentMD5);
+ // object.put("resource", Resource);
+ // object.put("headers", Headers);
+ // se = new StringEntity(object.toString());
+ // request.setEntity(se);
+ // HttpResponse httpResponse = new DefaultHttpClient().execute(request);
+ // String retSrc = EntityUtils.toString(httpResponse
+ // .getEntity());
+ // result.append(retSrc);
+ // } catch (JSONException e) {
+ // e.printStackTrace();
+ // } catch (UnsupportedEncodingException e) {
+ // e.printStackTrace();
+ // } catch (ClientProtocolException e) {
+ // e.printStackTrace();
+ // } catch (IOException e) {
+ // e.printStackTrace();
+ // }
+ // return result.toString();
+ // }
+ // }, DownloadActivity.this);
+
+ // UI初始化
+ currentBucketTextView = (TextView) findViewById(R.id.current_bucket_tv);
+ mListView = (ListView) findViewById(R.id.object_list);
+ mProgressBar = (ProgressBar) findViewById(R.id.progress_bar);
+ dataSource = new HashMap();
+ adapter = new RemoteFileAdapter(this, null);
+ mListView.setAdapter(adapter);
+ mListView.setOnItemClickListener(this);
+ }
+
+ class RemoteFileAdapter extends BaseAdapter {
+ private List mRemoteFiles;
+ private LayoutInflater mInflater;
+
+ RemoteFileAdapter(Context context, List remoteFiles) {
+ this.mRemoteFiles = new ArrayList();
+ if (remoteFiles != null)
+ this.mRemoteFiles.addAll(remoteFiles);
+ this.mInflater = (LayoutInflater) context
+ .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ }
+
+ @Override
+ public int getCount() {
+ return mRemoteFiles.size();
+ }
+
+ @Override
+ public RemoteFile getItem(int position) {
+ return this.mRemoteFiles.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ public void fillDatas() {
+ this.mRemoteFiles.clear();
+ for (Entry entry : dataSource.entrySet()) {
+ this.mRemoteFiles.add(entry.getValue());
+ }
+ this.notifyDataSetChanged();
+ }
+
+ public void updateCurrent() {
+ this.notifyDataSetChanged();
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ ViewHolder viewHolder;
+ if (convertView == null) {
+ convertView = mInflater.inflate(R.layout.download_list_item,
+ parent, false);
+ viewHolder = new ViewHolder();
+ viewHolder.remoteObjectIcon = (ImageView) convertView
+ .findViewById(R.id.remote_object_icon);
+ viewHolder.remoteObjectKeyTextView = (TextView) convertView
+ .findViewById(R.id.remote_object_key);
+ viewHolder.remoteObjectSummaryLayout = (LinearLayout) convertView
+ .findViewById(R.id.remote_object_summary_layout);
+ viewHolder.remoteObjectSizeTextView = (TextView) convertView
+ .findViewById(R.id.remote_object_size);
+ viewHolder.remoteObjectModiyTextView = (TextView) convertView
+ .findViewById(R.id.remote_object_last_modiy);
+ viewHolder.downloadSummaryLayout = (LinearLayout) convertView
+ .findViewById(R.id.progress_summary_layout);
+ viewHolder.downloadProgressBar = (ProgressBar) convertView
+ .findViewById(R.id.download_progress_bar);
+ viewHolder.progressTextView = (TextView) convertView
+ .findViewById(R.id.download_progress_txt);
+ viewHolder.downloadBtn = (ImageView) convertView
+ .findViewById(R.id.download_btn);
+ convertView.setTag(viewHolder);
+ } else {
+ viewHolder = (ViewHolder) convertView.getTag();
+ }
+ viewHolder.remoteObjectIcon.setImageDrawable(mRemoteFiles
+ .get(position).icon);
+ viewHolder.remoteObjectKeyTextView.setText(mRemoteFiles
+ .get(position).objectKey);
+
+ if (!mRemoteFiles.get(position).isCommomPrefix) {
+ viewHolder.remoteObjectKeyTextView.setVisibility(View.VISIBLE);
+ long size = mRemoteFiles.get(position).size;
+ String sizeStr = "unkown-size";
+
+ if (size >= 1024 * 1024) {
+ sizeStr = ((int) (size / 1024 / 1024) * 100) / 100 + "MB";
+ } else {
+ sizeStr = (size / 1024) + "kb";
+ }
+ viewHolder.remoteObjectSizeTextView.setText(sizeStr);
+ String modiyStr = DemoUtils.formatDate(mRemoteFiles
+ .get(position).lastModified);
+ viewHolder.remoteObjectModiyTextView.setText(modiyStr);
+ if (mRemoteFiles.get(position).status > RemoteFile.STATUS_NOT_START) {
+ viewHolder.downloadSummaryLayout
+ .setVisibility(View.VISIBLE);
+ viewHolder.downloadProgressBar.setProgress(mRemoteFiles
+ .get(position).progress);
+ viewHolder.remoteObjectSummaryLayout
+ .setVisibility(View.GONE);
+ viewHolder.downloadBtn.setVisibility(View.GONE);
+ switch (mRemoteFiles.get(position).status) {
+ case RemoteFile.STATUS_STARTED:
+ viewHolder.progressTextView.setText("准备");
+ break;
+ case RemoteFile.STATUS_DOWNLOADING:
+ viewHolder.progressTextView.setText(mRemoteFiles
+ .get(position).progress + "%");
+ break;
+ case RemoteFile.STATUS_FINISH:
+ viewHolder.progressTextView.setText("完成下载");
+ break;
+ case RemoteFile.STATUS_FAIL:
+ viewHolder.progressTextView.setText("下载失败");
+ break;
+ }
+ } else {
+ viewHolder.remoteObjectSummaryLayout
+ .setVisibility(View.VISIBLE);
+ viewHolder.downloadBtn.setVisibility(View.VISIBLE);
+ viewHolder.downloadSummaryLayout.setVisibility(View.GONE);
+ }
+ } else {
+ viewHolder.remoteObjectSummaryLayout.setVisibility(View.GONE);
+ viewHolder.downloadSummaryLayout.setVisibility(View.GONE);
+ viewHolder.downloadBtn.setVisibility(View.GONE);
+ }
+
+ return convertView;
+ }
+ }
+
+ class ViewHolder {
+ ImageView remoteObjectIcon;
+ TextView remoteObjectKeyTextView;
+ LinearLayout remoteObjectSummaryLayout;
+ TextView remoteObjectSizeTextView;
+ TextView remoteObjectModiyTextView;
+ LinearLayout downloadSummaryLayout;
+ ProgressBar downloadProgressBar;
+ TextView progressTextView;
+ ImageView downloadBtn;
+ }
+
+ class RemoteFile {
+ static final int STATUS_NOT_START = 0;
+ static final int STATUS_STARTED = 1;
+ static final int STATUS_DOWNLOADING = 2;
+ static final int STATUS_FINISH = 3;
+ static final int STATUS_FAIL = 4;
+ Drawable icon;
+ String bucketName;
+ String objectKey;
+ long size;
+ Date lastModified;
+ int progress;
+ int status;
+ boolean isCommomPrefix;
+
+ @Override
+ public String toString() {
+ return bucketName + ",download?" + status + ",progress:" + progress;
+ }
+ }
+
+ @Override
+ public void onItemClick(AdapterView> adpterView, final View view,
+ final int position, long arg3) {
+ final RemoteFile item = adapter.getItem(position);
+ if (item.isCommomPrefix) {
+ // listObjects(item.bucketName, item.objectKey);
+ Toast.makeText(this, "请自行实现下一级目录的检索", Toast.LENGTH_LONG).show();
+ } else {
+ if (item.status == RemoteFile.STATUS_STARTED
+ || item.status == RemoteFile.STATUS_DOWNLOADING
+ || item.status == RemoteFile.STATUS_FINISH)
+ return;
+ ToastUtils.showShort("开始下载");
+ // 下载操作示例
+ final GetObjectRequest request = new GetObjectRequest(item.bucketName, item.objectKey);
+ String objectName = item.objectKey.substring(item.objectKey
+ .lastIndexOf("/") == -1 ? 0 : item.objectKey
+ .lastIndexOf("/"));
// request.setCallBack(callBackUrl, callBackBody, callBackHeaders);
- File file = new File(storeForder, objectName);
- client.getObject(request, new GetObjectResponseHandler(file,
- item.bucketName, item.objectKey) {
-
- @Override
- public void onTaskSuccess(int paramInt,
- Header[] paramArrayOfHeader,
- GetObjectResult getObjectResult) {
- ToastUtils.showShort("下载成功");
-
- }
-
- @Override
- public void onTaskStart() {
-// RemoteFile remoteFile = dataSource.get(item.objectKey);
-// remoteFile.status = RemoteFile.STATUS_STARTED;
-// remoteFile.progress = 0;
-// item.status = RemoteFile.STATUS_STARTED;
-// item.progress = 0;
- mHandler.sendEmptyMessage(0);
-
- }
-
- @Override
- public void onTaskProgress(double progress) {
-// if (progress > 50.0) {
-// request.abort();
+ final File file = new File(storeForder, objectName);
+ doGet(item, request, file);
+// new Thread(){
+// @Override
+// public void run() {
+// try {
+//
+//// request.setRange(10, 110);
+// List constraints = new ArrayList<>();
+//// constraints.add("1a88496760c8eb470794dd8ba504fd22");
+// request.setMatchingETagConstraints(constraints);
+// GetObjectResult result = client.syncGetObject(request);
+// long length = result.getObject().getObjectMetadata().getContentLength();
+// Log.d("DownloadActivity", "同步方法获取到的长度:" + length);
+// saveToLocal(file, result);
+// } catch (Throwable throwable) {
+// throwable.printStackTrace();
// }
+// }
+// }.start();
+ }
+
+ }
+
+ private void doGet(final RemoteFile item, final GetObjectRequest request, final File file) {
+ client.getObject(request, new GetObjectResponseHandler(file, item.bucketName, item.objectKey) {
+ @Override
+ public void onSuccess(GetObjectRequest request, GetObjectResult result) {
+ ToastUtils.showShort("下载成功");
+ Log.d(com.ksyun.ks3.util.Constants.LOG_TAG, "download [" + item.objectKey + "] success");
+ // 请求成功。
+ Utils.saveToLocal(file, result);
+ }
+
+
+ @Override
+ public void onTaskProgress(double progress) {
+ Log.d(com.ksyun.ks3.util.Constants.LOG_TAG, "onTaskProgress [" + progress + "]");
+ if (progress > 50.0) {
+ request.abort();
+ }
// RemoteFile remoteFile = dataSource.get(item.objectKey);
// remoteFile.status = RemoteFile.STATUS_DOWNLOADING;
// remoteFile.progress = (int) progress;
// item.status = RemoteFile.STATUS_DOWNLOADING;
// item.progress = (int) progress;
- mHandler.sendEmptyMessage(0);
- }
+ mHandler.sendEmptyMessage(0);
+ }
+
+ @Override
+ public void onFailure(GetObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ Log.d(com.ksyun.ks3.util.Constants.LOG_TAG,
+ serviceException.getStatusCode() + " failure: reason = " + serviceException.getResponse());
+ System.err.println(serviceException.getResponse());
+ ToastUtils.showShort("下载失败");
+ mHandler.sendEmptyMessage(0);
+ }
+
+ @Override
+ public void onTaskCancel() {
+ ToastUtils.showShort("下载任务取消");
+ }
+ });
+ }
+
+ @SuppressLint("HandlerLeak")
+ class myHandler extends Handler {
+ @Override
+ public void handleMessage(Message msg) {
+ int what = msg.what;
+ switch (what) {
+ case 0:
+ adapter.updateCurrent();
+ break;
+ default:
+ break;
+ }
+ }
+ }
- @Override
- public void onTaskFinish() {
-// RemoteFile remoteFile = dataSource.get(item.objectKey);
-// remoteFile.status = RemoteFile.STATUS_FINISH;
-// remoteFile.progress = 100;
-// item.status = RemoteFile.STATUS_FINISH;
-// item.progress = 100;
- mHandler.sendEmptyMessage(0);
- }
-
- @Override
- public void onTaskCancel() {
- Log.d(com.ksyun.ks3.util.Constants.LOG_TAG, "cancle ok");
- }
-
- @Override
- public void onTaskFailure(int paramInt, Ks3Error ks3Error,
- Header[] paramArrayOfHeader, Throwable paramThrowable,
- File paramFile) {
- Log.d(com.ksyun.ks3.util.Constants.LOG_TAG,
- paramInt+"failure: reason = " + paramThrowable.toString()+"/n"+"response:"+ks3Error.getErrorMessage());
- ToastUtils.showShort("下载失败");
-// RemoteFile remoteFile = dataSource.get(item.objectKey);
-// remoteFile.status = RemoteFile.STATUS_FAIL;
-// item.status = RemoteFile.STATUS_FAIL;
- mHandler.sendEmptyMessage(0);
- }
- });
- }
-
- }
-
- @SuppressLint("HandlerLeak")
- class myHandler extends Handler {
- @Override
- public void handleMessage(Message msg) {
- int what = msg.what;
- switch (what) {
- case 0:
- adapter.updateCurrent();
- break;
- default:
- break;
- }
- }
- }
}
diff --git a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MainActivity.java b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MainActivity.java
index 41b833815ef2c815a1a044528203e9ff251b10b0..6efc22910cf4aa696afb86affcb4d5d44b1b91e0 100644
--- a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MainActivity.java
+++ b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MainActivity.java
@@ -1,6 +1,7 @@
package com.ks3.demo.main;
import static com.ks3.demo.main.Constants.DST_BUCKETNAME;
+import static com.ks3.demo.main.Constants.DST_OBJECTKEY;
import static com.ks3.demo.main.Constants.END_POINT;
import static com.ks3.demo.main.Constants.SRC_BUCKETNAME;
import static com.ks3.demo.main.Constants.SRC_OBJECTKEY;
@@ -9,7 +10,7 @@ import static com.ks3.demo.main.Constants.TEST_MULTIUPLOAD_FILE;
import android.app.AlertDialog.Builder;
import android.content.Intent;
import android.os.Bundle;
-import android.os.Looper;
+import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
@@ -23,70 +24,126 @@ import androidx.appcompat.app.AppCompatActivity;
import com.blankj.utilcode.constant.PermissionConstants;
import com.blankj.utilcode.util.PermissionUtils;
+import com.blankj.utilcode.util.StringUtils;
+import com.blankj.utilcode.util.ToastUtils;
import com.ks3.demo.main.BucketInpuDialog.OnBucketDialogListener;
import com.ks3.demo.main.BucketObjectInpuDialog.OnBucketObjectDialogListener;
-import com.ksyun.ks3.exception.Ks3Error;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
import com.ksyun.ks3.model.Bucket;
+import com.ksyun.ks3.model.BucketQuota;
import com.ksyun.ks3.model.Ks3ObjectSummary;
import com.ksyun.ks3.model.ObjectListing;
import com.ksyun.ks3.model.ObjectMetadata;
-import com.ksyun.ks3.model.Owner;
+import com.ksyun.ks3.model.Part;
+import com.ksyun.ks3.model.PartETag;
import com.ksyun.ks3.model.PostObjectFormFields;
-import com.ksyun.ks3.model.acl.AccessControlPolicy;
-import com.ksyun.ks3.model.acl.Authorization;
import com.ksyun.ks3.model.acl.CannedAccessControlList;
-import com.ksyun.ks3.model.acl.Grant;
-import com.ksyun.ks3.model.result.BucketQuota;
-import com.ksyun.ks3.model.result.CopyResult;
+import com.ksyun.ks3.model.result.AbortMultipartUploadResult;
+import com.ksyun.ks3.model.result.CompleteMultipartUploadResult;
+import com.ksyun.ks3.model.result.CopyObjectResult;
+import com.ksyun.ks3.model.result.CreateBucketResult;
+import com.ksyun.ks3.model.result.DeleteBucketPolicyResult;
+import com.ksyun.ks3.model.result.DeleteBucketQuotaResult;
+import com.ksyun.ks3.model.result.DeleteBucketReplicationResult;
+import com.ksyun.ks3.model.result.DeleteBucketResult;
+import com.ksyun.ks3.model.result.DeleteObjectResult;
+import com.ksyun.ks3.model.result.DeleteObjectTaggingResult;
+import com.ksyun.ks3.model.result.GetBucketACLResult;
+import com.ksyun.ks3.model.result.GetBucketPolicyResult;
+import com.ksyun.ks3.model.result.GetBucketQuotaResult;
+import com.ksyun.ks3.model.result.GetBucketReplicationResult;
+import com.ksyun.ks3.model.result.GetObjectACLResult;
+import com.ksyun.ks3.model.result.GetObjectAdpResult;
+import com.ksyun.ks3.model.result.GetObjectResult;
+import com.ksyun.ks3.model.result.GetObjectTaggingResult;
+import com.ksyun.ks3.model.result.HeadBucketResult;
import com.ksyun.ks3.model.result.HeadObjectResult;
+import com.ksyun.ks3.model.result.InitiateMultipartUploadResult;
+import com.ksyun.ks3.model.result.Ks3Result;
+import com.ksyun.ks3.model.result.ListBucketsResult;
+import com.ksyun.ks3.model.result.ListObjectsResult;
import com.ksyun.ks3.model.result.ListPartsResult;
-import com.ksyun.ks3.model.result.PutAdpResult;
-import com.ksyun.ks3.model.result.ReplicationRule;
-import com.ksyun.ks3.model.result.policy.BucketPolicyConditionRule;
-import com.ksyun.ks3.model.result.policy.BucketPolicyRule;
+import com.ksyun.ks3.model.result.PutBucketACLResult;
+import com.ksyun.ks3.model.result.PutBucketPolicyResult;
+import com.ksyun.ks3.model.result.PutBucketQuotaResult;
+import com.ksyun.ks3.model.result.PutBucketReplicationResult;
+import com.ksyun.ks3.model.result.PutObjectACLResult;
+import com.ksyun.ks3.model.result.PutObjectAdpResult;
+import com.ksyun.ks3.model.result.PutObjectFetchResult;
+import com.ksyun.ks3.model.result.PutObjectResult;
+import com.ksyun.ks3.model.result.PutObjectTaggingResult;
+import com.ksyun.ks3.model.ReplicationRule;
+import com.ksyun.ks3.model.result.UploadPartResult;
import com.ksyun.ks3.services.Ks3Client;
import com.ksyun.ks3.services.Ks3ClientConfiguration;
+import com.ksyun.ks3.services.MultiUploader;
+import com.ksyun.ks3.services.handler.AbortMultipartUploadResponseHandler;
+import com.ksyun.ks3.services.handler.CompleteMultipartUploadResponseHandler;
import com.ksyun.ks3.services.handler.CopyObjectResponseHandler;
-import com.ksyun.ks3.services.handler.CreateBucketResponceHandler;
-import com.ksyun.ks3.services.handler.DeleteBucketReplicationConfigResponceHandler;
-import com.ksyun.ks3.services.handler.DeleteBucketResponceHandler;
-import com.ksyun.ks3.services.handler.DeleteObjectRequestHandler;
-import com.ksyun.ks3.services.handler.GetBucketACLResponceHandler;
-import com.ksyun.ks3.services.handler.GetBucketPolicyResponceHandler;
-import com.ksyun.ks3.services.handler.GetBucketQuotaResponceHandler;
-import com.ksyun.ks3.services.handler.GetBucketReplicationConfigResponceHandler;
+import com.ksyun.ks3.services.handler.CreateBucketResponseHandler;
+import com.ksyun.ks3.services.handler.DeleteBucketPolicyResponseHandler;
+import com.ksyun.ks3.services.handler.DeleteBucketQuotaResponseHandler;
+import com.ksyun.ks3.services.handler.DeleteBucketReplicationResponseHandler;
+import com.ksyun.ks3.services.handler.DeleteBucketResponseHandler;
+import com.ksyun.ks3.services.handler.DeleteObjectResponseHandler;
+import com.ksyun.ks3.services.handler.DeleteObjectTaggingResponseHandler;
+import com.ksyun.ks3.services.handler.GetBucketACLResponseHandler;
+import com.ksyun.ks3.services.handler.GetBucketPolicyResponseHandler;
+import com.ksyun.ks3.services.handler.GetBucketQuotaResponseHandler;
+import com.ksyun.ks3.services.handler.GetBucketReplicationResponseHandler;
import com.ksyun.ks3.services.handler.GetObjectACLResponseHandler;
+import com.ksyun.ks3.services.handler.GetObjectAdpResponseHandler;
+import com.ksyun.ks3.services.handler.GetObjectResponseHandler;
import com.ksyun.ks3.services.handler.GetObjectTaggingResponseHandler;
import com.ksyun.ks3.services.handler.HeadBucketResponseHandler;
import com.ksyun.ks3.services.handler.HeadObjectResponseHandler;
-import com.ksyun.ks3.services.handler.Ks3HttpResponceHandler;
-import com.ksyun.ks3.services.handler.ListBucketsResponceHandler;
+import com.ksyun.ks3.services.handler.InitiateMultipartUploadResponseHandler;
+import com.ksyun.ks3.services.handler.ListBucketsResponseHandler;
import com.ksyun.ks3.services.handler.ListObjectsResponseHandler;
import com.ksyun.ks3.services.handler.ListPartsResponseHandler;
import com.ksyun.ks3.services.handler.PutBucketACLResponseHandler;
-import com.ksyun.ks3.services.handler.PutBucketReplicationResponceHandler;
+import com.ksyun.ks3.services.handler.PutBucketPolicyResponseHandler;
+import com.ksyun.ks3.services.handler.PutBucketQuotaResponseHandler;
+import com.ksyun.ks3.services.handler.PutBucketReplicationResponseHandler;
import com.ksyun.ks3.services.handler.PutObjectACLResponseHandler;
-import com.ksyun.ks3.services.handler.PutObjectAdpResponceHandler;
+import com.ksyun.ks3.services.handler.PutObjectAdpResponseHandler;
import com.ksyun.ks3.services.handler.PutObjectFetchResponseHandler;
import com.ksyun.ks3.services.handler.PutObjectResponseHandler;
+import com.ksyun.ks3.services.handler.PutObjectTaggingResponseHandler;
+import com.ksyun.ks3.services.handler.UploadPartResponseHandler;
+import com.ksyun.ks3.services.request.AbortMultipartUploadRequest;
+import com.ksyun.ks3.services.request.CompleteMultipartUploadRequest;
import com.ksyun.ks3.services.request.CopyObjectRequest;
+import com.ksyun.ks3.services.request.CreateBucketRequest;
import com.ksyun.ks3.services.request.DeleteBucketPolicyRequest;
-import com.ksyun.ks3.services.request.DeleteBucketReplicationConfigRequest;
+import com.ksyun.ks3.services.request.DeleteBucketQuotaRequest;
+import com.ksyun.ks3.services.request.DeleteBucketReplicationRequest;
+import com.ksyun.ks3.services.request.DeleteBucketRequest;
import com.ksyun.ks3.services.request.DeleteObjectRequest;
+import com.ksyun.ks3.services.request.GetBucketACLRequest;
import com.ksyun.ks3.services.request.GetBucketPolicyRequest;
import com.ksyun.ks3.services.request.GetBucketQuotaRequest;
-import com.ksyun.ks3.services.request.GetBucketReplicationConfigRequest;
+import com.ksyun.ks3.services.request.GetBucketReplicationRequest;
+import com.ksyun.ks3.services.request.GetObjectACLRequest;
+import com.ksyun.ks3.services.request.GetObjectRequest;
+import com.ksyun.ks3.services.request.HeadBucketRequest;
+import com.ksyun.ks3.services.request.HeadObjectRequest;
+import com.ksyun.ks3.services.request.InitiateMultipartUploadRequest;
+import com.ksyun.ks3.services.request.ListBucketsRequest;
import com.ksyun.ks3.services.request.ListObjectsRequest;
-import com.ksyun.ks3.services.request.PutBuckePolicyRequest;
-import com.ksyun.ks3.services.request.PutBuckeQuotaRequest;
+import com.ksyun.ks3.services.request.ListPartsRequest;
+import com.ksyun.ks3.services.request.PutBucketPolicyRequest;
import com.ksyun.ks3.services.request.PutBucketACLRequest;
-import com.ksyun.ks3.services.request.PutBucketReplicationConfigRequest;
+import com.ksyun.ks3.services.request.PutBucketQuotaRequest;
+import com.ksyun.ks3.services.request.PutBucketReplicationRequest;
import com.ksyun.ks3.services.request.PutObjectACLRequest;
import com.ksyun.ks3.services.request.PutObjectRequest;
+import com.ksyun.ks3.services.request.PutObjectFetchRequest;
+import com.ksyun.ks3.services.request.UploadPartRequest;
import com.ksyun.ks3.services.request.adp.Adp;
-import com.ksyun.ks3.services.request.adp.PutAdpRequest;
-import com.ksyun.ks3.services.request.object.PutObjectFetchRequest;
-import com.ksyun.ks3.services.request.object.PutObjectFetchResult;
+import com.ksyun.ks3.services.request.adp.GetObjectAdpRequest;
+import com.ksyun.ks3.services.request.adp.PutObjectAdpRequest;
import com.ksyun.ks3.services.request.tag.DeleteObjectTaggingRequest;
import com.ksyun.ks3.services.request.tag.GetObjectTaggingRequest;
import com.ksyun.ks3.services.request.tag.ObjectTagging;
@@ -96,6 +153,7 @@ import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
@@ -103,11 +161,11 @@ import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
-import java.util.HashSet;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import cz.msebera.android.httpclient.Header;
+import okhttp3.Headers;
/**
* 包含一系列资源管理操作Api使用示例
@@ -134,15 +192,26 @@ public class MainActivity extends AppCompatActivity {
public static final int LIST_OBJECTS = 12;
public static final int COPY_OBJECT = 17;
public static final int PUT_OBJECT_ADP = 21;
- public static final int PUT_OBJECT_TAG = 22;
public static final int FETCH_OBJECT = 23;
public static final int POST_OBJECT = 24;
+ public static final int GET_BUCKET_POLICY = 25;
+ public static final int DELETE_BUCKET_POLICY = 26;
+ public static final int GET_BUCKET_CRR = 27;
+ public static final int DELETE_BUCKET_CRR = 28;
+
// Upload
public static final int UPLOAD = 13;
// Download
public static final int DOWNLOAD = 14;
public static final int LIST_PART = 15;
public static final int MultiPartUpload = 16;
+ public static final int GET_OBJECT_ASYNC = 29;
+ public static final int MULTI_UPLOAD = 30;
+ public static final int MULTI_UPLOAD_EXAMPLE = 31;
+ public static final int PUT_OBJECT_TAG = 32;
+ public static final int GET_OBJECT_TAG = 33;
+ public static final int DELETE_OBJECT_TAG = 34;
+ public static final int PUT_OBJECT_SYNC = 35;
private static final String API = "api";
private static final String RESULT = "result";
private Ks3ClientConfiguration configuration;
@@ -155,6 +224,8 @@ public class MainActivity extends AppCompatActivity {
private BucketObjectInpuDialog bucketObjectInpuDialog;
private BucketCopyObjectInpuDialog bucketCopyObjectInpuDialog;
+ private Map viewListData;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -174,11 +245,14 @@ public class MainActivity extends AppCompatActivity {
}).request();
}
- public static void main(String[] args) {
-
-// Ks3Client client = Ks3ClientFactory.getDefaultClient(this);
-// Ks3ClientConfiguration configuration2 = Ks3ClientConfiguration.getDefaultConfiguration();
-// configuration2.setPathStyleAccess(false);
+ private Map getViewListData(String[] source) {
+ HashMap result = new LinkedHashMap<>();
+ if (source.length <= 0) return result;
+ for (String str : source) {
+ String[] split = str.split(":");
+ result.put(split[0], new Integer(split[1]));
+ }
+ return result;
}
private void setUpUserInterface() {
@@ -187,13 +261,18 @@ public class MainActivity extends AppCompatActivity {
bucketObjectInpuDialog = new BucketObjectInpuDialog(MainActivity.this);
commandList = (ListView) findViewById(R.id.command_list);
command_array = getResources().getStringArray(R.array.command_array);
+ viewListData = getViewListData(command_array);
commandList.setAdapter(new ArrayAdapter(this,
- android.R.layout.simple_list_item_1, command_array));
+ android.R.layout.simple_list_item_1, viewListData.keySet().toArray(new String[viewListData.keySet().size()])));
commandList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> arg0, View arg1,
int position, long arg3) {
- switch (position) {
+ TextView view = (TextView) arg1;
+ String text = (String) view.getText();
+ Integer pos = viewListData.get(text);
+ System.out.println("开始执行: " + text + " 位置:" + pos);
+ switch (pos) {
case UPLOAD:
Intent intent_upload = new Intent(MainActivity.this,
UploadActivity.class);
@@ -229,7 +308,7 @@ public class MainActivity extends AppCompatActivity {
headObject();
break;
case PUT_OBJECT:
- putObjectSync();
+ putObject();
break;
case DELETE_OBJECT:
deleteObject();
@@ -243,8 +322,11 @@ public class MainActivity extends AppCompatActivity {
case LIST_OBJECTS:
listObjects();
break;
- case LIST_PART:
- listParts();
+ case MULTI_UPLOAD:
+ multipartUpload();
+ break;
+ case MULTI_UPLOAD_EXAMPLE:
+ multipartUploadExample();
break;
case MultiPartUpload:
Intent multi_upload = new Intent(MainActivity.this,
@@ -255,35 +337,52 @@ public class MainActivity extends AppCompatActivity {
copyObject();
break;
case PUT_BUCKET_CRR:
- // getBucketCrr();
- // deleteBucketCrr();
putBucketCrr();
break;
+ case GET_BUCKET_CRR:
+ getBucketCrr();
+ break;
+ case DELETE_BUCKET_CRR:
+ deleteBucketCrr();
+ break;
case PUT_BUCKET_QUOTA:
putBucketQuota();
getBucketQuota();
+ deleteBucketQuota();
break;
case PUT_BUCKET_POLICY:
putBucketPolicy();
break;
+ case GET_BUCKET_POLICY:
+ getBucketPolicy();
+ break;
+ case DELETE_BUCKET_POLICY:
+ deleteBucketPolicy();
+ break;
case PUT_OBJECT_ADP:
testPutAndQueryAdp();
break;
- case PUT_OBJECT_TAG:
- testPutObjTag();
- break;
case FETCH_OBJECT:
- testPutFetchObj();
+ putObjectFetch();
break;
case POST_OBJECT:
- new Thread(new Runnable() {
- @Override
- public void run() {
- postObject();
- }
- }).start();
+ postObject();
+ break;
+ case GET_OBJECT_ASYNC:
+ getObjectAsync();
+ break;
+ case PUT_OBJECT_TAG:
+ putObjectTag();
+ break;
+ case GET_OBJECT_TAG:
+ getObjectTag();
+ break;
+ case DELETE_OBJECT_TAG:
+ deleteObjectTag();
+ break;
+ case PUT_OBJECT_SYNC:
+ putObjectSync();
break;
-
default:
break;
}
@@ -293,275 +392,149 @@ public class MainActivity extends AppCompatActivity {
}
private void copyObject() {
- ObjectTagging objectTagging = new ObjectTagging();
- objectTagging.addObjectTag("tagA", "b");
- objectTagging.setTaggingDirective("Replace");
-
- CopyObjectRequest copyObjectRequest = new CopyObjectRequest(SRC_BUCKETNAME, "ZZZb", SRC_BUCKETNAME, SRC_OBJECTKEY, objectTagging);
+ final String apiName = "Copy Object";
+ CopyObjectRequest copyObjectRequest = new CopyObjectRequest(DST_BUCKETNAME, DST_OBJECTKEY, SRC_BUCKETNAME, SRC_OBJECTKEY);
client.copyObject(copyObjectRequest, new CopyObjectResponseHandler() {
@Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
- System.out.println("fail copyObjectResponse is " + new String(response));
+ public void onFailure(CopyObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders, CopyResult result) {
- System.out.println("success copyObjectResponse is " + result.toString());
+ public void onSuccess(CopyObjectRequest request, CopyObjectResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
});
}
private void putObject() {
- final File file = new File(Constants.TEST_MULTIUPLOAD_FILE);
-
+ final String apiName = "Put Object";
bucketObjectInpuDialog
.setOnBucketObjectDialogListener(new OnBucketObjectDialogListener() {
@Override
public void confirmBucketAndObject(String name, String key) {
- client.putObject(name, key, file,
- new PutObjectResponseHandler() {
-
- @Override
- public void onTaskSuccess(int statesCode,
- Header[] responceHeaders) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "upload file success,file = "
- + Constants.TEST_IMG
- + ",states code = "
- + statesCode).append(
- "\n");
-
- Intent intent = new Intent(
- MainActivity.this,
- RESTAPITestResult.class);
-
- Bundle data = new Bundle();
- data.putString(RESULT,
- stringBuffer.toString());
- data.putString(API, "put object Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "putObject--onTaskSuccess---" + stringBuffer.toString());
-
- }
-
- @Override
- public void onTaskStart() {
- Log.e("tag", "putObject--onTaskStart---");
- }
-
- @Override
- public void onTaskFinish() {
- Log.e("tag", "putObject--onTaskFinish---");
- }
-
- @Override
- public void onTaskProgress(double progress) {
- Log.e("tag", "putObject--onTaskProgress---" + progress);
- }
-
- @Override
- public void onTaskCancel() {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void onTaskFailure(int statesCode,
- Ks3Error error,
- Header[] responceHeaders,
- String response,
- Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "upload file failure,file = "
- + Constants.TEST_IMG
- + ",states code = "
- + statesCode).append(
- "\n").append("response:").append(response);
- Log.e("tag", "putObject--onTaskFailure---" + stringBuffer.toString());
-
- }
- });
- }
- });
- bucketObjectInpuDialog.show();
+ File file = new File(Constants.TEST_MULTIUPLOAD_FILE);
+ PutObjectRequest request = new PutObjectRequest(name, key, file);
+ client.putObject(request, new PutObjectResponseHandler() {
+ @Override
+ public void onTaskSuccess(PutObjectRequest request, PutObjectResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ }
- }
+ @Override
+ public void onTaskProgress(double progress) {
+ Log.d(apiName, " ---onTaskProgress---" + progress);
+ }
+ @Override
+ public void onTaskCancel() {
+ ToastUtils.showShort("任务取消");
+ }
- private void putObjectSync () {
- final File file = new File(Constants.TEST_MULTIUPLOAD_FILE);
- bucketObjectInpuDialog
- .setOnBucketObjectDialogListener(new OnBucketObjectDialogListener() {
- @Override
- public void confirmBucketAndObject(String name, String key) {
- final PutObjectRequest request = new PutObjectRequest(name, key, file);
- new Thread(){
@Override
- public void run() {
- Looper.prepare();
- client.putObject(request, new PutObjectResponseHandler() {
-
- @Override
- public void onTaskSuccess(int statesCode,
- Header[] responceHeaders) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "upload file success,file = "
- + Constants.TEST_IMG
- + ",states code = "
- + statesCode).append(
- "\n");
-
- Intent intent = new Intent(
- MainActivity.this,
- RESTAPITestResult.class);
-
- Bundle data = new Bundle();
- data.putString(RESULT,
- stringBuffer.toString());
- data.putString(API, "put object Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "putObject--onTaskSuccess---" + stringBuffer.toString());
-
- }
-
- @Override
- public void onTaskStart() {
- Log.e("tag", "putObject--onTaskStart---");
- }
-
- @Override
- public void onTaskFinish() {
- Log.e("tag", "putObject--onTaskFinish---");
- }
-
- @Override
- public void onTaskProgress(double progress) {
- Log.e("tag", "putObject--onTaskProgress---" + progress);
- }
-
- @Override
- public void onTaskCancel() {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void onTaskFailure(int statesCode,
- Ks3Error error,
- Header[] responceHeaders,
- String response,
- Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "upload file failure,file = "
- + Constants.TEST_IMG
- + ",states code = "
- + statesCode).append(
- "\n").append("response:").append(response);
- Log.e("tag", "putObject--onTaskFailure---" + stringBuffer.toString());
-
- }
- }, false);
- Looper.loop();
+ public void onTaskFailure(PutObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
- }.start();
+ });
}
});
bucketObjectInpuDialog.show();
+
}
- protected void listParts() {
+
+ private void putObjectSync() {
+ final String apiName = "Put Object Sync";
bucketObjectInpuDialog
.setOnBucketObjectDialogListener(new OnBucketObjectDialogListener() {
@Override
public void confirmBucketAndObject(String name, String key) {
+ File file = new File(Constants.TEST_MULTIUPLOAD_FILE);
+ final PutObjectRequest request = new PutObjectRequest(name, key, file);
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ PutObjectResult result = client.syncPutObject(request);
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ } catch (Ks3ClientException e) {
+ String resultStr = exceptionHandler(apiName, e, null);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
+ } catch (Ks3ServiceException e) {
+ String resultStr = exceptionHandler(apiName, null, e);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
+ }
- client.listParts(name, key, Constants.UPLOAD_ID,
- new ListPartsResponseHandler() {
-
- @Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders,
- ListPartsResult listPartsResult) {
- Log.e("tag", "listParts--onSuccess---" + statesCode);
- }
-
- @Override
- public void onFailure(int statesCode,
- Ks3Error error,
- Header[] responceHeaders,
- String response,
- Throwable paramThrowable) {
- // TODO Auto-generated method stub
- Log.e("tag", "listParts--onFailure---" + statesCode);
-
- }
- });
+ }
+ }).start();
}
});
bucketObjectInpuDialog.show();
-
}
private void setUpKs3Client() {
// AK&SK形式直接初始化,仅建议测试时使用,正式环境下请替换AuthListener方式
-// client = new Ks3Client(Constants.ACCESS_KEY__ID,
-// Constants.ACCESS_KEY_SECRET, MainActivity.this);
-// client.setEndpoint("ks3-cn-beijing.ksyuncs.com");
-// client.setConfiguration(configuration);
-//
- Authorization authorization = new Authorization(Constants.ACCESS_KEY__ID, Constants.ACCESS_KEY_SECRET);
- client = new Ks3Client(authorization, this);
-// client = Ks3ClientFactory.getDefaultClient(this);
+ client = new Ks3Client(Constants.ACCESS_KEY__ID,
+ Constants.ACCESS_KEY_SECRET, MainActivity.this);
configuration = Ks3ClientConfiguration.getDefaultConfiguration();
+ configuration.setPathStyleAccess(false);
+ configuration.setSocketTimeout(10000);
+ client.setEndpoint("ks3-cn-beijing.ksyuncs.com");
client.setConfiguration(configuration);
- client.setEndpoint(Constants.END_POINT);
+
+// Authorization authorization = new Authorization(Constants.ACCESS_KEY__ID, Constants.ACCESS_KEY_SECRET);
+// client = new Ks3Client(authorization, this);
+// client = Ks3ClientFactory.getDefaultClient(this);
+// client.setConfiguration(configuration);
+// client.setEndpoint(Constants.END_POINT);
// configuration.setPathStyleAccess(true);
// AuthListener方式初始化
- // client = new Ks3Client(new AuthListener() {
- // @Override
- // public String onCalculateAuth(final String httpMethod,
- // final String ContentType, final String Date,
- // final String ContentMD5, final String Resource,
- // final String Headers) {
- // // 此处应由APP端向业务服务器发送post请求返回Token。
- // // 需要注意该回调方法运行在非主线程
- // // 此处内部写法仅为示例,开发者请根据自身情况修改
- // StringBuffer result = new StringBuffer();
- // HttpPost request = new HttpPost(Constants.APP_SERTVER_HOST);
- // StringEntity se;
- // try {
- // JSONObject object = new JSONObject();
- // object.put("http_method", httpMethod.toString());
- // object.put("content_type", ContentType);
- // object.put("date", Date);
- // object.put("content_md5", ContentMD5);
- // object.put("resource", Resource);
- // object.put("headers", Headers);
- // se = new StringEntity(object.toString());
- // request.setEntity(se);
- // HttpResponse httpResponse = new DefaultHttpClient().execute(request);
- // String retSrc = EntityUtils.toString(httpResponse
- // .getEntity());
- // result.append(retSrc);
- // } catch (JSONException e) {
- // e.printStackTrace();
- // } catch (UnsupportedEncodingException e) {
- // e.printStackTrace();
- // } catch (ClientProtocolException e) {
- // e.printStackTrace();
- // } catch (IOException e) {
- // e.printStackTrace();
- // }
- // return result.toString();
- // }
- // }, MainActivity.this);
- // client.setConfiguration(configuration);
+// client = new Ks3Client(new AuthListener() {
+// @Override
+// public String onCalculateAuth(final String httpMethod,
+// final String ContentType, final String Date,
+// final String ContentMD5, final String Resource,
+// final String Headers) {
+// // 此处应由APP端向业务服务器发送post请求返回Token。
+// // 需要注意该回调方法运行在非主线程
+// // 此处内部写法仅为示例,开发者请根据自身情况修改
+// String result = "";
+// try {
+// OkHttpClient client = new OkHttpClient().newBuilder().build();
+// MediaType type = MediaType.parse("application/json");
+// JSONObject object = new JSONObject();
+// object.put("http_method", httpMethod.toString());
+// object.put("content_type", ContentType);
+// object.put("date", Date);
+// object.put("content_md5", ContentMD5);
+// object.put("resource", Resource);
+// object.put("headers", Headers);
+// RequestBody body = RequestBody.create(type, object.toString());
+// Request request = new Request.Builder().url("http://10.231.135.222:8000/").method("POST", body)
+// .addHeader("Content-Type","application/json").build();
+// Response response = client.newCall(request).execute();
+// result = response.body().string();
+// } catch (Exception e) {
+// Log.e(apiName, "onCalculateAuth error:" + e.toString());
+// }
+// Log.d("tag", "onCalculateAuth from server result:" + result);
+// return result;
+// }
+// }, MainActivity.this);
+// client.setEndpoint(Constants.END_POINT);
+// client.setConfiguration(configuration);
}
@@ -572,200 +545,79 @@ public class MainActivity extends AppCompatActivity {
}
private void headObject() {
+ final String apiName = "Head Object";
bucketObjectInpuDialog
.setOnBucketObjectDialogListener(new OnBucketObjectDialogListener() {
@Override
public void confirmBucketAndObject(String name, String key) {
- client.headObject(name, key,
- new HeadObjectResponseHandler() {
- @Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders,
- HeadObjectResult headObjectResult) {
-
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer
- .append("lastModifiedDate = "
- + headObjectResult
- .getLastmodified())
- .append("\n");
- stringBuffer.append("ETag = "
- + headObjectResult
- .getETag())
- .append("\n");
- ObjectMetadata metadata = headObjectResult
- .getObjectMetadata();
- stringBuffer.append(metadata);
- Intent intent = new Intent(
- MainActivity.this,
- RESTAPITestResult.class);
-
- Bundle data = new Bundle();
- data.putString(RESULT, headObjectResult.toString());
- data.putString(API, "head object Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "headObject--onSuccess---" + headObjectResult.toString());
- }
-
- @Override
- public void onFailure(int statesCode,
- Ks3Error error,
- Header[] responceHeaders,
- String response,
- Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "head object , states code :"
- + statesCode).append(
- "\n");
- stringBuffer.append("Exception :"
- + paramThrowable.toString());
- Intent intent = new Intent(
- MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT,
- stringBuffer.toString());
- data.putString(API,
- "head object Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "headObject--onFailure---" + stringBuffer.toString());
- }
- });
+ HeadObjectRequest request = new HeadObjectRequest(name, key);
+ client.headObject(request, new HeadObjectResponseHandler() {
+ @Override
+ public void onSuccess(HeadObjectRequest request, HeadObjectResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ }
+ @Override
+ public void onFailure(HeadObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
+ }
+ });
}
});
bucketObjectInpuDialog.show();
}
private void getObjectACL() {
+ final String apiName = "Get Object ACL";
bucketObjectInpuDialog
.setOnBucketObjectDialogListener(new OnBucketObjectDialogListener() {
@Override
public void confirmBucketAndObject(String name, String key) {
- client.getObjectACL(name, key,
- new GetObjectACLResponseHandler() {
-
- @Override
- public void onSuccess(
- int statesCode,
- Header[] responceHeaders,
- AccessControlPolicy accessControlPolicy) {
- StringBuffer stringBuffer = new StringBuffer();
- Owner owner = accessControlPolicy
- .getOwner();
- stringBuffer
- .append("=======Owner : ID "
- + owner.getId()
- + " ; NAME :"
- + owner.getDisplayName())
- .append("\n");
- stringBuffer
- .append("==============ACL LIST=========");
- HashSet grants = accessControlPolicy
- .getAccessControlList()
- .getGrants();
- for (Grant grant : grants) {
- stringBuffer
- .append(grant.getGrantee()
- .getIdentifier()
- + "========>"
- + grant.getPermission()
- .toString())
- .append("\n");
- }
- Intent intent = new Intent(
- MainActivity.this,
- RESTAPITestResult.class);
-
- Bundle data = new Bundle();
- data.putString(RESULT,
- stringBuffer.toString());
- data.putString(API,
- "head object Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "getObjectACL--onSuccess---" + stringBuffer.toString());
-
-
- }
-
- @Override
- public void onFailure(int statesCode,
- Ks3Error error,
- Header[] responceHeaders,
- String response,
- Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "get object ACL FAIL !!!!!!, states code :"
- + statesCode).append(
- "\n").append("response:").append(response);
- stringBuffer.append("Exception :"
- + paramThrowable.toString());
- Intent intent = new Intent(
- MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT,
- stringBuffer.toString());
- data.putString(API,
- "GET Object ACL Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "getObjectACL--onFailure---" + stringBuffer.toString());
-
- }
- });
+ GetObjectACLRequest request = new GetObjectACLRequest(name, key);
+ client.getObjectACL(request, new GetObjectACLResponseHandler() {
+ @Override
+ public void onSuccess(GetObjectACLRequest request, GetObjectACLResult result) {
+ String resultStr = resultHandler(apiName, result, result.getAccessControlPolicy().toString());
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ }
+ @Override
+ public void onFailure(GetObjectACLRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
+ }
+ });
}
});
bucketObjectInpuDialog.show();
}
private void deleteBucket() {
+ final String apiName = "Delete Bucket";
+
bucketInpuDialog.setOnBucketInputListener(new OnBucketDialogListener() {
@Override
public void confirmBucket(String name) {
- client.deleteBucket(name, new DeleteBucketResponceHandler() {
-
+ DeleteBucketRequest request = new DeleteBucketRequest(name);
+ client.deleteBucket(request, new DeleteBucketResponseHandler() {
@Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders) {
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer
- .append("Delete bucket success , states code :"
- + statesCode);
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "Delete Bucket Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "deleteBucket--onSuccess---" + stringBuffer.toString());
-
+ public void onSuccess(DeleteBucketRequest request, DeleteBucketResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer
- .append("Delete bucket failed , states code :"
- + statesCode).append("/n").append("responce:").append(response);
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "Delete Bucket Result");
- intent.putExtras(data);
- startActivity(intent);
-
- Log.e("tag", "deleteBucket--onFailure---" + stringBuffer.toString());
+ public void onFailure(DeleteBucketRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
@@ -774,123 +626,63 @@ public class MainActivity extends AppCompatActivity {
}
private void putObjectACL() {
+ final String apiName = "Put Object ACL";
bucketObjectInpuDialog
.setOnBucketObjectDialogListener(new OnBucketObjectDialogListener() {
@Override
public void confirmBucketAndObject(String name, String key) {
- PutObjectACLRequest request = new PutObjectACLRequest(
- name, key);
- CannedAccessControlList cannedList = CannedAccessControlList.PublicRead;
- // AccessControlList acList = new AccessControlList();
-
- // GranteeId grantee = new GranteeId();
- // grantee.setIdentifier("123456");
- // grantee.setDisplayName("TESTTEST1");
- // acList.addGrant(grantee, Permission.Read);
- // GranteeId grantee1 = new GranteeId();
- // grantee1.setIdentifier("1235789");
- // grantee1.setDisplayName("TESTTEST1");
- // acList.addGrant(grantee1, Permission.FullControl);
- //
- // request.setAccessControlList(acList);
- request.setCannedAcl(cannedList);
-
- client.putObjectACL(request,
- new PutObjectACLResponseHandler() {
-
- @Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer
- .append("Put Object ACL success , states code :"
- + statesCode);
- Intent intent = new Intent(
- MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT,
- stringBuffer.toString());
- data.putString(API,
- "Put Object ACL Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "putObjectACL--onSuccess---" + stringBuffer.toString());
- }
-
- @Override
- public void onFailure(int statesCode,
- Ks3Error error,
- Header[] responceHeaders,
- String response,
- Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "PUT Object ACL FAIL !!!!!!!!!, states code :"
- + statesCode).append(
- "\n").append("responce:").append(response);
- stringBuffer.append("Exception :"
- + paramThrowable.toString());
- Intent intent = new Intent(
- MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT,
- stringBuffer.toString());
- data.putString(API,
- "PUT Object ACL Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "putObjectACL--onFailure---" + stringBuffer.toString());
- }
- });
+ PutObjectACLRequest request = new PutObjectACLRequest(name, key);
+ request.setCannedAcl(CannedAccessControlList.PublicRead);
+// 当然也可以自行配置相关参数
+// AccessControlList acList = new AccessControlList();
+// GranteeId grantee = new GranteeId();
+// grantee.setIdentifier("123456");
+// grantee.setDisplayName("TESTTEST1");
+// acList.addGrant(grantee, Permission.Read);
+// GranteeId grantee1 = new GranteeId();
+// grantee1.setIdentifier("1235789");
+// grantee1.setDisplayName("TESTTEST1");
+// acList.addGrant(grantee1, Permission.FullControl);
+// request.setAccessControlList(acList);
+ client.putObjectACL(request, new PutObjectACLResponseHandler() {
+ @Override
+ public void onSuccess(PutObjectACLRequest request, PutObjectACLResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ }
+
+ @Override
+ public void onFailure(PutObjectACLRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
+ }
+ });
}
});
bucketObjectInpuDialog.show();
}
private void headBucket() {
+ final String apiName = "Head Bucket";
bucketInpuDialog.setOnBucketInputListener(new OnBucketDialogListener() {
@Override
public void confirmBucket(String name) {
- client.headBucket(name, new HeadBucketResponseHandler() {
+ HeadBucketRequest request = new HeadBucketRequest(name);
+ client.headBucket(request, new HeadBucketResponseHandler() {
@Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer
- .append("head Bucket success , states code :"
- + statesCode);
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "head Bucket Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "headBucket--onSuccess---" + stringBuffer.toString());
-
+ public void onSuccess(HeadBucketRequest request, HeadBucketResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "head Bucket Fail, states code :" + statesCode)
- .append("\n").append("response:").append(response);
- stringBuffer.append("Exception :"
- + paramThrowable.toString());
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "head Bucket Result");
- intent.putExtras(data);
- startActivity(intent);
-
- Log.e("tag", "headBucket--onFailure---" + stringBuffer.toString());
+ public void onFailure(HeadBucketRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
@@ -899,6 +691,7 @@ public class MainActivity extends AppCompatActivity {
}
private void putBucketACL() {
+ final String apiName = "Put Bucket ACL";
bucketInpuDialog.setOnBucketInputListener(new OnBucketDialogListener() {
@Override
public void confirmBucket(String name) {
@@ -930,49 +723,20 @@ public class MainActivity extends AppCompatActivity {
// acl.addGrant(grantee1, Permission.Write);
// request.setAccessControlList(acl) ;
-
- CannedAccessControlList cannedAcl = CannedAccessControlList.PublicReadWrite;
- request.setCannedAcl(cannedAcl);
- // request.setAccessControlList(acl);
+ request.setCannedAcl(CannedAccessControlList.PublicRead);
client.putBucketACL(request, new PutBucketACLResponseHandler() {
-
@Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer
- .append("Put Bucket ACL success, states code :"
- + statesCode);
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "Put Bucket ACL Result");
- intent.putExtras(data);
- startActivity(intent);
-
- Log.e("tag", "putBucketACL--onSuccess---" + stringBuffer.toString());
+ public void onSuccess(PutBucketACLRequest request, PutBucketACLResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "PUT Bucket ACL FAIL, states code :"
- + statesCode).append("\n").append("responce :").append(response);
- stringBuffer.append("Exception :"
- + paramThrowable.toString());
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "PUT Bucket ACL Result");
- intent.putExtras(data);
- startActivity(intent);
-
- Log.e("tag", "putBucketACL--onFailure---" + stringBuffer.toString());
+ public void onFailure(PutBucketACLRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
@@ -982,132 +746,61 @@ public class MainActivity extends AppCompatActivity {
}
private void getBucketACL() {
+ final String apiName = "Get Bucket ACL";
bucketInpuDialog.setOnBucketInputListener(new OnBucketDialogListener() {
@Override
public void confirmBucket(String name) {
- client.getBucketACL(name, new GetBucketACLResponceHandler() {
-
+ GetBucketACLRequest request = new GetBucketACLRequest(name);
+ client.getBucketACL(request, new GetBucketACLResponseHandler() {
@Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders,
- AccessControlPolicy accessControlPolicy) {
- StringBuffer stringBuffer = new StringBuffer();
- Owner owner = accessControlPolicy.getOwner();
- stringBuffer.append(
- "=======Owner : ID " + owner.getId()
- + " ; NAME :" + owner.getDisplayName())
- .append("\n");
- stringBuffer.append("==============ACL LIST=========");
- HashSet grants = accessControlPolicy
- .getAccessControlList().getGrants();
- for (Grant grant : grants) {
- stringBuffer.append(
- grant.getGrantee().getIdentifier()
- + "========>"
- + grant.getPermission().toString())
- .append("\n");
- }
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "GET BUCKET ACL Result");
- intent.putExtras(data);
- startActivity(intent);
-
- Log.e("tag", "getBucketACL--onSuccess---" + stringBuffer.toString());
+ public void onSuccess(GetBucketACLRequest request, GetBucketACLResult result) {
+ String resultStr = resultHandler(apiName, result, result.getAccessControlPolicy().toString());
+ resultStr += result.getAccessControlPolicy().toString();
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "GET BUCKET ACL fail , states code :"
- + statesCode).append("\n").append("response = ").append(response);
- stringBuffer.append("Exception :"
- + paramThrowable.toString());
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "GET BUCKET ACL Result");
- intent.putExtras(data);
- startActivity(intent);
-
- Log.e("tag", "getBucketACL--onFailure---" + stringBuffer.toString());
+ public void onFailure(GetBucketACLRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
});
bucketInpuDialog.show();
-
}
private void deleteObject() {
+ final String apiName = "Delete Object";
bucketObjectInpuDialog
.setOnBucketObjectDialogListener(new OnBucketObjectDialogListener() {
@Override
public void confirmBucketAndObject(String name, String key) {
- DeleteObjectRequest request = new DeleteObjectRequest(
- name, key);
- client.deleteObject(request,
- new DeleteObjectRequestHandler() {
-
- @Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer
- .append("Delete success , states code :"
- + statesCode);
- Intent intent = new Intent(
- MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT,
- stringBuffer.toString());
- data.putString(API,
- "Delete Object Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "deleteObject--onSuccess---" + stringBuffer.toString());
- }
-
- @Override
- public void onFailure(int statesCode,
- Ks3Error error,
- Header[] responceHeaders,
- String response,
- Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "Delete fail , states code :"
- + statesCode).append(
- "\n").append("response:").append(response);
- stringBuffer.append("Exception :"
- + paramThrowable.toString());
- Intent intent = new Intent(
- MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT,
- stringBuffer.toString());
- data.putString(API,
- "Delete Object Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "deleteObject--onFailure---" + stringBuffer.toString());
- }
- });
+ DeleteObjectRequest request = new DeleteObjectRequest(name, key);
+ client.deleteObject(request, new DeleteObjectResponseHandler() {
+ @Override
+ public void onSuccess(DeleteObjectRequest request, DeleteObjectResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ }
+
+ @Override
+ public void onFailure(DeleteObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
+ }
+ });
}
});
bucketObjectInpuDialog.show();
-
}
private void listObjects() {
+ final String apiName = "List Objects";
bucketInpuDialog.setOnBucketInputListener(new OnBucketDialogListener() {
@Override
public void confirmBucket(String name) {
@@ -1115,183 +808,77 @@ public class MainActivity extends AppCompatActivity {
// request.setPrefix("android_test/");
// request.setDelimiter("/");
client.listObjects(request, new ListObjectsResponseHandler() {
-
@Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders,
- ObjectListing objectListing) {
- //StirngBuffer过长 oppo会报:android oppo msg's executing time is too longcopy
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "name = " + objectListing.getBucketName())
- .append("\n");
- stringBuffer.append(
- "Prefix = " + objectListing.getPrefix())
- .append("\n");
- stringBuffer.append(
- "Marker = " + objectListing.getMarker())
- .append("\n");
- stringBuffer.append(
- "Delimiter = " + objectListing.getDelimiter())
- .append("\n");
- stringBuffer.append(
- "IsTruncated = " + objectListing.isTruncated())
- .append("\n");
- List objectSummaries = objectListing
- .getObjectSummaries();
- Ks3ObjectSummary objectSummary = null;
- Owner owner = null;
- for (int i = 0; i < objectSummaries.size(); i++) {
- objectSummary = objectSummaries.get(i);
- owner = objectSummary.getOwner();
- stringBuffer.append(
- "================Object :" + i
- + " ===================").append(
- "\n");
- stringBuffer.append(
- " key ="
- + objectSummary.getKey()).append(
- "\n");
-// stringBuffer.append(
-// " LastModified ="
-// + objectSummary.getLastModified())
-// .append("\n");
-// stringBuffer.append(
-// " ETag =" + objectSummary.getETag())
-// .append("\n");
- stringBuffer.append(
- " Size =" + objectSummary.getSize())
- .append("\n");
- stringBuffer.append(
- " owner.ID =" + owner.getId())
- .append("\n");
-// stringBuffer.append(
-// " Size.displayName ="
-// + owner.getDisplayName()).append(
-// "\n");
-// stringBuffer.append(
-// " StorageClass = "
-// + objectSummary.getStorageClass())
-// .append("\n");
- }
-
- List commonPrefixes = objectListing
- .getCommonPrefixes();
- for (int i = 0; i < commonPrefixes.size(); i++) {
- stringBuffer.append(
- " commonPrefixes =>" + i + "="
- + objectSummary.getStorageClass())
- .append("\n");
+ public void onSuccess(ListObjectsRequest request, ListObjectsResult result) {
+ //StringBuffer过长 oppo会报:android oppo msg's executing time is too longcopy
+ ObjectListing objectListing = result.getObjectListing();
+ StringBuilder stringBuilder = new StringBuilder();
+ List objectSummaries = objectListing.getObjectSummaries();
+ for (int i = 0; i < objectListing.getObjectSummaries().size(); i++) {
+ stringBuilder.append(objectSummaries.get(i).getKey()).append("\n");
}
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "RESULT for ListObjects");
- intent.putExtras(data);
- startActivity(intent);
-
- Log.e("tag", "listObjects--onSuccess---" + stringBuffer.toString());
+ String resultStr = resultHandler(apiName, result, stringBuilder.toString());
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- // TODO Auto-generated method stub
- Log.e("tag", "listObjects--onFailure---" + statesCode);
+ public void onFailure(ListObjectsRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
});
bucketInpuDialog.show();
-
}
private void listBuckets() {
- client.listBuckets(new ListBucketsResponceHandler() {
+ final String apiName = "List Buckets";
+ ListBucketsRequest request = new ListBucketsRequest();
+ client.listBuckets(request, new ListBucketsResponseHandler() {
@Override
- public void onSuccess(int paramInt, Header[] paramArrayOfHeader,
- ArrayList resultList) {
- StringBuffer stringBuffer = new StringBuffer();
- for (Bucket bucket : resultList) {
- stringBuffer.append(bucket.getName()).append("\n");
-// stringBuffer.append(bucket.getCreationDate()).append("\n");
-// stringBuffer.append(bucket.getOwner().getDisplayName())
-// .append("\n");
-// stringBuffer.append(bucket.getOwner().getId()).append("\n");
+ public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
+ List buckets = result.getBuckets();
+ StringBuilder stringBuilder = new StringBuilder();
+ for (Bucket bucket : buckets) {
+ stringBuilder.append(bucket.getName()).append("\n");
}
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "List Bucket Result");
- intent.putExtras(data);
- startActivity(intent);
-
- Log.e("tag", "listBuckets--onSuccess:" + stringBuffer.toString());
+ String resultStr = resultHandler(apiName, result, stringBuilder.toString());
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "list bucket fail , states code :" + statesCode)
- .append("\n").append("responce :").append(response);
- stringBuffer.append("Exception :" + paramThrowable.toString());
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "List Buckets");
- intent.putExtras(data);
- startActivity(intent);
-
- Log.e("tag", "listBuckets--onFailure:" + stringBuffer.toString());
+ public void onFailure(ListBucketsRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
private void createBucket() {
+ final String apiName = "Create Bucket";
bucketInpuDialog.setOnBucketInputListener(new OnBucketDialogListener() {
@Override
public void confirmBucket(String name) {
- client.createBucket(name, new CreateBucketResponceHandler() {
+ CreateBucketRequest request = new CreateBucketRequest(name);
+ request.setCannedAcl(CannedAccessControlList.Private);
+ client.createBucket(request, new CreateBucketResponseHandler() {
@Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders) {
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, "success");
- data.putString(API, "Create Bucket Result");
- intent.putExtras(data);
- startActivity(intent);
-
- Log.e("tag", "createBucket--onSuccess---" + "statesCode:" + statesCode);
+ public void onSuccess(CreateBucketRequest request, CreateBucketResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "Delete fail , states code :" + statesCode)
- .append("\n").append("responce :").append(response);
- stringBuffer.append("Exception :"
- + paramThrowable.toString());
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "List Buckets");
- intent.putExtras(data);
- startActivity(intent);
-
- Log.e("tag", "createBucket--onFailure:" + stringBuffer.toString());
+ public void onFailure(CreateBucketRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
@@ -1300,87 +887,49 @@ public class MainActivity extends AppCompatActivity {
}
private void putBucketCrr() {
-
+ final String apiName = "Put Bucket Crr";
//设置规则
ReplicationRule rule = new ReplicationRule();
List prefixList = new ArrayList();
prefixList.add("test");
rule.setPrefixList(prefixList);
- rule.setTargetBucket("qichao-bja");
- rule.setRegion("BJA");
+ rule.setTargetBucket(SRC_BUCKETNAME);
+ rule.setRegion("BEIJING");
rule.setDeleteMarkerStatus(false);
-
- client.putBucketCrr(new PutBucketReplicationConfigRequest("cqc-test-b", rule), new PutBucketReplicationResponceHandler() {
+ PutBucketReplicationRequest request = new PutBucketReplicationRequest(SRC_BUCKETNAME, rule);
+ client.putBucketCrr(request, new PutBucketReplicationResponseHandler() {
@Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders) {
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, "success");
- data.putString(API, "PutBucketCRR Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "PutBucketCRR--onSuccess---" + "statesCode:" + statesCode);
- // deleteBucketCrr();
+ public void onSuccess(PutBucketReplicationRequest request, PutBucketReplicationResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "putBucketCrr fail , states code :" + statesCode)
- .append("\n").append("responce :").append(response);
- stringBuffer.append("Exception :"
- + paramThrowable.toString());
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "PutBucketCRR");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "PutBucketCRR--onFailure:" + stringBuffer.toString());
+ public void onFailure(PutBucketReplicationRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
private void getBucketCrr() {
-
- //获取规则
- client.getBucketCrr(new GetBucketReplicationConfigRequest("jiangrantest"), new GetBucketReplicationConfigResponceHandler() {
+ final String apiName = "Get Bucket Crr";
+ GetBucketReplicationRequest request = new GetBucketReplicationRequest(SRC_BUCKETNAME);
+ client.getBucketCrr(request, new GetBucketReplicationResponseHandler() {
@Override
- public void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "getBucketCrr fail , states code :" + statesCode)
- .append("\n").append("responce :").append(response);
- stringBuffer.append("Exception :"
- + paramThrowable.toString());
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "getBucketCRR");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "getBucketCRR--onFailure:" + stringBuffer.toString());
+ public void onSuccess(GetBucketReplicationRequest request, GetBucketReplicationResult result) {
+ String resultStr = resultHandler(apiName, result, result.getReplicationRule().toString());
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders, ReplicationRule replicationRule) {
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, "success" + "/n" + replicationRule.toString());
- data.putString(API, "getBucketCRR Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "getBucketCRR--onSuccess---" + "statesCode:" + statesCode);
+ public void onFailure(GetBucketReplicationRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
@@ -1389,39 +938,21 @@ public class MainActivity extends AppCompatActivity {
* 删除跨区域复制规则
*/
private void deleteBucketCrr() {
-
- //获取规则
- client.deleteBucketCrr(new DeleteBucketReplicationConfigRequest("jiangrantest"), new DeleteBucketReplicationConfigResponceHandler() {
+ final String apiName = "Delete Bucket Crr";
+ DeleteBucketReplicationRequest request = new DeleteBucketReplicationRequest(SRC_BUCKETNAME);
+ client.deleteBucketCrr(request, new DeleteBucketReplicationResponseHandler() {
@Override
- public void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "deleteBucketCrr fail , states code :" + statesCode)
- .append("\n").append("responce :").append(response);
- stringBuffer.append("Exception :"
- + paramThrowable.toString());
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "deleteBucketCrr");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "deleteBucketCrr--onFailure:" + stringBuffer.toString());
+ public void onSuccess(DeleteBucketReplicationRequest request, DeleteBucketReplicationResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders) {
-
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(API, "deleteBucketCrr Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "deleteBucketCrr--onSuccess---" + "statesCode:" + statesCode);
+ public void onFailure(DeleteBucketReplicationRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
@@ -1430,47 +961,44 @@ public class MainActivity extends AppCompatActivity {
* 设置空间策略
*/
private void putBucketPolicy() {
-
- BucketPolicyRule policyRule = new BucketPolicyRule()
- .addAllAction()
- .addPrincipalByAccountId("2000090561")
- .addPrincipalByAccountIdAndUserName("123123", "123123")
- .addBucketResource("jiangrantest")
- .addConditionSouceIp("11.11.11.11", true)
- .addSourceHeader("Connection: keep-alivE", BucketPolicyConditionRule.StringLike)
- .addSourceHeader("Connection: keep-alivE123", BucketPolicyConditionRule.StringEquals)
- .setEffect("Allow");
-
- PutBuckePolicyRequest putBuckePolicyRequest = new PutBuckePolicyRequest("jiangrantest", policyRule);
- client.putBucketPolicy(putBuckePolicyRequest, new Ks3HttpResponceHandler() {
+ final String apiName = "Put Bucket Policy";
+ String policy = "{\n" +
+ " \"Statement\": [\n" +
+ " {\n" +
+ " \"Effect\": \"Allow\",\n" +
+ " \"Action\": [\n" +
+ " \"ks3:ListBucket\",\n" +
+ " \"ks3:ListBucketMultipartUploads\",\n" +
+ " \"ks3:GetObject\",\n" +
+ " \"ks3:GetObjectAcl\",\n" +
+ " \"ks3:ListMultipartUploadParts\"\n" +
+ " ],\n" +
+ " \"Principal\": {\n" +
+ " \"KSC\": [\n" +
+ " \"*\"\n" +
+ " ]\n" +
+ " },\n" +
+ " \"Resource\": [\n" +
+ " \"krn:ksc:ks3:::android-test\",\n" +
+ " \"krn:ksc:ks3:::android-test/*\"\n" +
+ " ]\n" +
+ " }\n" +
+ " ]\n" +
+ "}";
+ PutBucketPolicyRequest putBucketPolicyRequest = new PutBucketPolicyRequest(SRC_BUCKETNAME, policy);
+ client.putBucketPolicy(putBucketPolicyRequest, new PutBucketPolicyResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders, byte[] response) {
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, "success");
- data.putString(API, "putBucketPolicy Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "putBucketPolicy--onSuccess---" + "statesCode:" + statesCode);
+ public void onSuccess(PutBucketPolicyRequest request, PutBucketPolicyResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "putBucketPolicy fail , states code :" + statesCode)
- .append("\n").append("responce :").append(response);
- stringBuffer.append("Exception :"
- + throwable.toString());
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "putBucketPolicy");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "putBucketPolicy--onFailure:" + stringBuffer.toString());
+ public void onFailure(PutBucketPolicyRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
@@ -1479,37 +1007,22 @@ public class MainActivity extends AppCompatActivity {
* 获取空间策略
*/
private void getBucketPolicy() {
-
- GetBucketPolicyRequest request = new GetBucketPolicyRequest("uptools2");
- client.getBucketPolicy(request, new GetBucketPolicyResponceHandler() {
+ final String apiName = "Get Bucket Policy";
+ GetBucketPolicyRequest request = new GetBucketPolicyRequest(SRC_BUCKETNAME);
+ client.getBucketPolicy(request, new GetBucketPolicyResponseHandler() {
@Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "getBucketPolicy fail , states code :" + statesCode)
- .append("\n").append("responce :").append(response);
- stringBuffer.append("Exception :"
- + paramThrowable.toString());
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "getBucketPolicy");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "getBucketPolicy--onFailure:" + stringBuffer.toString());
+ public void onSuccess(GetBucketPolicyRequest request, GetBucketPolicyResult result) {
+ String policy = result.getPolicy();
+ String resultStr = resultHandler(apiName, result, policy);
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders, String policy) {
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, "success ! policy is : " + policy);
- data.putString(API, "getBucketPolicy Result");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "getBucketPolicy--onSuccess---" + "statesCode:" + statesCode);
+ public void onFailure(GetBucketPolicyRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
@@ -1518,19 +1031,22 @@ public class MainActivity extends AppCompatActivity {
* 删除空间策略
*/
private void deleteBucketPolicy() {
-
- DeleteBucketPolicyRequest request = new DeleteBucketPolicyRequest("uptools2");
- client.deleteBucketPolicy(request, new Ks3HttpResponceHandler() {
+ final String apiName = "Delete Bucket Policy";
+ DeleteBucketPolicyRequest request = new DeleteBucketPolicyRequest(SRC_BUCKETNAME);
+ client.deleteBucketPolicy(request, new DeleteBucketPolicyResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders, byte[] response) {
- System.out.println("onSuccess statesCode is " + statesCode);
+ public void onSuccess(DeleteBucketPolicyRequest request, DeleteBucketPolicyResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
- System.out.println("onFailure statesCode is " + statesCode);
+ public void onFailure(DeleteBucketPolicyRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
-
});
}
@@ -1538,34 +1054,22 @@ public class MainActivity extends AppCompatActivity {
* 设置桶配额
*/
private void putBucketQuota() {
-
- //请求内容
+ final String apiName = "Put Bucket Quota";
BucketQuota quota = new BucketQuota(1000000);
-
- PutBuckeQuotaRequest quotaRequest = new PutBuckeQuotaRequest("chenqichen", quota);
-
- client.putBucketQuota(quotaRequest, new Ks3HttpResponceHandler() {
+ PutBucketQuotaRequest request = new PutBucketQuotaRequest(SRC_BUCKETNAME, quota);
+ client.putBucketQuota(request, new PutBucketQuotaResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders, byte[] response) {
- System.out.println("onSuccess " + new String(response));
+ public void onSuccess(PutBucketQuotaRequest request, PutBucketQuotaResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "putBucketQuota fail , states code :" + statesCode)
- .append("\n").append("responce :").append(response);
- stringBuffer.append("Exception :"
- + throwable.toString());
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "putBucketQuota");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "putBucketQuota--onFailure:" + stringBuffer.toString());
+ public void onFailure(PutBucketQuotaRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
@@ -1574,31 +1078,44 @@ public class MainActivity extends AppCompatActivity {
* 获取桶配额
*/
private void getBucketQuota() {
+ final String apiName = "Get Bucket Quota";
+ GetBucketQuotaRequest request = new GetBucketQuotaRequest(SRC_BUCKETNAME);
+ client.getBucketQuota(request, new GetBucketQuotaResponseHandler() {
+ @Override
+ public void onSuccess(GetBucketQuotaRequest request, GetBucketQuotaResult result) {
+ String resultStr = resultHandler(apiName, result, result.getBucketQuota().toString());
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ }
- GetBucketQuotaRequest quotaRequest = new GetBucketQuotaRequest("chenqichen");
+ @Override
+ public void onFailure(GetBucketQuotaRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
+ }
+ });
+ }
- client.getBucketQuota(quotaRequest, new GetBucketQuotaResponceHandler() {
+ /**
+ * 删除桶配额
+ */
+ private void deleteBucketQuota() {
+ final String apiName = "Delete Bucket Quota";
+ DeleteBucketQuotaRequest request = new DeleteBucketQuotaRequest(SRC_BUCKETNAME);
+ client.deleteBucketQuota(request, new DeleteBucketQuotaResponseHandler() {
@Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "getBucketQuota fail , states code :" + statesCode)
- .append("\n").append("responce :").append(response);
- stringBuffer.append("Exception :"
- + paramThrowable.toString());
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "getBucketQuota");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "getBucketQuota--onFailure:" + stringBuffer.toString());
+ public void onSuccess(DeleteBucketQuotaRequest request, DeleteBucketQuotaResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders, BucketQuota quota) {
- System.out.println("onSuccess storageQuota is " + quota.getStorageQuota());
+ public void onFailure(DeleteBucketQuotaRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
@@ -1607,7 +1124,7 @@ public class MainActivity extends AppCompatActivity {
* 音视频处理
*/
public void testPutAndQueryAdp() {
-
+ final String apiName = "PutAndQueryAdp";
String srcObjectKey = "test/file1.mp4";
String newObjectKey = "new/Upload3.mp4";
//音视频处理
@@ -1640,93 +1157,87 @@ public class MainActivity extends AppCompatActivity {
avconcat.setCommand("tag=avconcat&f=mp4&mode=1&file=" + com.ksyun.ks3.util.Base64.encode("test/file2.mp4".getBytes()));
avconcat.setKey(newObjectKey);
- PutAdpRequest adpRequest = new PutAdpRequest(SRC_BUCKETNAME, srcObjectKey, Arrays.asList(avconcat));
- adpRequest.setNotifyURL("http://127.0.0.1:9000/notify/url");
+ PutObjectAdpRequest adpRequest = new PutObjectAdpRequest(SRC_BUCKETNAME, srcObjectKey, Arrays.asList(avconcat));
+ adpRequest.setNotifyURL(PropertiesUtils.getProperties(this).getProperty("callback.url"));
//音视频元数据获取
-// GetAdpRequest getAdpRequest = new GetAdpRequest("taskId");
-// client.getAdpTask(getAdpRequest, new GetObjectAdpResponceHandler() {
-// @Override
-// public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
-// StringBuffer stringBuffer = new StringBuffer();
-// stringBuffer.append(
-// "getAdpRequest fail , states code :" + statesCode)
-// .append("\n").append("responce :").append(response);
-// stringBuffer.append("Exception :"
-// + paramThrowable.toString());
-// Intent intent = new Intent(MainActivity.this,
-// RESTAPITestResult.class);
-// Bundle data = new Bundle();
-// data.putString(RESULT, stringBuffer.toString());
-// data.putString(API, "getAdpRequest");
-// intent.putExtras(data);
-// startActivity(intent);
-// Log.e("tag", "getAdpRequest--onFailure:" + stringBuffer.toString());
-// }
-//
-// @Override
-// public void onSuccess(int statesCode, Header[] responceHeaders, AdpTask adpTask) {
-// System.out.println("getAdpTask is " + adpTask.toString());
-// }
-// });
+ GetObjectAdpRequest request = new GetObjectAdpRequest("taskId");
+ client.getAdpTask(request, new GetObjectAdpResponseHandler() {
+ @Override
+ public void onSuccess(GetObjectAdpRequest request, GetObjectAdpResult result) {
+ String resultStr = resultHandler(apiName, result, result.getAdpTask().toString());
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ }
+
+ @Override
+ public void onFailure(GetObjectAdpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
+ }
+ });
//发送请求
- client.putAdpTask(adpRequest, new PutObjectAdpResponceHandler() {
+ client.putAdpTask(adpRequest, new PutObjectAdpResponseHandler() {
@Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(
- "putAdpTask fail , states code :" + statesCode)
- .append("\n").append("responce :").append(response);
- stringBuffer.append("Exception :"
- + paramThrowable.toString());
- Intent intent = new Intent(MainActivity.this,
- RESTAPITestResult.class);
- Bundle data = new Bundle();
- data.putString(RESULT, stringBuffer.toString());
- data.putString(API, "putAdpTask");
- intent.putExtras(data);
- startActivity(intent);
- Log.e("tag", "putAdpTask--onFailure:" + stringBuffer.toString());
+ public void onSuccess(PutObjectAdpRequest request, PutObjectAdpResult result) {
+ String resultStr = resultHandler(apiName, result, result.getTaskId());
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders, PutAdpResult adpResult) {
- System.out.println("taskId is " + adpResult.getTaskId());
+ public void onFailure(PutObjectAdpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
public void postObject() {
+ bucketObjectInpuDialog
+ .setOnBucketObjectDialogListener(new OnBucketObjectDialogListener() {
+ @Override
+ public void confirmBucketAndObject(final String name, final String key) {
+ new Thread() {
+ @Override
+ public void run() {
+ uploadFileByPost(name, key);
+ }
+ }.start();
+ }
+ });
+ bucketObjectInpuDialog.show();
+ }
+ private void uploadFileByPost(String bucketName, String keyName) {
final File file = new File(TEST_MULTIUPLOAD_FILE);
- String key = "hahaha";
- Map postData = new HashMap();
- postData.put("acl","public-read");
+ String key = StringUtils.isEmpty(keyName) ? "test.jpg" : keyName;
+ Map postData = new HashMap();
+ postData.put("acl", "public-read");
postData.put("key", key);
- List unknowValueField = new ArrayList();
- unknowValueField.add("name");
- PostObjectFormFields fields = client.getObjectFormFields(SRC_BUCKETNAME,file.getName(),postData,unknowValueField);
- fields.getKssAccessKeyId();
- fields.getPolicy();
- fields.getSignature();
-
- String uploadUrl = "http://" + END_POINT + "/" + SRC_BUCKETNAME;
+ List unknownValueField = new ArrayList();
+ unknownValueField.add("name");
+ PostObjectFormFields fields = client.getObjectFormFields(bucketName, file.getName(), postData, unknownValueField);
+ Log.i("Post Object", "Signature: " + fields.getSignature());
+
+ String uploadUrl = "http://" + bucketName + '.' + END_POINT;
String end = "\r\n";
String twoHyphens = "--";
String boundary = "******";
+ Log.d("Post Object", "Url: " + uploadUrl);
try {
URL url = new URL(uploadUrl);
- HttpURLConnection httpURLConnection = (HttpURLConnection) url
- .openConnection();
+ HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
httpURLConnection.setUseCaches(false);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Connection", "Keep-Alive");
httpURLConnection.setRequestProperty("Charset", "UTF-8");
- httpURLConnection.setRequestProperty("Content-Type",
- "multipart/form-data;boundary=" + boundary);
+ httpURLConnection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
DataOutputStream dos = new DataOutputStream(httpURLConnection.getOutputStream());
@@ -1759,142 +1270,363 @@ public class MainActivity extends AppCompatActivity {
dos.writeBytes(end);
dos.writeBytes(twoHyphens + boundary + end);
- dos.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\""
- + file.getName()
- + "\"" + end);
+ dos.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\"" + file.getName() + "\"" + end);
dos.writeBytes(end);
- //将SD 文件通过输入流读到Java代码中-++++++++++++++++++++++++++++++`````````````````````````
+ //将文件通过输入流读到Java代码中
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[8192]; // 8k
int count = 0;
while ((count = fis.read(buffer)) != -1) {
dos.write(buffer, 0, count);
-
}
fis.close();
- System.out.println("file send to server............");
+ Log.i("Post Object", "file send to server............");
dos.writeBytes(end);
dos.writeBytes(twoHyphens + boundary + twoHyphens + end);
dos.flush();
//读取服务器返回结果
int code = httpURLConnection.getResponseCode();
- System.out.println("response code: " + code);
+ Log.i("Post Object", "Status Code: " + code);
InputStream is = null;
- if (code == 200) {
+ if (code == 200 || code == 201 || code == 204) {
is = httpURLConnection.getInputStream();
+ ToastUtils.showShort("post上传成功~");
} else {
is = httpURLConnection.getErrorStream();
}
InputStreamReader isr = new InputStreamReader(is, "utf-8");
BufferedReader br = new BufferedReader(isr);
- StringBuilder sb = new StringBuilder();
+ StringBuilder stringBuilder = new StringBuilder();
String result;
-
while ((result = br.readLine()) != null) {
- sb.append(result);
+ stringBuilder.append(result);
}
- System.out.println(sb.toString());
+ Log.d("Post Object", "Result: " + stringBuilder.toString());
is.close();
dos.close();
-
} catch (Exception e) {
e.printStackTrace();
- System.out.println(e.getMessage());
+ Log.e("Post Object", "Error: " + e.getMessage());
}
-
}
public void putObjectFetch() {
+ final String apiName = "Put Object Fetch";
+ PutObjectFetchRequest request = new PutObjectFetchRequest(SRC_BUCKETNAME, "fetch-object.png", "https://pic.imgdb.cn/item/5f9a786f1cd1bbb86bcc04aa.png");
+ client.putObjectFetch(request, new PutObjectFetchResponseHandler() {
+ @Override
+ public void onTaskSuccess(PutObjectFetchRequest request, PutObjectFetchResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ }
- final String srcObjectKey = "OnlineTest/sdk/demo/KS3SDKDemo.zip";
- String sourceUrl = "";
- PutObjectFetchRequest putObjectFetchRequest = new PutObjectFetchRequest(SRC_BUCKETNAME, srcObjectKey, sourceUrl);
- client.putObjectFetch(putObjectFetchRequest, new PutObjectFetchResponseHandler() {
@Override
- public void onTaskFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
- System.out.println("fail putObjectFetch is " + response);
+ public void onTaskFailure(PutObjectFetchRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
+ });
+ }
+ public void putObjectTag() {
+ final String apiName = "Put Object Tagging";
+ ObjectTagging objectTagging = new ObjectTagging();
+ objectTagging.addObjectTag("tagA", "A");
+ PutObjectTaggingRequest request = new PutObjectTaggingRequest(SRC_BUCKETNAME, SRC_OBJECTKEY, objectTagging);
+ client.putObjectTag(request, new PutObjectTaggingResponseHandler() {
@Override
- public void onTaskSuccess(int statesCode, Header[] responceHeaders, PutObjectFetchResult result) {
- System.out.println("success putObjectFetch is " + result.toString());
+ public void onSuccess(PutObjectTaggingRequest request, PutObjectTaggingResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ }
+
+ @Override
+ public void onFailure(PutObjectTaggingRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
+ }
+
+ public void getObjectTag() {
+ final String apiName = "Get Object Tagging";
+ GetObjectTaggingRequest request = new GetObjectTaggingRequest(SRC_BUCKETNAME, SRC_OBJECTKEY);
+ client.getObjectTag(request, new GetObjectTaggingResponseHandler() {
+ @Override
+ public void onSuccess(GetObjectTaggingRequest request, GetObjectTaggingResult result) {
+ String resultStr = resultHandler(apiName, result, result.getTagging().toString());
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ }
+ @Override
+ public void onFailure(GetObjectTaggingRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
+ }
+ });
}
- /**
- * put object tag
- */
- public void testPutObjTag() {
+ public void deleteObjectTag() {
+ final String apiName = "Delete Object Tagging";
+ DeleteObjectTaggingRequest request = new DeleteObjectTaggingRequest(SRC_BUCKETNAME, SRC_OBJECTKEY);
+ client.deleteObjectTag(request, new DeleteObjectTaggingResponseHandler() {
+ @Override
+ public void onSuccess(DeleteObjectTaggingRequest request, DeleteObjectTaggingResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ }
- //文档参考 -> https://docs.ksyun.com/documents/949
- ObjectTagging objectTagging = new ObjectTagging();
- objectTagging.addObjectTag("tagA", "A");
+ @Override
+ public void onFailure(DeleteObjectTaggingRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
+ }
+ });
+ }
- PutObjectTaggingRequest taggingRequest = new PutObjectTaggingRequest(SRC_BUCKETNAME, SRC_OBJECTKEY, objectTagging);
- client.putObjectTag(taggingRequest, new Ks3HttpResponceHandler() {
+ public void initiateMultipartUpload() {
+ final String apiName = "Init Multipart Upload";
+ InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(SRC_BUCKETNAME, "test.mp4");
+ client.initiateMultipartUpload(request, new InitiateMultipartUploadResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders, byte[] response) {
+ public void onSuccess(InitiateMultipartUploadRequest request, InitiateMultipartUploadResult result) {
+ String resultStr = resultHandler(apiName, result, "uploadId: " + result.getUploadId());
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ }
- System.out.println("success putObjectTaggingResponse is " + response.toString());
- GetObjectTaggingRequest taggingRequest = new GetObjectTaggingRequest(SRC_BUCKETNAME, SRC_OBJECTKEY);
- client.getObjectTag(taggingRequest, new GetObjectTaggingResponseHandler() {
- @Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
- System.out.println("fail getObjectTaggingResponse is " + response.toString());
- }
+ @Override
+ public void onFailure(InitiateMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
+ }
+ });
+ }
- @Override
- public void onSuccess(int statesCode, Header[] responceHeaders, ObjectTagging tagging) {
- System.out.println("success getObjectTaggingResponse is " + tagging.toString());
- }
- });
+ public void uploadPart() {
+ final String apiName = "Upload Part";
+ UploadPartRequest request = new UploadPartRequest(SRC_BUCKETNAME, "test.mp4", "uploadId", new File(TEST_MULTIUPLOAD_FILE), 1024, 1, 1024);
+ client.uploadPart(request, new UploadPartResponseHandler() {
+ @Override
+ public void onSuccess(UploadPartRequest request, UploadPartResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
- System.out.println("fail putObjectTaggingResponse is " + new String(response));
+ public void onTaskProgress(double progress) {
+ Log.d(apiName, " ---onTaskProgress---" + progress);
+ }
+
+ @Override
+ public void onFailure(UploadPartRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
+ }
- DeleteObjectTaggingRequest deleteObjectTaggingRequest = new DeleteObjectTaggingRequest(SRC_BUCKETNAME, SRC_OBJECTKEY);
- client.deleteObjectTag(deleteObjectTaggingRequest, new HeadBucketResponseHandler() {
+ public void listParts() {
+ final String apiName = "List Parts";
+ ListPartsRequest request = new ListPartsRequest(SRC_BUCKETNAME, "test.mp4", "uploadId");
+ client.listParts(request, new ListPartsResponseHandler() {
@Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
- System.out.println("fail DeleteObjectTaggingRequest is " + new String(response));
+ public void onSuccess(ListPartsRequest request, ListPartsResult result) {
+ StringBuilder stringBuilder = new StringBuilder();
+ List parts = result.getParts();
+ for (Part part : parts) {
+ stringBuilder.append(part.getPartNumber()).append(" ").append(part.getETag()).append("\n");
+ }
+ String resultStr = resultHandler(apiName, result, stringBuilder.toString());
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders) {
- System.out.println("onSuccess DeleteObjectTaggingRequest");
+ public void onFailure(ListPartsRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
}
- /**
- * testPutFetchObj
- */
- public void testPutFetchObj() {
+ public void completeMultipartUpload() {
+ final String apiName = "Comp Multipart Upload";
+ List partETags = new ArrayList();
+ CompleteMultipartUploadRequest request = new CompleteMultipartUploadRequest(SRC_BUCKETNAME, "test.mp4", "uploadId", partETags);
+ client.completeMultipartUpload(request, new CompleteMultipartUploadResponseHandler() {
+ @Override
+ public void onSuccess(CompleteMultipartUploadRequest request, CompleteMultipartUploadResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ }
- ObjectTagging objectTagging = new ObjectTagging();
- objectTagging.addObjectTag("tagA", "A");
+ @Override
+ public void onFailure(CompleteMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
+ }
+ });
+ }
- PutObjectFetchRequest putObjectFetchRequest = new PutObjectFetchRequest(SRC_BUCKETNAME, "zzzz", "http://ks3tools-online.ks3-cn-beijing.ksyun.com/tools/release/ks3up-tool-2.1.1-dist.zip", objectTagging);
- putObjectFetchRequest.setCallBack("https://open.feishu.cn/open-apis/bot/v2/hook/704de274-447f-400f-a634-075df20fd1ba", putObjectFetchRequest.getCallBackBody(), putObjectFetchRequest.getHeader());
- client.putObjectFetch(putObjectFetchRequest, new Ks3HttpResponceHandler() {
+ public void abortMultipartUpload() {
+ final String apiName = "Abort Multipart Upload";
+ AbortMultipartUploadRequest request = new AbortMultipartUploadRequest(SRC_BUCKETNAME, "test.mp4", "uploadId");
+ client.abortMultipartUpload(request, new AbortMultipartUploadResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders, byte[] response) {
+ public void onSuccess(AbortMultipartUploadRequest request, AbortMultipartUploadResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ }
+
+ @Override
+ public void onFailure(AbortMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
+ }
+ });
+ }
- System.out.println("success putObjectFetchResponse is " + new String(response));
+ public void multipartUpload() {
+ final String apiName = "Multipart Upload";
+ File file = new File(Constants.TEST_MULTIUPLOAD_FILE);
+ long partSize = 1024 * 1024 * 5;
+ MultiUploader uploader = new MultiUploader(client, SRC_BUCKETNAME, "test", file, partSize);
+ // 设置回调函数 监听是否成功
+ uploader.setHandler(new CompleteMultipartUploadResponseHandler() {
+ @Override
+ public void onSuccess(CompleteMultipartUploadRequest request, CompleteMultipartUploadResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
}
@Override
- public void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
- System.out.println("fail putObjectFetchResponse is " + new String(response));
+ public void onFailure(CompleteMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
}
});
+ uploader.upload();
+ }
+
+ public void multipartUploadExample() {
+ File file = new File(Constants.TEST_MULTIUPLOAD_FILE);
+ long partSize = 1024 * 1024 * 2;
+ MultipartUploadExample uploader = new MultipartUploadExample(client, SRC_BUCKETNAME, "test", file, partSize);
+ uploader.upload();
+ }
+
+ public void toResultPage(String currentPage, String result) {
+ Intent intent = new Intent(
+ MainActivity.this,
+ RESTAPITestResult.class);
+
+ Bundle data = new Bundle();
+ data.putString(RESULT, result);
+ data.putString(API, currentPage + " Result");
+ intent.putExtras(data);
+ startActivity(intent);
+ }
+
+ public void getObjectAsync() {
+ bucketObjectInpuDialog
+ .setOnBucketObjectDialogListener(new OnBucketObjectDialogListener() {
+ @Override
+ public void confirmBucketAndObject(final String name, final String key) {
+ new Thread() {
+ @Override
+ public void run() {
+ getObject(name, key);
+ }
+ }.start();
+ }
+ });
+ bucketObjectInpuDialog.show();
+ }
+
+ public void getObject(String bucketName, final String objectKey) {
+ final String apiName = "Get Object";
+ GetObjectRequest request = new GetObjectRequest(bucketName, objectKey);
+ File storeFolder = new File(Environment.getExternalStorageDirectory(), "ksyun_download");
+ File file = new File(storeFolder, objectKey);
+ client.getObject(request, new GetObjectResponseHandler(file, bucketName, objectKey) {
+ @Override
+ public void onSuccess(GetObjectRequest request, GetObjectResult result) {
+ String resultStr = resultHandler(apiName, result, "");
+ toResultPage(apiName, resultStr);
+ Log.i(apiName, apiName + " ---onSuccess---" + resultStr);
+ ToastUtils.showShort("下载成功");
+ }
+
+ @Override
+ public void onTaskProgress(double progress) {
+ Log.d(apiName, " ---onTaskProgress---" + progress);
+ }
+
+ @Override
+ public void onFailure(GetObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ String resultStr = exceptionHandler(apiName, clientException, serviceException);
+ toResultPage(apiName, resultStr);
+ Log.e(apiName, apiName + " ---onFailure---" + resultStr);
+ ToastUtils.showShort("下载失败");
+ }
+
+ @Override
+ public void onTaskCancel() {
+ ToastUtils.showShort("任务取消");
+ }
+ });
+ }
+
+ public String exceptionHandler(String apiName, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder.append(apiName)
+ .append(" Fail!\n");
+ if (clientException != null) {
+ stringBuilder.append("ClientException: ")
+ .append(clientException.getMessage())
+ .append("\n");
+ }
+ if (serviceException != null) {
+ stringBuilder.append("ServiceException: ")
+ .append(serviceException.getMessage())
+ .append("\n");
+ }
+ return stringBuilder.toString();
+ }
+
+ public String resultHandler(String apiName, Ks3Result result, String extraStr) {
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder.append(apiName)
+ .append(" Success!\n")
+ .append("Result: ")
+ .append("Status Code: ")
+ .append(result.getStatusCode())
+ .append("\n")
+ .append("Request Id: ")
+ .append(result.getHeaders().get("x-kss-request-id"))
+ .append("\n")
+ .append(extraStr);
+ return stringBuilder.toString();
}
}
diff --git a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MultiUploadActivity.java b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MultiUploadActivity.java
index 5d53dcd8368ea15ef9933615b5d3a7cd9344a326..e985405327a433fd9e5f23ed01f588c089df5761 100644
--- a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MultiUploadActivity.java
+++ b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MultiUploadActivity.java
@@ -3,6 +3,7 @@ package com.ks3.demo.main;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -11,14 +12,21 @@ import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
+import com.blankj.utilcode.util.ToastUtils;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.CompleteMultipartUploadResult;
import com.ksyun.ks3.services.Ks3Client;
+import com.ksyun.ks3.services.MultiUploader;
+import com.ksyun.ks3.services.handler.CompleteMultipartUploadResponseHandler;
+import com.ksyun.ks3.services.request.CompleteMultipartUploadRequest;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class MultiUploadActivity extends Activity {
-
+ final private String TAG = "MultiUploader";
private List fileInfos;
@Override
@@ -30,13 +38,13 @@ public class MultiUploadActivity extends Activity {
listView.setAdapter(new ListViewAdapter(fileInfos));
}
- private void getFileInfo(){
+ private void getFileInfo() {
fileInfos = new ArrayList();
Ks3Client client = Ks3ClientFactory.getDefaultClient(MultiUploadActivity.this);
- fileInfos.add(new MultiUploader(client, Constants.TEST_MULTIUPLOAD_BUCKET, "11.txt",
+ fileInfos.add(new MultiUploader(client, Constants.TEST_MULTIUPLOAD_BUCKET, "pdf.pdf",
new File(Constants.TEST_MULTIUPLOAD_FILE)));//, "bb20153e438047b3bc3212f37e25fd9c"));
- fileInfos.add(new MultiUploader(client, Constants.TEST_MULTIUPLOAD_BUCKET, "11.txt",
- new File(Constants.TEST_MULTIUPLOAD_FILE), "8b67c9679fae436ba754b4bafc29ca37"));
+ fileInfos.add(new MultiUploader(client, Constants.TEST_MULTIUPLOAD_BUCKET, "reload-pdf.pdf",
+ new File(Constants.TEST_MULTIUPLOAD_FILE), "7ab054f4c6b44a9cadb163a82ae05a54"));
}
public class ListViewAdapter extends BaseAdapter {
@@ -44,9 +52,9 @@ public class MultiUploadActivity extends Activity {
public ListViewAdapter(List list) {
itemViews = new View[list.size()];
- for(int i=0;i doneParts = Collections.synchronizedList(new ArrayList());
- List leftParts = Collections.synchronizedList(new ArrayList());
-
- private CompleteMultipartUploadResponseHandler multiHandler;
-
- private void create(Ks3Client client, String bucketName, String key, File file, String uploadId, long partSize){
- this.client = client;
- this.bucketName = bucketName;
- this.key = key;
- this.file = file;
- this.uploadId = uploadId;
- this.partSize = partSize;
- }
-
- public MultiUploader(Ks3Client client, String bucketName, String key, File file, String uploadId, long partSize){
- create(client, bucketName,key, file, uploadId, partSize);
- }
-
- public MultiUploader(Ks3Client client, String bucketName, String key, File file, String uploadId){
- create(client, bucketName, key, file, uploadId, partSize);
- }
- public MultiUploader(Ks3Client client, String bucketName, String key, File file){
- create(client, bucketName, key, file, null, partSize);
- }
- public MultiUploader(Ks3Client client, String bucketName, String key, File file, long partSize){
- create(client, bucketName, key, file, null, partSize);
- }
-
- public void setConcurrentNo(int no){ concurrentNo = no; }
-
- public void setHandler(CompleteMultipartUploadResponseHandler uploadResponseHandler){
- multiHandler = uploadResponseHandler;
- }
-
- public String getKey(){
- return key;
- }
- public String getUploadId(){
- return uploadId;
- }
-
- abstract class MyUploadPartResponceHandler extends UploadPartResponceHandler {
- private String key;
- private int partNo;
- private String uploadId;
- public abstract void onSuccess(int statesCode, Header[] responceHeaders, PartETag result, String key, int partNo, String uploadId);
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable throwable
- , String key, int partNo, String uploadId);
- public abstract void onTaskProgress(double progress, String key, int partNo, String uploadId);
-
- public MyUploadPartResponceHandler(String key, int partNo, String uploadId){
- this.key = key;
- this.partNo = partNo;
- this.uploadId = uploadId;
- }
- @Override
- public void onTaskProgress(double progress) {
- onTaskProgress(progress, key, partNo, uploadId);
- }
- @Override
- public void onSuccess(int statesCode, Header[] responceHeaders, PartETag result) {
- onSuccess(statesCode, responceHeaders, result, key, partNo, uploadId);
- }
- @Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable throwable) {
- onFailure(statesCode,error,responceHeaders,response,throwable, key, partNo, uploadId);
- }
- }
-
- private final MyHandler mHandler = new MyHandler();
-
- class MyHandler extends Handler {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case INIT_DONE:
- uploadParts();
- break;
- case PARTS_DONE:
- completeUpload();
- break;
- case GET_UPLOADED_DONE:
- List res = (List)msg.obj;
- reUpload(res);
- break;
- case LIMIT_DONE:
- int no = msg.arg1;
- int N = msg.arg2;
- doWithLimit(no, N);
- default:
- break;
- }
- }
- }
-
- /*
- return false, if uploadId hasbeen got
- */
- public boolean upload(){
- if(uploadId != null) return false;
- InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, key);
- client.initiateMultipartUpload(request, new InitiateMultipartUploadResponceHandler(){
- @Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
- Log.w(TAG, "init multiupload fail, statesCode="+statesCode, paramThrowable);
- }
- @Override
- public void onSuccess(int statesCode, Header[] responceHeaders, InitiateMultipartUploadResult result) {
- uploadId = result.getUploadId();
- Log.d(TAG, "init multiupload success, uploadId="+uploadId + ",key="+key);
- mHandler.sendEmptyMessage(INIT_DONE);
- }
- });
- return true;
- }
-
- private List convertPart(List list){
- List res = new ArrayList();
- for(Part p : list) {
- res.add(new PartETag(p.getPartNumber(), p.getETag()));
- }
- return res;
- }
- /*
- Get from ks3 server. call list parts API.
- */
- public void getUploadedParts(){
- final List res = new ArrayList();
- final ListPartsResponseHandler listPartsResponseHandler = new ListPartsResponseHandler() {
- @Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
- Log.w(TAG, "list parts, statesCode="+statesCode, paramThrowable);
- }
- @Override
- public void onSuccess(int statesCode, Header[] responceHeaders, ListPartsResult listPartsResult) {
- res.addAll(convertPart(listPartsResult.getParts()));
- if(! listPartsResult.isTruncated())
- mHandler.sendMessage(Message.obtain(mHandler, GET_UPLOADED_DONE, res));
- else
- Log.e(TAG, "File size too largs. You may not use phone to upload");
- }
- };
- client.listParts(bucketName, key, uploadId, listPartsResponseHandler);
- }
-
- public List getLeftParts(List uploadedParts){
- List res = new ArrayList();
- long start = 0L;
- int partNumber = 1;
- Set set = new HashSet();
- for(PartETag p : uploadedParts){
- set.add(p.getPartNumber());
- }
- while(start= N) {
- mHandler.sendEmptyMessage(PARTS_DONE);
- } else if(cur.get()%concurrentNo==0){
- mHandler.sendMessage(Message.obtain(mHandler,LIMIT_DONE, cur.get(), N));
- }
- }
- @Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable throwable,
- String key, int partNo, String uploadId) {
- // you may record this failure info in file, database, or backend
- Log.w(TAG, "upload part fail, uploadId="+uploadId+",key="+key+",partNo="+partNo, throwable);
- if(multiHandler!=null)
- multiHandler.onFailure(statesCode, error, responceHeaders, response, throwable);
- }
- @Override
- public void onTaskProgress(double progress, String key, int partNo, String uploadId) {
- Log.d(TAG, "progress:"+progress+",key="+key+",partNo"+partNo);
- }
- });
- }
- }
-
- public void reUpload(final List uploadedParts){
- leftParts = getLeftParts(uploadedParts);
- int N = leftParts.size() + uploadedParts.size();
- cur = new AtomicInteger(0);
- doneParts.addAll(uploadedParts);
- if(leftParts.isEmpty())
- mHandler.sendEmptyMessage(PARTS_DONE);
- doWithLimit(0, N);
- }
-
- private void uploadParts(){
- reUpload(new ArrayList());
- }
-
- private void completeUpload(){
- if(multiHandler==null){
- multiHandler = new CompleteMultipartUploadResponseHandler(){
- @Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
- Log.w(TAG, "complete upload fail, statusCode="+statesCode, paramThrowable);
- }
- @Override
- public void onSuccess(int statesCode, Header[] responceHeaders, CompleteMultipartUploadResult result) {
- Log.i(TAG, "complete upload, key="+key);
- }
- };
- }
- client.completeMultipartUpload(bucketName,key,uploadId,doneParts, multiHandler);
- }
-}
diff --git a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MultipartUploadExample.java b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MultipartUploadExample.java
new file mode 100644
index 0000000000000000000000000000000000000000..3060376088e85a1b5333994a2965bc2857a6203e
--- /dev/null
+++ b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MultipartUploadExample.java
@@ -0,0 +1,161 @@
+package com.ks3.demo.main;
+
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.PartETag;
+import com.ksyun.ks3.model.result.CompleteMultipartUploadResult;
+import com.ksyun.ks3.model.result.InitiateMultipartUploadResult;
+import com.ksyun.ks3.model.result.UploadPartResult;
+import com.ksyun.ks3.services.Ks3Client;
+import com.ksyun.ks3.services.handler.CompleteMultipartUploadResponseHandler;
+import com.ksyun.ks3.services.handler.InitiateMultipartUploadResponseHandler;
+import com.ksyun.ks3.services.handler.UploadPartResponseHandler;
+import com.ksyun.ks3.services.request.CompleteMultipartUploadRequest;
+import com.ksyun.ks3.services.request.InitiateMultipartUploadRequest;
+import com.ksyun.ks3.services.request.UploadPartRequest;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+public class MultipartUploadExample {
+ final private String TAG = "MultiUploadExample";
+ private String bucketName;
+ private String key;
+ private File file;
+ private long partSize = 5 * 1024 * 1024;
+ private String uploadId;
+ private Ks3Client client;
+ final static private int STATE_UPLOAD_INIT = 0;
+ final static private int STATE_UPLOAD_NEXT = 1;
+ final static private int STATE_UPLOAD_COMPLETE = 2;
+ final static private int STATE_UPLOAD_FAILED = 3;
+ final private List uploadedParts = new ArrayList<>();
+ UploadPartRequestFactory localUploadPartRequestFactory = null;
+
+ private void create(Ks3Client client, String bucketName, String key, File file, long partSize) {
+ this.client = client;
+ this.bucketName = bucketName;
+ this.key = key;
+ this.file = file;
+ this.partSize = partSize;
+ }
+
+ public MultipartUploadExample(Ks3Client client, String bucketName, String key, File file) {
+ create(client, bucketName, key, file, partSize);
+ }
+
+ public MultipartUploadExample(Ks3Client client, String bucketName, String key, File file, long partSize) {
+ create(client, bucketName, key, file, partSize);
+ }
+
+ private final UploadHandler handler = new UploadHandler();
+
+ class UploadHandler extends Handler {
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case STATE_UPLOAD_INIT:
+ initUpload();
+ break;
+ case STATE_UPLOAD_NEXT:
+ uploadPart();
+ break;
+ case STATE_UPLOAD_COMPLETE:
+ completeUpload();
+ break;
+ case STATE_UPLOAD_FAILED:
+ Log.e(TAG, "upload failed");
+ default:
+ break;
+ }
+ }
+ }
+
+ public void upload() {
+ handler.sendEmptyMessage(STATE_UPLOAD_INIT);
+ }
+
+ private void initUpload() {
+ InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, key);
+ client.initiateMultipartUpload(request, new InitiateMultipartUploadResponseHandler() {
+ @Override
+ public void onSuccess(InitiateMultipartUploadRequest request, InitiateMultipartUploadResult result) {
+ uploadId = result.getUploadId();
+ localUploadPartRequestFactory = new UploadPartRequestFactory(bucketName, key, uploadId, file, partSize);
+ Log.i(TAG, "init multipart upload success, uploadId=" + uploadId);
+ handler.sendEmptyMessage(STATE_UPLOAD_NEXT);
+ }
+
+ @Override
+ public void onFailure(InitiateMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ if (clientException != null) {
+ Log.e(TAG, "init multipart upload fail, clientException=" + clientException.getMessage());
+ }
+ if (serviceException != null) {
+ Log.e(TAG, "init multipart upload fail, serviceException=" + serviceException.getMessage());
+ }
+ handler.sendEmptyMessage(STATE_UPLOAD_FAILED);
+ }
+ });
+ }
+
+ private void uploadPart() {
+ if (localUploadPartRequestFactory.hasMoreRequests()) {
+ UploadPartRequest request = localUploadPartRequestFactory.getNextUploadPartRequest();
+ client.uploadPart(request, new UploadPartResponseHandler() {
+ @Override
+ public void onSuccess(UploadPartRequest request, UploadPartResult result) {
+ PartETag partETag = result.getPartETag();
+ partETag.setPartNumber(request.getPartNumber());
+ uploadedParts.add(partETag);
+ Log.i(TAG, "upload part success, partNumber=" + partETag.getPartNumber() + ", eTag=" + partETag.geteTag());
+ handler.sendEmptyMessage(STATE_UPLOAD_NEXT);
+ }
+
+ @Override
+ public void onTaskProgress(double progress) {
+ }
+
+ @Override
+ public void onFailure(UploadPartRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ if (clientException != null) {
+ Log.e(TAG, "upload part fail, clientException=" + clientException.getMessage());
+ }
+ if (serviceException != null) {
+ Log.e(TAG, "upload part fail, serviceException=" + serviceException.getMessage());
+ }
+ handler.sendEmptyMessage(STATE_UPLOAD_FAILED);
+ }
+ });
+ } else {
+ // 发送完成消息
+ handler.sendEmptyMessage(STATE_UPLOAD_COMPLETE);
+ }
+ }
+
+ private void completeUpload() {
+ CompleteMultipartUploadRequest request = new CompleteMultipartUploadRequest(bucketName, key, uploadId, uploadedParts);
+ client.completeMultipartUpload(request, new CompleteMultipartUploadResponseHandler() {
+ @Override
+ public void onSuccess(CompleteMultipartUploadRequest request, CompleteMultipartUploadResult result) {
+ Log.i(TAG, "complete multipart upload success, status code=" + result.getStatusCode());
+ }
+
+ @Override
+ public void onFailure(CompleteMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ if (clientException != null) {
+ Log.e(TAG, "complete multipart upload fail, clientException=" + clientException.getMessage());
+ }
+ if (serviceException != null) {
+ Log.e(TAG, "complete multipart upload fail, serviceException=" + serviceException.getMessage());
+ }
+ handler.sendEmptyMessage(STATE_UPLOAD_FAILED);
+ }
+ });
+ }
+}
diff --git a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MyApplication.java b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MyApplication.java
index 5167dd2f035bc1e2221165d457ac3be55faf1176..ff8ccc33ff1ebd9c2b994342691088baaa36d496 100644
--- a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MyApplication.java
+++ b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/MyApplication.java
@@ -10,5 +10,8 @@ public class MyApplication extends Application {
public void onCreate() {
super.onCreate();
Utils.init(this);
+ String ak = PropertiesUtils.getProperties(this).getProperty("ak");
+ String sk = PropertiesUtils.getProperties(this).getProperty("sk");
+ Constants.setAKSK(ak, sk);
}
}
diff --git a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/ObjectMetadataBuilder.java b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/ObjectMetadataBuilder.java
index 635d9c028a2e1881a040b65fe41f02ac9516251f..ab83480b64ee0d16b6fd604330ec1279a9c54eab 100644
--- a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/ObjectMetadataBuilder.java
+++ b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/ObjectMetadataBuilder.java
@@ -2,9 +2,8 @@ package com.ks3.demo.main;
import android.util.Log;
-import com.ks3.demo.main.utils.DateUtils;
-import com.ksyun.ks3.model.HttpHeaders;
import com.ksyun.ks3.model.ObjectMetadata;
+import com.ksyun.ks3.util.DateUtil;
import java.util.Date;
import java.util.List;
@@ -70,7 +69,7 @@ public class ObjectMetadataBuilder {
if (headers.containsKey("Last-Modified")
&& !((List) headers.get("Last-Modified")).isEmpty()) {
try {
- Date e = DateUtils.parseRfc822Date((String) ((List) headers.get("Last-Modified")).get(0));
+ Date e = DateUtil.parseRfc822Date((String) ((List) headers.get("Last-Modified")).get(0));
meta.addOrEditMeta(ObjectMetadata.Meta.LastModified, e.toString());
} catch (Exception var3) {
Log.e("tag", "Unknow date format:" + (String) ((List) headers.get("Last-Modified")).get(0));
diff --git a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/PropertiesUtils.java b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/PropertiesUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..3bbb936092df3cbfdc22ea98bedcea9d0300c3dd
--- /dev/null
+++ b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/PropertiesUtils.java
@@ -0,0 +1,22 @@
+package com.ks3.demo.main;
+
+import android.content.Context;
+
+import java.io.InputStream;
+import java.util.Properties;
+
+public class PropertiesUtils {
+
+ private final static String m_strPath = "/assets/global.properties";
+
+ public static Properties getProperties(Context c){
+ Properties props = new Properties();
+ try {
+ InputStream in = PropertiesUtils.class.getResourceAsStream(m_strPath);
+ props.load(in);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return props;
+ }
+}
diff --git a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/TransferUtils.java b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/TransferUtils.java
index 5fff4c5cb487986e5014e28cb23b215df39a200b..e6cbfb95f99b341ffc0cbc9e3f8d4c740dec75f1 100644
--- a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/TransferUtils.java
+++ b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/TransferUtils.java
@@ -1,7 +1,7 @@
package com.ks3.demo.main;
import java.io.File;
-import android.util.Log;
+
import com.ksyun.ks3.model.transfer.TransferManagerConfiguration;
import com.ksyun.ks3.services.request.PutObjectRequest;
@@ -48,7 +48,7 @@ public class TransferUtils {
File localFile = getRequestFile(paramPutObjectRequest);
if (localFile != null)
return localFile.length();
- if ((paramPutObjectRequest.getRequestBody() != null) && (paramPutObjectRequest.getObjectMeta().getContentLength() > 0L))
+ if ((paramPutObjectRequest.getInputStreamBody() != null) && (paramPutObjectRequest.getObjectMeta().getContentLength() > 0L))
return paramPutObjectRequest.getObjectMeta().getContentLength();
return -1L;
}
diff --git a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/UploadActivity.java b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/UploadActivity.java
index 2ed70ff2777fec2ca2a83043af6d11a9ed432f2d..1892f9bd21739e2c6dd70fb3e080c6ffb293a74b 100644
--- a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/UploadActivity.java
+++ b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/UploadActivity.java
@@ -25,39 +25,39 @@ import android.widget.TextView;
import android.widget.Toast;
import com.ks3.demo.main.BucketInpuDialog.OnBucketDialogListener;
-import com.ksyun.ks3.exception.Ks3Error;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
import com.ksyun.ks3.model.ObjectMetadata;
-import com.ksyun.ks3.model.PartETag;
import com.ksyun.ks3.model.PostObjectFormFields;
import com.ksyun.ks3.model.acl.CannedAccessControlList;
+import com.ksyun.ks3.model.result.AbortMultipartUploadResult;
import com.ksyun.ks3.model.result.CompleteMultipartUploadResult;
import com.ksyun.ks3.model.result.InitiateMultipartUploadResult;
import com.ksyun.ks3.model.result.ListPartsResult;
+import com.ksyun.ks3.model.result.PostObjectResult;
+import com.ksyun.ks3.model.result.PutObjectResult;
+import com.ksyun.ks3.model.result.UploadPartResult;
import com.ksyun.ks3.services.Ks3Client;
import com.ksyun.ks3.services.Ks3ClientConfiguration;
import com.ksyun.ks3.services.handler.AbortMultipartUploadResponseHandler;
import com.ksyun.ks3.services.handler.CompleteMultipartUploadResponseHandler;
-import com.ksyun.ks3.services.handler.InitiateMultipartUploadResponceHandler;
-import com.ksyun.ks3.services.handler.Ks3HttpResponceHandler;
+import com.ksyun.ks3.services.handler.InitiateMultipartUploadResponseHandler;
import com.ksyun.ks3.services.handler.ListPartsResponseHandler;
+import com.ksyun.ks3.services.handler.PostObjectResponseHandler;
import com.ksyun.ks3.services.handler.PutObjectResponseHandler;
-import com.ksyun.ks3.services.handler.UploadPartResponceHandler;
+import com.ksyun.ks3.services.handler.UploadPartResponseHandler;
import com.ksyun.ks3.services.request.AbortMultipartUploadRequest;
import com.ksyun.ks3.services.request.CompleteMultipartUploadRequest;
import com.ksyun.ks3.services.request.InitiateMultipartUploadRequest;
import com.ksyun.ks3.services.request.ListPartsRequest;
import com.ksyun.ks3.services.request.PutObjectRequest;
import com.ksyun.ks3.services.request.UploadPartRequest;
-import com.ksyun.ks3.services.request.object.PostObjectRequest;
+import com.ksyun.ks3.services.request.PostObjectRequest;
import com.ksyun.ks3.services.request.tag.ObjectTagging;
-import org.junit.Test;
-
-import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-import java.io.InputStreamReader;
import java.io.Serializable;
import java.net.HttpURLConnection;
import java.net.URL;
@@ -69,8 +69,6 @@ import java.util.Map;
import javax.net.ssl.HttpsURLConnection;
-import cz.msebera.android.httpclient.Header;
-
import static com.ks3.demo.main.Constants.SRC_BUCKETNAME;
import static com.ks3.demo.main.Constants.SRC_OBJECTKEY;
@@ -291,7 +289,7 @@ public class UploadActivity extends Activity implements OnItemClickListener {
currentDirTextView = (TextView) findViewById(R.id.current_dir_tv);
currentDir = Environment.getExternalStorageDirectory();
setUp();
- // doSingleUploadByUrl();
+ // doSingleUploadByUrl();
}
@@ -425,12 +423,12 @@ public class UploadActivity extends Activity implements OnItemClickListener {
}
try {
- URLConnection connection = getHttpURLConnection("http://ks3-console-bja.ksyun.com/api/object/download?key=tet.png&bucket=chenqichen");
+ URLConnection connection = getHttpURLConnection("http://ks3-console-bja.ksyun.com/api/object/download?key=tet.png&bucket=chenqichen");
InputStream input = connection.getInputStream();
ObjectTagging objectTagging = new ObjectTagging();
objectTagging.addObjectTag("tagA", "A");
- ObjectMetadata objectMetadata = ObjectMetadataBuilder.build(connection.getHeaderFields());
- final PutObjectRequest requestTwo = new PutObjectRequest(SRC_BUCKETNAME,SRC_OBJECTKEY, input, objectMetadata,objectTagging);
+ ObjectMetadata objectMetadata = ObjectMetadataBuilder.build(connection.getHeaderFields());
+ final PutObjectRequest requestTwo = new PutObjectRequest(SRC_BUCKETNAME, SRC_OBJECTKEY, input, objectMetadata, objectTagging);
// Adp adp = new Adp();
// adp.setBucket(SRC_BUCKETNAME);
// adp.setCommand("tag=avinfo");
@@ -439,74 +437,77 @@ public class UploadActivity extends Activity implements OnItemClickListener {
// requestTwo.setAdps(Arrays.asList(adp));
client.putObject(requestTwo, new PutObjectResponseHandler() {
- @Override
- public void onTaskProgress(double progress) {
- System.out.println("progress is "+progress);
- }
+// @Override
+// public void onTaskProgress(double progress) {
+// System.out.println("progress is "+progress);
+// }
@Override
- public void onTaskFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
- Toast.makeText(UploadActivity.this, "onTaskFailure statesCode is " + statesCode,
+ public void onTaskFailure(PutObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ Toast.makeText(UploadActivity.this, "onTaskFailure statusCode is " + serviceException.getStatusCode(),
Toast.LENGTH_SHORT).show();
}
@Override
- public void onTaskSuccess(int statesCode, Header[] responceHeaders) {
- Toast.makeText(UploadActivity.this, "onTaskSuccess statesCode is " + statesCode,
+ public void onTaskSuccess(PutObjectRequest request, PutObjectResult result) {
+ Toast.makeText(UploadActivity.this, "onTaskSuccess statusCode is " + result.getStatusCode(),
Toast.LENGTH_SHORT).show();
}
@Override
- public void onTaskStart() {
- Toast.makeText(UploadActivity.this, "onTaskStart",
- Toast.LENGTH_SHORT).show();
- }
+ public void onTaskCancel() {
- @Override
- public void onTaskFinish() {
- Toast.makeText(UploadActivity.this, "onTaskFinish",
- Toast.LENGTH_SHORT).show();
}
@Override
- public void onTaskCancel() {
+ public void onTaskProgress(double progress) {
}
});
} catch (Exception e) {
- System.out.println(e.getMessage());
+ System.out.println(e.getMessage());
}
}
+
public void postObject(final String bucketName, final UploadFile item) {
- final String srcObjectKey = "OnlineTest/sdk/demo/KS3SDKDemo.zip";
+ final String srcObjectKey = "KS3SDKDemo.zip";
final File file = item.file;
- Map postData = new HashMap();
- postData.put("acl","public-read");
- postData.put("key","20150115/中文/${filename}");
+ Map postData = new HashMap();
+ postData.put("acl", "public-read");
+ postData.put("key", "20150115/中文/${filename}");
List unknowValueField = new ArrayList();
unknowValueField.add("name");
- PostObjectFormFields fields = client.getObjectFormFields(SRC_BUCKETNAME,file.getName(),postData,unknowValueField);
+ PostObjectFormFields fields = client.getObjectFormFields(bucketName, file.getName(), postData, unknowValueField);
fields.getKssAccessKeyId();
fields.getPolicy();
fields.getSignature();
- PostObjectRequest postObjectRequest = new PostObjectRequest(SRC_BUCKETNAME, srcObjectKey, file,fields);
+ PostObjectRequest postObjectRequest = new PostObjectRequest(bucketName, srcObjectKey, file, fields);
//表单上传需要这个auth 计算签名
postObjectRequest.auth = client.auth;
- client.postObject(postObjectRequest, new Ks3HttpResponceHandler() {
+ client.postObject(postObjectRequest, new PostObjectResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders, byte[] response) {
- System.out.println("onSuccess postObject is " + new String(response));
+ public void onSuccess(PostObjectRequest request, PostObjectResult result) {
+ System.out.println("onSuccess postObject is " + result.getStatusCode());
}
+
@Override
- public void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
- System.out.println("onFailure postObject is " + new String(response));
+ public void onFailure(PostObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ if (clientException != null) {
+ Log.e("UploadActivity", clientException.getMessage());
+ System.out.println("onFailure postObject is " + clientException.getMessage());
+ }
+ if (serviceException != null) {
+ Log.e("UploadActivity", serviceException.getResponse());
+ System.out.println("onFailure postObject is " + serviceException.getResponse());
+ }
}
});
}
+
// 上传文件
private void doSingleUpload(final String bucketName, final UploadFile item) {
@@ -514,7 +515,7 @@ public class UploadActivity extends Activity implements OnItemClickListener {
ObjectTagging objectTagging = new ObjectTagging();
objectTagging.addObjectTag("tagA", "A");
final PutObjectRequest request = new PutObjectRequest(bucketName,
- "test.3gp", item.file,null,objectTagging);
+ "test.3gp", item.file, null, objectTagging);
request.setCannedAcl(CannedAccessControlList.PublicRead);
// Map customParams = new HashMap();
@@ -550,55 +551,23 @@ public class UploadActivity extends Activity implements OnItemClickListener {
}
@Override
- public void onTaskSuccess(int statesCode, Header[] responceHeaders) {
+ public void onTaskSuccess(PutObjectRequest request, PutObjectResult result) {
Log.d(com.ksyun.ks3.util.Constants.LOG_TAG, "success");
}
- @Override
- public void onTaskStart() {
- List uploadFiles = dataSource.get(currentDir
- .getPath());
- for (UploadFile file : uploadFiles) {
- if (file.file.getPath().equalsIgnoreCase(
- item.file.getPath())) {
- file.status = UploadFile.STATUS_STARTED;
- file.progress = 0;
- item.status = UploadFile.STATUS_STARTED;
- item.progress = 0;
- }
- }
- mHandler.sendEmptyMessage(UPDATE_SINGLE_UPLOAD_STATUS);
- }
-
- @Override
- public void onTaskFinish() {
- List uploadFiles = dataSource.get(currentDir
- .getPath());
- for (UploadFile file : uploadFiles) {
- if (file.file.getPath().equalsIgnoreCase(
- item.file.getPath())) {
- file.status = UploadFile.STATUS_FINISH;
- file.progress = 100;
- item.status = UploadFile.STATUS_FINISH;
- file.progress = 100;
- }
- }
- mHandler.sendEmptyMessage(UPDATE_SINGLE_UPLOAD_STATUS);
- }
-
@Override
public void onTaskCancel() {
Log.d(com.ksyun.ks3.util.Constants.LOG_TAG, "cancle ok");
}
@Override
- public void onTaskFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- Log.d(com.ksyun.ks3.util.Constants.LOG_TAG,
- paramThrowable.toString());
- Log.d(com.ksyun.ks3.util.Constants.LOG_TAG,
- response);
+ public void onTaskFailure(PutObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ if (clientException != null) {
+ Log.e(com.ksyun.ks3.util.Constants.LOG_TAG, clientException.getMessage());
+ }
+ if (serviceException != null) {
+ Log.e(com.ksyun.ks3.util.Constants.LOG_TAG, serviceException.getResponse());
+ }
List uploadFiles = dataSource.get(currentDir
.getPath());
for (UploadFile file : uploadFiles) {
@@ -621,18 +590,16 @@ public class UploadActivity extends Activity implements OnItemClickListener {
ObjectTagging objectTagging = new ObjectTagging();
objectTagging.addObjectTag("tagA", "A");
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(
- bucketName, item.file.getName(),objectTagging);
+ bucketName, item.file.getName(), objectTagging);
initiateMultipartUpload(request, item);
}
private void initiateMultipartUpload(
final InitiateMultipartUploadRequest request, final UploadFile item) {
client.initiateMultipartUpload(request,
- new InitiateMultipartUploadResponceHandler() {
+ new InitiateMultipartUploadResponseHandler() {
@Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders,
- InitiateMultipartUploadResult result) {
+ public void onSuccess(InitiateMultipartUploadRequest request, InitiateMultipartUploadResult result) {
List uploadFiles = dataSource
.get(currentDir.getPath());
for (UploadFile file : uploadFiles) {
@@ -650,9 +617,7 @@ public class UploadActivity extends Activity implements OnItemClickListener {
}
@Override
- public void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
+ public void onFailure(InitiateMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
List uploadFiles = dataSource
.get(currentDir.getPath());
for (UploadFile file : uploadFiles) {
@@ -663,7 +628,7 @@ public class UploadActivity extends Activity implements OnItemClickListener {
}
}
mHandler.sendEmptyMessage(UPDATE_SINGLE_UPLOAD_STATUS);
- Log.e("tag", "initiateMultipartUpload--onFailure---" + statesCode);
+ Log.e("tag", "initiateMultipartUpload--onFailure---" + serviceException.getStatusCode());
}
});
}
@@ -687,7 +652,7 @@ public class UploadActivity extends Activity implements OnItemClickListener {
if (requestFactory.hasMoreRequests()) {
final UploadPartRequest request = requestFactory
.getNextUploadPartRequest();
- client.uploadPart(request, new UploadPartResponceHandler() {
+ client.uploadPart(request, new UploadPartResponseHandler() {
double progressInFile = 0;
@Override
@@ -717,8 +682,7 @@ public class UploadActivity extends Activity implements OnItemClickListener {
}
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders,
- PartETag result) {
+ public void onSuccess(UploadPartRequest request, UploadPartResult result) {
Message message = mHandler.obtainMessage();
message.what = UPLOAD_NEXT_PART;
Bundle bundle = new Bundle();
@@ -727,13 +691,11 @@ public class UploadActivity extends Activity implements OnItemClickListener {
message.setData(bundle);
mHandler.sendMessage(message);
- Log.e("tag", "uploadPart--onSuccess---" + statesCode);
+ Log.e("tag", "uploadPart--onSuccess---" + result.getStatusCode());
}
@Override
- public void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable throwable) {
+ public void onFailure(UploadPartRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
List uploadFiles = dataSource.get(currentDir
.getPath());
for (UploadFile file : uploadFiles) {
@@ -746,7 +708,7 @@ public class UploadActivity extends Activity implements OnItemClickListener {
}
}
mHandler.sendEmptyMessage(UPDATE_SINGLE_UPLOAD_STATUS);
- Log.e("tag", "uploadPart--onFailure---" + statesCode);
+ Log.e("tag", "uploadPart--onFailure---" + serviceException.getStatusCode());
}
});
} else {
@@ -763,8 +725,7 @@ public class UploadActivity extends Activity implements OnItemClickListener {
private void listParts(final ListPartsRequest request, final UploadFile item) {
client.listParts(request, new ListPartsResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders,
- ListPartsResult result) {
+ public void onSuccess(ListPartsRequest request, ListPartsResult result) {
Message message = mHandler.obtainMessage();
message.what = LIST_PART_FINISH;
message.obj = result;
@@ -772,14 +733,12 @@ public class UploadActivity extends Activity implements OnItemClickListener {
bundle.putSerializable("uploadFile", item);
message.setData(bundle);
mHandler.sendMessage(message);
- Log.e("tag", "listParts--onSuccess---" + statesCode);
+ Log.e("tag", "listParts--onSuccess---" + result.getStatusCode());
}
@Override
- public void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
+ public void onFailure(ListPartsRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
List uploadFiles = dataSource.get(currentDir
.getPath());
for (UploadFile file : uploadFiles) {
@@ -790,7 +749,7 @@ public class UploadActivity extends Activity implements OnItemClickListener {
}
}
mHandler.sendEmptyMessage(UPDATE_SINGLE_UPLOAD_STATUS);
- Log.e("tag", "listParts--onFailure---" + statesCode);
+ Log.e("tag", "listParts--onFailure---" + serviceException.getStatusCode());
}
});
}
@@ -798,7 +757,7 @@ public class UploadActivity extends Activity implements OnItemClickListener {
private void abortUploadPart(AbortMultipartUploadRequest request, final UploadFile item) {
client.abortMultipartUpload(request, new AbortMultipartUploadResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders) {
+ public void onSuccess(AbortMultipartUploadRequest request, AbortMultipartUploadResult result) {
List uploadFiles = dataSource
.get(currentDir.getPath());
for (UploadFile file : uploadFiles) {
@@ -809,12 +768,11 @@ public class UploadActivity extends Activity implements OnItemClickListener {
}
}
mHandler.sendEmptyMessage(0);
- Log.e("tag", "completeMultipartUpload--onSuccess---" + statesCode);
+ Log.e("tag", "completeMultipartUpload--onSuccess---" + result.getStatusCode());
}
@Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders,
- String response, Throwable paramThrowable) {
+ public void onFailure(AbortMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
List uploadFiles = dataSource
.get(currentDir.getPath());
for (UploadFile file : uploadFiles) {
@@ -828,7 +786,7 @@ public class UploadActivity extends Activity implements OnItemClickListener {
}
mHandler.sendEmptyMessage(0);
- Log.e("tag", "abortUploadPart--onFailure---" + statesCode);
+ Log.e("tag", "abortUploadPart--onFailure---" + serviceException.getStatusCode());
}
});
}
@@ -839,9 +797,7 @@ public class UploadActivity extends Activity implements OnItemClickListener {
client.completeMultipartUpload(request,
new CompleteMultipartUploadResponseHandler() {
@Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders,
- CompleteMultipartUploadResult result) {
+ public void onSuccess(CompleteMultipartUploadRequest request, CompleteMultipartUploadResult result) {
List uploadFiles = dataSource
.get(currentDir.getPath());
for (UploadFile file : uploadFiles) {
@@ -852,13 +808,11 @@ public class UploadActivity extends Activity implements OnItemClickListener {
}
}
mHandler.sendEmptyMessage(0);
- Log.e("tag", "completeMultipartUpload--onSuccess---" + statesCode);
+ Log.e("tag", "completeMultipartUpload--onSuccess---" + result.getStatusCode());
}
@Override
- public void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
+ public void onFailure(CompleteMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
List uploadFiles = dataSource
.get(currentDir.getPath());
for (UploadFile file : uploadFiles) {
@@ -871,7 +825,7 @@ public class UploadActivity extends Activity implements OnItemClickListener {
}
}
mHandler.sendEmptyMessage(0);
- Log.e("tag", "completeMultipartUpload--onFailure---" + statesCode);
+ Log.e("tag", "completeMultipartUpload--onFailure---" + serviceException.getStatusCode());
}
});
}
diff --git a/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/Utils.java b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/Utils.java
new file mode 100644
index 0000000000000000000000000000000000000000..bde52a288850dd5c22c35d8fc242f2dbd6e3bfda
--- /dev/null
+++ b/ks3-android-sdk/demo/src/main/java/com/ks3/demo/main/Utils.java
@@ -0,0 +1,34 @@
+package com.ks3.demo.main;
+
+import android.util.Log;
+
+import com.ksyun.ks3.model.result.GetObjectResult;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+
+public class Utils {
+ public static void saveToLocal (File file, GetObjectResult response) {
+ InputStream inputStream = response.getObject().getObjectContent();
+ long length = response.getObject().getObjectMetadata().getContentLength();
+ if (length > 0) {
+ byte[] buffer = new byte[(int)length];
+ int readCount = 0;
+ while (readCount < length) {
+ try{
+ readCount += inputStream.read(buffer, readCount, (int) length - readCount);
+ }catch (Exception e){
+ Log.e("DownloadActivity", e.toString());
+ }
+ }
+ try {
+ FileOutputStream fout = new FileOutputStream(file);
+ fout.write(buffer);
+ fout.close();
+ } catch (Exception e) {
+ Log.e("DownloadActivity", e.toString());
+ }
+ }
+ }
+}
diff --git a/ks3-android-sdk/demo/src/main/res/layout/alert_bucket_object_input.xml b/ks3-android-sdk/demo/src/main/res/layout/alert_bucket_object_input.xml
index ef53768a0d872534c9dd7d40af8839394e9b57ae..0d79b3083c2cc4d476c1fcd84e7e66b04fcf86fe 100644
--- a/ks3-android-sdk/demo/src/main/res/layout/alert_bucket_object_input.xml
+++ b/ks3-android-sdk/demo/src/main/res/layout/alert_bucket_object_input.xml
@@ -1,7 +1,7 @@
+ android:layout_height="200dp" >
@@ -29,8 +29,8 @@
android:id="@+id/input_second"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
android:layout_below="@+id/input"
+ android:layout_alignParentRight="true"
android:ems="10"
android:hint="Object Key"
android:singleLine="true" />
@@ -47,4 +47,17 @@
+
+
\ No newline at end of file
diff --git a/ks3-android-sdk/demo/src/main/res/layout/multiupload_item.xml b/ks3-android-sdk/demo/src/main/res/layout/multiupload_item.xml
index 53d58f338c709b979392095b2ae0e2d21b16c93c..19be1ed1415da7d7139b2d634e564e928fcaafe5 100644
--- a/ks3-android-sdk/demo/src/main/res/layout/multiupload_item.xml
+++ b/ks3-android-sdk/demo/src/main/res/layout/multiupload_item.xml
@@ -19,4 +19,11 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="续传"/>
+
\ No newline at end of file
diff --git a/ks3-android-sdk/demo/src/main/res/values/strings.xml b/ks3-android-sdk/demo/src/main/res/values/strings.xml
index 50bfba38bf09a0ca664239fbf72f05e87e92ec8e..1687354f138dc62fa926649801479c7ee900eae2 100644
--- a/ks3-android-sdk/demo/src/main/res/values/strings.xml
+++ b/ks3-android-sdk/demo/src/main/res/values/strings.xml
@@ -7,31 +7,38 @@
MainActivity
- - List Buckets
- - Create Bucket
- - Get BucketAcl
- - Put BucketAcl
- - Head Bucket
- - Delete Bucket
- - Get Object
- - Head Object
- - Put Object
- - Delete Object
- - Get ObjectAcl
- - Put ObjectAcl
- - List Objects
- - Upload
- - Download
- - List Part
- - MultiPartUpload
- - Copy Object
- - Put BucketReplication
- - Put BucketPolicy
- - Put BucketQuota
- - Put and Get Adp
- - Put Tag
- - Fetch Object
- - Post Object
+ - List Buckets:0
+ - Create Bucket:1
+ - Get Bucket Acl:2
+ - Put Bucket Acl:3
+ - Head Bucket:4
+ - Delete Bucket:5
+ - Get Object:6
+ - Head Object:7
+ - Put Object:8
+ - Delete Object:9
+ - Get Object Acl:10
+ - Put Object Acl:11
+ - List Objects:12
+ - Upload:13
+ - Download:14
+ - Multipart Upload Advanced:30
+ - Multipart Upload Example:31
+ - MultiPart Upload:16
+ - Copy Object:17
+ - Put Bucket CRR:18
+ - Get Bucket CRR:27
+ - Delete Bucket CRR:28
+ - Put Bucket Policy:19
+ - Get Bucket Policy:25
+ - Delete Bucket Policy:26
+ - Fetch Object:23
+ - Post Object:24
+ - GetObject Async:29
+ - Put Object Tag:32
+ - Get Object Tag:33
+ - Delete Object Tag:34
+ - Put Object Sync:35
MultiUploadActivity
diff --git a/ks3-android-sdk/ks3androidsdk/build.gradle b/ks3-android-sdk/ks3androidsdk/build.gradle
index be49dc690608a5573252d5fe18fe0b60b4bc2aa2..0288bf21b0ec4ea326298bdbe24e4013f072ccbb 100644
--- a/ks3-android-sdk/ks3androidsdk/build.gradle
+++ b/ks3-android-sdk/ks3androidsdk/build.gradle
@@ -58,15 +58,13 @@ task deleteOldJar(type: Delete) {
def SDK_BASENAME = "ks3-androidsdk";
def sdkJarPath = "build/libs/";
def zipFile = file('build/intermediates/packaged-classes/debug/classes.jar')//指定build生成的jar的路径
-def current_version = "1.5.5"
+def current_version = "2.0.0"
-task makeJar (type: Jar) {
+task makeJar(type: Jar) {
baseName = SDK_BASENAME
version = current_version
from(project.zipTree(zipFile))
- from(project.zipTree('libs/ks3-async-http-1.5.0.jar')) //将ks3-async-http-1.5.0.jar作为源码添加到jar中
-
destinationDir = file(sdkJarPath)
}
makeJar.dependsOn(build) //执行makeJar的时候会在之前执行build
@@ -74,10 +72,10 @@ makeJar.dependsOn(build) //执行makeJar的时候会在之前执行build
dependencies {
api fileTree(include: ['*.jar'], dir: 'libs')
-// api 'com.loopj.android:android-async-http:1.4.11'
- api 'com.google.code.gson:gson:2.8.5'
api 'joda-time:joda-time:2.9.9'
- implementation files('libs/ks3-async-http-1.5.0.jar')
+ api 'com.squareup.okhttp3:okhttp:3.11.0'
+ api 'com.squareup.okio:okio:1.14.0'
+ api 'com.squareup.okhttp3:logging-interceptor:3.11.0'
}
diff --git a/ks3-android-sdk/ks3androidsdk/libs/ks3-async-http-1.5.0.jar b/ks3-android-sdk/ks3androidsdk/libs/ks3-async-http-1.5.0.jar
deleted file mode 100644
index 0778a778619dcc72acf943505a6e8b9ccb8e67a2..0000000000000000000000000000000000000000
Binary files a/ks3-android-sdk/ks3androidsdk/libs/ks3-async-http-1.5.0.jar and /dev/null differ
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ks3/demo/main/utils/DateUtils.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ks3/demo/main/utils/DateUtils.java
deleted file mode 100644
index 065fa41eef71aa9043fc32b20aeb1370f1be09af..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ks3/demo/main/utils/DateUtils.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.ks3.demo.main.utils;
-
-import org.joda.time.format.DateTimeFormat;
-import org.joda.time.format.DateTimeFormatter;
-import org.joda.time.format.ISODateTimeFormat;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Locale;
-import java.util.SimpleTimeZone;
-
-public class DateUtils {
-
- public static enum DATETIME_PROTOCOL {
- RFC1123, ISO8861;
- };
- public static Date parseRfc822Date(String dateString) throws ParseException {
- return getRfc822DateFormat().parse(dateString);
- }
-
- private static DateFormat getRfc822DateFormat() {
- SimpleDateFormat rfc822DateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US);
- rfc822DateFormat.setTimeZone(new SimpleTimeZone(0, "GMT"));
- return rfc822DateFormat;
- }
- /**
- * 获取指定时间对应的毫秒数
- * @param time "HH:mm:ss"
- * @return
- */
- public static long getTimeMillis(String time) {
- try {
- DateFormat dateFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
- DateFormat dayFormat = new SimpleDateFormat("yy-MM-dd");
- Date curDate = dateFormat.parse(dayFormat.format(new Date()) + " " + time);
- return curDate.getTime();
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return 0;
- }
- public static String convertDate2Str(Date date, DATETIME_PROTOCOL protocol) {
- if (protocol.equals(DATETIME_PROTOCOL.RFC1123)) {
-
- org.joda.time.format.DateTimeFormatter RFC1123_DATE_TIME_FORMATTER = DateTimeFormat
- .forPattern("EEE, dd MMM yyyy HH:mm:ss 'GMT'")
- .withZoneUTC().withLocale(Locale.ENGLISH);
-
- return RFC1123_DATE_TIME_FORMATTER.print(date.getTime());
-
- } else if (protocol.equals(DATETIME_PROTOCOL.ISO8861)) {
-
- DateTimeFormatter ISO8861_FORMATTER = ISODateTimeFormat.dateTime()
- .withZoneUTC();
- return ISO8861_FORMATTER.print(date.getTime());
- }
- return null;
- }
-
-}
\ No newline at end of file
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/auth/AuthUtils.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/auth/AuthUtils.java
index 7637e53cab5238ccabe6a3e8175ddf91f4814195..197f5a7b398283c626fb9e0990f0664d7bbfe6e5 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/auth/AuthUtils.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/auth/AuthUtils.java
@@ -4,11 +4,11 @@ import android.text.TextUtils;
import android.util.Base64;
import android.util.Log;
-import com.ks3.demo.main.utils.DateUtils;
import com.ksyun.ks3.model.acl.Authorization;
import com.ksyun.ks3.services.request.Ks3HttpRequest;
import com.ksyun.ks3.util.ByteUtil;
import com.ksyun.ks3.util.Constants;
+import com.ksyun.ks3.util.DateUtil;
import com.ksyun.ks3.util.HttpUtils;
import com.ksyun.ks3.util.StringUtils;
@@ -35,7 +35,7 @@ public class AuthUtils {
Ks3HttpRequest request) throws SignatureException {
String signature = calcSignature(auth.getAccessKeySecret(), request);
String value = "KSS " + auth.getAccessKeyId() + ":" + signature;
- return value;
+ return value.trim();
}
private static String calcSignature(String accessKeySecret,
@@ -161,7 +161,7 @@ public class AuthUtils {
*/
public static String calcSignature(String accessKeySecret,String policy) throws SignatureException{
String signStr = policy;
- return calculateRFC2104HMAC(signStr,accessKeySecret);
+ return calculateRFC2104HMAC(signStr,accessKeySecret).trim();
}
//post表单时的policy
/**
@@ -173,7 +173,7 @@ public class AuthUtils {
@Deprecated
public static String getPolicy(Date expiration, String bucket) {
String policy = "{\"expiration\": \""
- + DateUtils.convertDate2Str(expiration, DateUtils.DATETIME_PROTOCOL.ISO8861)
+ + DateUtil.convertDate2Str(expiration, DateUtil.DATETIME_PROTOCOL.ISO8861)
+"\",\"conditions\": [ {\"bucket\": \""+bucket+"\"}]}";
try {
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/auth/DefaultSigner.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/auth/DefaultSigner.java
index 9db43b2d4c81633416f78614394dff0d26382a1c..a241c2c7f7dcb251103642a5ebc52935c0f19d13 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/auth/DefaultSigner.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/auth/DefaultSigner.java
@@ -14,7 +14,7 @@ public class DefaultSigner implements Signer {
try {
return AuthUtils.calcAuthorization(auth, request);
} catch (Exception e) {
- Log.d(Constants.LOG_TAG, "calculate user authorization has occured an exception ");
+ Log.e(Constants.LOG_TAG, "calculate user authorization has occured an exception: " + e);
}
return null;
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/auth/RepeatableInputStreamRequestEntity.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/auth/RepeatableInputStreamRequestEntity.java
deleted file mode 100644
index c5c2b3d56a27e9a3b9b667e21a23c057fcc411d5..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/auth/RepeatableInputStreamRequestEntity.java
+++ /dev/null
@@ -1,140 +0,0 @@
-package com.ksyun.ks3.auth;
-
-import android.util.Log;
-
-import java.io.FilterOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import cz.msebera.android.httpclient.entity.BasicHttpEntity;
-import cz.msebera.android.httpclient.entity.InputStreamEntity;
-
-import com.ksyun.ks3.model.transfer.RequestProgressListener;
-
-public class RepeatableInputStreamRequestEntity extends BasicHttpEntity {
- private boolean firstAttempt = true;
-
- private InputStreamEntity inputStreamRequestEntity;
-
- private InputStream content;
-
- private IOException originalException;
-
- private RequestProgressListener progressLisener;
-
- private long contentLength;
- public RepeatableInputStreamRequestEntity(InputStream content,String length) {
- setChunked(false);
-
- long contentLength = -1;
- try {
- String contentLengthString = length;
- if (contentLengthString != null) {
- contentLength = Long.parseLong(contentLengthString);
- }
- } catch (NumberFormatException nfe) {
-
- }
-
- inputStreamRequestEntity = new InputStreamEntity(content, contentLength);
- inputStreamRequestEntity.setContentType(contentType);
- this.content = content;
- this.contentLength = contentLength;
-
- setContent(content);
- setContentType(contentType);
- setContentLength(contentLength);
- }
-
- public void setProgressLisener(RequestProgressListener progressLisener){
- this.progressLisener = progressLisener;
- }
-
-
- @Override
- public boolean isChunked() {
- return false;
- }
-
- @Override
- public boolean isRepeatable() {
- return content.markSupported()
- || inputStreamRequestEntity.isRepeatable();
- }
-
- @Override
- public void writeTo(OutputStream output) throws IOException {
- try {
- if (!firstAttempt && isRepeatable())
- content.reset();
-
- firstAttempt = false;
- if(this.progressLisener != null){
- inputStreamRequestEntity.writeTo(output instanceof CountingOutputStream? output : new CountingOutputStream(output,this.contentLength,this.progressLisener));
- }else{
- inputStreamRequestEntity.writeTo(output);
- }
-
-
-
- } catch (IOException ioe) {
- if (originalException == null)
- originalException = ioe;
- throw originalException;
- } finally {
- progressLisener = null;
- content.close();
- output.close();
- }
- }
-
- @Override
- protected void finalize() throws Throwable {
- Log.d("RepeatableInputStreamRequestEntity", "RepeatableInputStreamRequestEntity finalize:"+this);
- super.finalize();
- }
-
- public static class CountingOutputStream extends FilterOutputStream {
-
- private final RequestProgressListener listener;
- private long uploaded;
- private long length ;
-
- @Override
- protected void finalize() throws Throwable {
- Log.d("CountingOutputStream", "CountingOutputStream finalize:"+this);
- super.finalize();
- }
-
- CountingOutputStream(final OutputStream out,long length, final RequestProgressListener listener) {
- super(out);
- this.listener = listener;
- this.length = length;
- this.uploaded = 0;
- }
-
- @Override
- public void write(final byte[] b, final int off, final int len)
- throws IOException {
- out.write(b, off, len);
- this.uploaded += len;
- if(this.length > 0 ){
- double progress = Double.valueOf(length > 0 ? uploaded * 1.0D / length * 100.0D : -1.0D);
- this.listener.onTaskProgress(progress);
- }
-
-
-
- }
-
- @Override
- public void write(final int b) throws IOException {
- out.write(b);
- this.uploaded++;
- if(this.length > 0 ){
- double progress = Double.valueOf(length > 0 ? uploaded * 1.0D / length * 100.0D : -1.0D);
- this.listener.onTaskProgress(progress);
- }
- }
- }
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/exception/Ks3Error.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/exception/Ks3Error.java
deleted file mode 100644
index 1233142056e19431136f60c4317c6e0852cd7707..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/exception/Ks3Error.java
+++ /dev/null
@@ -1,306 +0,0 @@
-package com.ksyun.ks3.exception;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-import org.xmlpull.v1.XmlPullParserFactory;
-
-import com.ksyun.ks3.util.Constants;
-
-import android.util.Log;
-
-public class Ks3Error {
- public static final int ERROR_CODE_UNKNOWN_ERROR = -1;
- public static final int ERROR_CODE_BAD_DIGEST = 0;
- public static final int ERROR_CODE_INVALID_ACL_STR = 1;
- public static final int ERROR_CODE_INVALID_AUTHORIZATION_STR = 2;
- public static final int ERROR_CODE_INVALID_BUCKET_NAME = 3;
- public static final int ERROR_CODE_INVALID_DATE_FORMAT = 4;
- public static final int ERROR_CODE_INVALID_DIGEST = 5;
- public static final int ERROR_CODE_INVALID_ENCYPTION_ALGORITHM = 6;
- public static final int ERROR_CODE_INVALID_HOST_HEADER = 7;
- public static final int ERROR_CODE_INVALID_PARAMETER = 8;
- public static final int ERROR_CODE_INVALID_PATH = 9;
- public static final int ERROR_CODE_INVALID_QUERY_STR = 10;
- public static final int ERROR_CODE_META_DATA_TOO_LARGE = 11;
- public static final int ERROR_CODE_MISSING_DATA_HEADER = 12;
- public static final int ERROR_CODE_MISSING_HOST_HEADER = 13;
- public static final int ERROR_CODE_TOO_MANY_BUCKETS = 14;
- public static final int ERROR_CODE_BAD_PARAMS = 15;
- public static final int ERROR_CODE_IMAGE_TYPE_NOT_SUPPORT = 16;
- public static final int ERROR_CODE_MISSING_FROM_ARGS = 17;
- public static final int ERROR_CODE_CONTENT_RANGE_ERROR = 18;
- public static final int ERROR_CODE_CONTENT_LENGTH_OUT_OF_RANGE = 19;
- public static final int ERROR_CODE_POLICY_ERROR = 20;
- public static final int ERROR_CODE_EXPIRATION_ERROR = 21;
- public static final int ERROR_CODE_FORM_UNMATCH_POLICY = 22;
- public static final int ERROR_CODE_ACCESS_DENIED = 23;
- public static final int ERROR_CODE_INVALID_ACCESS_KEY = 24;
- public static final int ERROR_CODE_REQUEST_TIME_TOO_SKEWED = 25;
- public static final int ERROR_CODE_SIGNATURE_DOES_NOT_MATCH = 26;
- public static final int ERROR_CODE_URL_EXPIRED = 27;
- public static final int ERROR_CODE_NO_SUCH_BUCKET = 28;
- public static final int ERROR_CODE_NO_SUCH_KEY = 29;
- public static final int ERROR_CODE_METHOD_NOT_ALLOWED = 30;
- public static final int ERROR_CODE_BUCKET_ALREADY_EXISTS = 31;
- public static final int ERROR_CODE_BUCKET_ALREADY_OWNED_BY_YOU = 32;
- public static final int ERROR_CODE_BUCKET_NOT_EMPTY = 33;
- public static final int ERROR_CODE_INVALID_RANGE = 34;
- public static final int ERROR_CODE_INTERNAL_ERROR = 35;
- public static final int ERROR_CODE_NOT_IMPLEMENTED = 36;
-
- private int errorCode;
- private String errorMessage;
- private Ks3ServerError ks3ServerError;
-
- public Ks3Error(int statesCode, byte[] response, Throwable throwable) {
- if (response!=null) {
- Log.e(Constants.GLOBLE_LOG_TAG, new String(response));
- } else {
- Log.e(Constants.GLOBLE_LOG_TAG, "response string is null");
- }
- if (parseServerError(response)) {
- this.errorCode = judgeErrorCode(statesCode, throwable);
- this.errorMessage = ks3ServerError.getServerErrorMessage();
- } else {
- Log.e(Constants.GLOBLE_LOG_TAG, " Ks3Error is "+ throwable.getMessage());
- }
- }
-
- private int judgeErrorCode(int statesCode, Throwable throwable) {
- String serverErrorCode = ks3ServerError.getServerErrorCode();
- if (serverErrorCode != null) {
- switch (statesCode) {
- case 0:
-
- break;
- case 400:
- if (serverErrorCode.equals("BadDigest")) {
- return Ks3Error.ERROR_CODE_BAD_DIGEST;
- } else if (serverErrorCode.equals("InvalidACLString")) {
- return Ks3Error.ERROR_CODE_INVALID_ACL_STR;
-
- } else if (serverErrorCode.equals("InvalidAuthorizationString")) {
- return Ks3Error.ERROR_CODE_INVALID_AUTHORIZATION_STR;
-
- } else if (serverErrorCode.equals("InvalidBucketName")) {
- return Ks3Error.ERROR_CODE_INVALID_BUCKET_NAME;
-
- } else if (serverErrorCode.equals("InvalidDateFormat")) {
- return Ks3Error.ERROR_CODE_INVALID_DATE_FORMAT;
-
- } else if (serverErrorCode.equals("InvalidDigest")) {
- return Ks3Error.ERROR_CODE_INVALID_DIGEST;
-
- } else if (serverErrorCode.equals("InvalidEncryptionAlgorithm")) {
- return Ks3Error.ERROR_CODE_INVALID_ENCYPTION_ALGORITHM;
-
- } else if (serverErrorCode.equals("InvalidHostHeader")) {
- return Ks3Error.ERROR_CODE_INVALID_HOST_HEADER;
-
- } else if (serverErrorCode.equals("InvalidParameter")) {
- return Ks3Error.ERROR_CODE_INVALID_PARAMETER;
-
- } else if (serverErrorCode.equals("InvalidPath")) {
- return Ks3Error.ERROR_CODE_INVALID_PATH;
-
- } else if (serverErrorCode.equals("InvalidQueryString")) {
- return Ks3Error.ERROR_CODE_INVALID_QUERY_STR;
-
- } else if (serverErrorCode.equals("MetadataTooLarge")) {
- return Ks3Error.ERROR_CODE_META_DATA_TOO_LARGE;
-
- } else if (serverErrorCode.equals("MissingDateHeader")) {
- return Ks3Error.ERROR_CODE_MISSING_DATA_HEADER;
-
- } else if (serverErrorCode.equals("MissingHostHeader")) {
- return Ks3Error.ERROR_CODE_MISSING_HOST_HEADER;
-
- } else if (serverErrorCode.equals("TooManyBuckets")) {
- return Ks3Error.ERROR_CODE_TOO_MANY_BUCKETS;
-
- } else if (serverErrorCode.equals("BadParams")) {
- return Ks3Error.ERROR_CODE_BAD_PARAMS;
-
- } else if (serverErrorCode.equals("ImageTypeNotSupport")) {
- return Ks3Error.ERROR_CODE_IMAGE_TYPE_NOT_SUPPORT;
-
- } else if (serverErrorCode.equals("MissingFormArgs")) {
- return Ks3Error.ERROR_CODE_MISSING_FROM_ARGS;
-
- } else if (serverErrorCode.equals("ContentRangeError")) {
- return Ks3Error.ERROR_CODE_CONTENT_RANGE_ERROR;
-
- } else if (serverErrorCode.equals("ContentLengthOutOfRange")) {
- return Ks3Error.ERROR_CODE_CONTENT_LENGTH_OUT_OF_RANGE;
-
- } else if (serverErrorCode.equals("PolicyError")) {
- return Ks3Error.ERROR_CODE_POLICY_ERROR;
-
- } else if (serverErrorCode.equals("ExpirationError")) {
- return Ks3Error.ERROR_CODE_EXPIRATION_ERROR;
-
- } else if (serverErrorCode.equals("FormUnmatchPolicy")) {
- return Ks3Error.ERROR_CODE_FORM_UNMATCH_POLICY;
- }
- break;
- case 403:
- if (serverErrorCode.equals("AccessDenied")) {
- return Ks3Error.ERROR_CODE_ACCESS_DENIED;
-
- } else if (serverErrorCode.equals("InvalidAccessKey")) {
- return Ks3Error.ERROR_CODE_INVALID_ACCESS_KEY;
-
- } else if (serverErrorCode.equals("RequestTimeTooSkewed")) {
- return Ks3Error.ERROR_CODE_REQUEST_TIME_TOO_SKEWED;
-
- } else if (serverErrorCode.equals("SignatureDoesNotMatch")) {
- return Ks3Error.ERROR_CODE_SIGNATURE_DOES_NOT_MATCH;
-
- } else if (serverErrorCode.equals("URLExpired")) {
- return Ks3Error.ERROR_CODE_URL_EXPIRED;
-
- }
- break;
- case 404:
- if (serverErrorCode.equals("NoSuchBucket")) {
- return Ks3Error.ERROR_CODE_NO_SUCH_BUCKET;
-
- } else if (serverErrorCode.equals("NoSuchKey")) {
- return Ks3Error.ERROR_CODE_NO_SUCH_KEY;
-
- }
- break;
- case 405:
- if (serverErrorCode.equals("MethodNotAllowed")) {
- return Ks3Error.ERROR_CODE_METHOD_NOT_ALLOWED;
-
- }
- break;
- case 409:
- if (serverErrorCode.equals("BucketAlreadyExists")) {
- return Ks3Error.ERROR_CODE_BUCKET_ALREADY_EXISTS;
-
- } else if (serverErrorCode.equals("BucketAlreadyOwnedByYou")) {
- return Ks3Error.ERROR_CODE_BUCKET_ALREADY_OWNED_BY_YOU;
-
- } else if (serverErrorCode.equals("BucketNotEmpty")) {
- return Ks3Error.ERROR_CODE_BUCKET_NOT_EMPTY;
-
- }
- break;
- case 416:
- if (serverErrorCode.equals("InvalidRange")) {
- return Ks3Error.ERROR_CODE_INVALID_RANGE;
-
- }
- break;
- case 500:
- if (serverErrorCode.equals("InternalError")) {
- return Ks3Error.ERROR_CODE_INTERNAL_ERROR;
-
- }
- break;
- case 501:
- if (serverErrorCode.equals("NotImplemented")) {
- return Ks3Error.ERROR_CODE_NOT_IMPLEMENTED;
-
- }
- break;
- default:
- break;
- }
- }
- return Ks3Error.ERROR_CODE_UNKNOWN_ERROR;
-
- }
-
- private boolean parseServerError(byte[] response) {
- if (response != null) {
- XmlPullParserFactory factory;
- try {
- factory = XmlPullParserFactory.newInstance();
- XmlPullParser parse = factory.newPullParser();
- parse.setInput(new ByteArrayInputStream(response), "UTF-8");
- int eventType = parse.getEventType();
- while (XmlPullParser.END_DOCUMENT != eventType) {
- String nodeName = parse.getName();
- switch (eventType) {
- case XmlPullParser.START_DOCUMENT:
- ks3ServerError = new Ks3ServerError();
- break;
- case XmlPullParser.END_DOCUMENT:
-
- break;
- case XmlPullParser.START_TAG:
- if (nodeName.equalsIgnoreCase("Code")) {
- ks3ServerError.setServerErrorCode(parse.nextText());
- }
- if (nodeName.equalsIgnoreCase("Message")) {
- ks3ServerError.setServerErrorMessage(parse
- .nextText());
- }
- if (nodeName.equalsIgnoreCase("Resource")) {
- ks3ServerError.setServerErrorResource(parse
- .nextText());
- }
-
- if (nodeName.equalsIgnoreCase("RequestId")) {
- ks3ServerError.setServerErrorRequsetId(parse
- .nextText());
- }
- break;
- case XmlPullParser.END_TAG:
-
- break;
- case XmlPullParser.TEXT:
-
- break;
- default:
- break;
- }
- eventType = parse.next();
- }
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- return false;
- } catch (IOException e) {
- e.printStackTrace();
- return false;
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- return true;
- } else {
- return false;
- }
-
- }
-
- public int getErrorCode() {
- return errorCode;
- }
-
- public void setErrorCode(int errorCode) {
- this.errorCode = errorCode;
- }
-
- public String getErrorMessage() {
- return errorMessage;
- }
-
- public void setErrorMessage(String errorMessage) {
- this.errorMessage = errorMessage;
- }
-
- public Ks3ServerError getKs3ServerError() {
- return ks3ServerError;
- }
-
- public void setKs3ServerError(Ks3ServerError ks3ServerError) {
- this.ks3ServerError = ks3ServerError;
- }
-
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/exception/Ks3ServerError.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/exception/Ks3ServerError.java
deleted file mode 100644
index 35601e4fc77f0ee9dd24db0122455a047dbba303..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/exception/Ks3ServerError.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.ksyun.ks3.exception;
-
-public class Ks3ServerError {
- private String serverErrorCode;
- private String serverErrorMessage;
- private String serverErrorResource;
- private String serverErrorRequsetId;
-
- public String getServerErrorCode() {
- return serverErrorCode;
- }
-
- public void setServerErrorCode(String serverErrorCode) {
- this.serverErrorCode = serverErrorCode;
- }
-
- public String getServerErrorMessage() {
- return serverErrorMessage;
- }
-
- public void setServerErrorMessage(String serverErrorMessage) {
- this.serverErrorMessage = serverErrorMessage;
- }
-
- public String getServerErrorResource() {
- return serverErrorResource;
- }
-
- public void setServerErrorResource(String serverErrorResource) {
- this.serverErrorResource = serverErrorResource;
- }
-
- public String getServerErrorRequsetId() {
- return serverErrorRequsetId;
- }
-
- public void setServerErrorRequsetId(String serverErrorRequsetId) {
- this.serverErrorRequsetId = serverErrorRequsetId;
- }
-
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/exception/Ks3ServiceException.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/exception/Ks3ServiceException.java
new file mode 100644
index 0000000000000000000000000000000000000000..4717c73a0e2f72f0758681185abdcd519cf18855
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/exception/Ks3ServiceException.java
@@ -0,0 +1,190 @@
+package com.ksyun.ks3.exception;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.Map;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+import org.xmlpull.v1.XmlPullParserFactory;
+
+import com.ksyun.ks3.util.Constants;
+import com.ksyun.ks3.util.ResponseUtils;
+import com.ksyun.ks3.util.StringUtils;
+
+import android.util.Log;
+
+import okhttp3.Headers;
+
+public class Ks3ServiceException extends Exception {
+ /**
+ * http 状态码
+ */
+ private int statusCode;
+ /**
+ * 返回的http头信息
+ */
+ private Map headers;
+ /**
+ * 响应体
+ */
+ private String response;
+ /**
+ * 错误码
+ */
+ private String errorCode;
+ /**
+ * 错误信息
+ */
+ private String errorMessage;
+ /**
+ * 用户请求的资源
+ */
+ private String resource;
+ /**
+ * 用户请求的id
+ */
+ private String requestId;
+
+ public Ks3ServiceException(int statusCode, Headers responseHeaders, byte[] response) {
+ this.statusCode = statusCode;
+ this.headers = ResponseUtils.parseResponseHeaders(responseHeaders);
+ this.parseServerError(response);
+ if (response != null) {
+ this.response = new String(response);
+ Log.e(Constants.GLOBLE_LOG_TAG, new String(response));
+ } else {
+ this.response = "";
+ Log.e(Constants.GLOBLE_LOG_TAG, "response string is null");
+ }
+ }
+
+ private void parseServerError(byte[] response) {
+ if (response != null && !StringUtils.isBlank(new String(response))) {
+ XmlPullParserFactory factory;
+ try {
+ factory = XmlPullParserFactory.newInstance();
+ XmlPullParser parse = factory.newPullParser();
+ parse.setInput(new ByteArrayInputStream(response), "UTF-8");
+ int eventType = parse.getEventType();
+ while (XmlPullParser.END_DOCUMENT != eventType) {
+ String nodeName = parse.getName();
+ switch (eventType) {
+ case XmlPullParser.START_DOCUMENT:
+ break;
+ case XmlPullParser.END_DOCUMENT:
+ break;
+ case XmlPullParser.START_TAG:
+ if (nodeName.equalsIgnoreCase("Code")) {
+ this.errorCode = parse.nextText();
+ }
+ if (nodeName.equalsIgnoreCase("Message")) {
+ this.errorMessage = parse.nextText();
+ }
+ if (nodeName.equalsIgnoreCase("Resource")) {
+ this.resource = parse.nextText();
+ }
+ if (nodeName.equalsIgnoreCase("RequestId")) {
+ this.requestId = parse.nextText();
+ }
+ break;
+ case XmlPullParser.END_TAG:
+ break;
+ case XmlPullParser.TEXT:
+ break;
+ default:
+ break;
+ }
+ eventType = parse.next();
+ }
+ } catch (XmlPullParserException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ // Head请求没有body,需要从header中获取requestId
+ if (StringUtils.isBlank(this.requestId)) {
+ this.requestId = this.headers.get("x-kss-request-id");
+ }
+ if (StringUtils.isBlank(this.getErrorCode()) || "unknow".equals(this.getErrorCode()) || "unknown".equalsIgnoreCase(this.getErrorCode())) {
+ if (this.statusCode == 400) {
+ this.errorCode = "InvalidArgument";
+ } else if (this.statusCode == 403) {
+ this.errorCode = "AccessDenied";
+ } else if (this.statusCode == 404) {
+ this.errorCode = "NotFound";
+ } else if (this.statusCode == 405) {
+ this.errorCode = "MethodNotAllowed";
+ }
+ }
+ }
+
+ public String getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+
+ public void setErrorMessage(String errorMessage) {
+ this.errorMessage = errorMessage;
+ }
+
+ public String getResource() {
+ return resource;
+ }
+
+ public void setResource(String resource) {
+ this.resource = resource;
+ }
+
+ public String getRequestId() {
+ return requestId;
+ }
+
+ public void setRequestId(String requestId) {
+ this.requestId = requestId;
+ }
+
+ public int getStatusCode() {
+ return statusCode;
+ }
+
+ public void setStatusCode(int statusCode) {
+ this.statusCode = statusCode;
+ }
+
+ public Map getHeaders() {
+ return headers;
+ }
+
+ public void setHeaders(Map headers) {
+ this.headers = headers;
+ }
+
+ public String getResponse() {
+ return response;
+ }
+
+ public void setResponse(String response) {
+ this.response = response;
+ }
+
+ @Override
+ public String getMessage() {
+ return "[RequestId:" + this.requestId
+ + ", Resource:" + this.resource
+ + ", Status code:" + this.statusCode
+ + ", Error code:" + this.errorCode
+ + ", Error message:" + this.errorMessage
+ + "]";
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/AsyncHttpRequestParam.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/AsyncHttpRequestParam.java
new file mode 100644
index 0000000000000000000000000000000000000000..f0633aa5b518b4ddf50dd0a0a309b46184ec0707
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/AsyncHttpRequestParam.java
@@ -0,0 +1,102 @@
+package com.ksyun.ks3.model;
+
+import java.util.Map;
+import okhttp3.Headers;
+import okhttp3.RequestBody;
+
+import com.ksyun.ks3.util.ModelUtil;
+
+public class AsyncHttpRequestParam {
+ private String url;
+ private Headers headers;
+ private String contentType;
+ private RequestBody requestBody;
+ private Object tag; //
+ private long contentLength;
+
+ public AsyncHttpRequestParam() {
+ }
+
+ public AsyncHttpRequestParam(String url) {
+ this.url = url;
+ }
+
+ public AsyncHttpRequestParam(String url, Map headers,
+ Map params) {
+ this.url = url;
+ this.headers = ModelUtil.convertHeaderArray(headers);
+ }
+
+ public AsyncHttpRequestParam(String url, String contentType,
+ Map headers, Map params,
+ RequestBody requestBody) {
+ this.url = url;
+ this.contentType = contentType;
+ this.headers = ModelUtil.convertHeaderArray(headers);
+ this.requestBody = requestBody;
+ }
+
+ public AsyncHttpRequestParam(String url, String contentType,
+ Map headers, Map params,
+ RequestBody requestBody, Long contentLength) {
+ this.url = url;
+ this.contentType = contentType;
+ this.headers = ModelUtil.convertHeaderArray(headers);
+ this.requestBody = requestBody;
+ this.contentLength = contentLength;
+ }
+
+ public AsyncHttpRequestParam(String url, Map headers, Map params, long contentLength) {
+ this.url = url;
+ this.headers = ModelUtil.convertHeaderArray(headers);
+ this.contentLength = contentLength;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public Headers getHeaders() {
+ return headers;
+ }
+
+ public void setHeaders(Headers headers) {
+ this.headers = headers;
+ }
+
+ public String getContentType() {
+ return contentType;
+ }
+
+ public void setContentType(String contentType) {
+ this.contentType = contentType;
+ }
+
+ public RequestBody getRequestBody() {
+ return requestBody;
+ }
+
+ public void setRequestBody(RequestBody requestBody) {
+ this.requestBody = requestBody;
+ }
+
+ public Object getTag() {
+ return tag;
+ }
+
+ public void setTag(String tag) {
+ this.tag = tag;
+ }
+
+ public long getContentLength() {
+ return contentLength;
+ }
+
+ public void setContentLength(long contentLength) {
+ this.contentLength = contentLength;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/AsyncHttpRequsetParam.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/AsyncHttpRequsetParam.java
deleted file mode 100644
index 870d087b9820cb0d01fb112b0fd81b25e7b547ca..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/AsyncHttpRequsetParam.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.ksyun.ks3.model;
-
-import java.util.Map;
-import cz.msebera.android.httpclient.Header;
-import cz.msebera.android.httpclient.HttpEntity;
-import com.ksyun.ks3.util.ModelUtil;
-import com.loopj.android.http.RequestParams;
-
-public class AsyncHttpRequsetParam {
- private String url;
- private Header[] header;
- private RequestParams finalParams;
- private String contentType;
- private HttpEntity entity;
-
- public AsyncHttpRequsetParam() {
- }
-
- public AsyncHttpRequsetParam(String url) {
- this.url = url;
- }
-
- public AsyncHttpRequsetParam(String url, Map header,
- Map params) {
- this.url = url;
- this.header = ModelUtil.convertHeaderArray(header);
- this.finalParams = ModelUtil.convertRequsetParams(params);
- }
-
- public AsyncHttpRequsetParam(String url, String contentType,
- Map header, Map params,
- HttpEntity entity) {
- this.url = url;
- this.contentType = contentType;
- this.header = ModelUtil.convertHeaderArray(header);
- this.finalParams = ModelUtil.convertRequsetParams(params);
- this.entity = entity;
- }
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public Header[] getHeader() {
- return header;
- }
-
- public void setHeader(Header[] header) {
- this.header = header;
- }
-
- public RequestParams getParams() {
- return finalParams;
- }
-
- public void setParams(RequestParams finalParams) {
- this.finalParams = finalParams;
- }
-
- public String getContentType() {
- return contentType;
- }
-
- public void setContentType(String contentType) {
- this.contentType = contentType;
- }
-
- public HttpEntity getEntity() {
- return entity;
- }
-
- public void setEntity(HttpEntity entity) {
- this.entity = entity;
- }
-
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/BucketPolicyData.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/BucketPolicyData.java
similarity index 85%
rename from ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/BucketPolicyData.java
rename to ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/BucketPolicyData.java
index 738ed9c01a290a0142afbb725e7fca66f7edf50d..e12749ecc78b9b6d6098b10334508e1bc1219252 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/BucketPolicyData.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/BucketPolicyData.java
@@ -1,4 +1,4 @@
-package com.ksyun.ks3.model.result;
+package com.ksyun.ks3.model;
import com.ksyun.ks3.model.result.policy.BucketPolicyRule;
@@ -10,8 +10,7 @@ public class BucketPolicyData {
/**
* 版本
*/
- // private String Version = "2005-11-01";
-
+ // private String Version = "2005-11-01";
public List getStatement() {
return Statement;
}
@@ -19,6 +18,7 @@ public class BucketPolicyData {
public void setStatement(List statement) {
Statement = statement;
}
+
/**
* 桶策略
*/
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/BucketQuota.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/BucketQuota.java
similarity index 69%
rename from ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/BucketQuota.java
rename to ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/BucketQuota.java
index 15cbd6efdc53cd889f021eb36a25483ef0c29b0f..cbbb672bf692d76e9074bc52773d078f34e425f5 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/BucketQuota.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/BucketQuota.java
@@ -1,8 +1,8 @@
-package com.ksyun.ks3.model.result;
+package com.ksyun.ks3.model;
-import com.ksyun.ks3.services.handler.Ks3HttpResponceHandler;
+import com.ksyun.ks3.services.handler.Ks3HttpResponseHandler;
-public class BucketQuota extends Ks3HttpResponceHandler {
+public class BucketQuota extends Ks3HttpResponseHandler {
/**
* 桶配额度
@@ -21,6 +21,7 @@ public class BucketQuota extends Ks3HttpResponceHandler {
public BucketQuota(long storageQuota) {
StorageQuota = storageQuota;
}
+
public BucketQuota() {
}
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/HttpHeaders.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/HttpHeaders.java
index 1c63dae47166f630ab6038e76c4b2faa45252fc6..58be3c90c0406df90986ce072d656743f779bf0d 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/HttpHeaders.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/HttpHeaders.java
@@ -1,11 +1,12 @@
package com.ksyun.ks3.model;
public enum HttpHeaders {
- RequestId("x-kss-request-id"), Authorization("Authorization"), Date("Date"), Host(
- "Host"), ContentMD5("Content-MD5"),UserAgent("User-Agent"),IfMatch("If-Match"), ContentLanguage("Content-Language"),
- IfNoneMatch("If-None-Match"),
- IfModifiedSince("If-Modified-Since"),
- IfUnmodifiedSince("If-Unmodified-Since"),
+ RequestId("x-kss-request-id"), Authorization("Authorization"), Date("Date"),
+ Host("Host"), ContentMD5("Content-MD5"),UserAgent("User-Agent"),
+ IfMatch("If-Match"), ContentLanguage("Content-Language"),
+ IfNoneMatch("If-None-Match"),
+ IfModifiedSince("If-Modified-Since"),
+ IfUnmodifiedSince("If-Unmodified-Since"),
/* Put object metadata */
ContentLength("Content-Length"), CacheControl("Cache-Control"), ContentType(
@@ -40,7 +41,10 @@ public enum HttpHeaders {
XKssObjectTagCount("x-kss-tagging-count"),
XKssSourceUrl("x-kss-sourceurl"),
// sts token
- SecurityToken("x-kss-security-token");
+ SecurityToken("x-kss-security-token"),
+
+ // 存储方式
+ StorageClass("x-kss-storage-class");
private String value;
private boolean isSpecHeader;
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/Ks3Object.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/Ks3Object.java
index 73ed489335318f8e129b3e35f752fcb00f934883..f4d7d7ac695c82062133207404a5f74a4f16cd1b 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/Ks3Object.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/Ks3Object.java
@@ -1,6 +1,7 @@
package com.ksyun.ks3.model;
import java.io.File;
+import java.io.InputStream;
/**
*
@@ -12,8 +13,13 @@ public class Ks3Object{
private String key = null;
private String bucketName = null;
private ObjectMetadata objectMetadata;
+ /**
+ * @Deprecated
+ */
private File file;
private String redirectLocation;
+ // object's content
+ private InputStream objectContent;
@Override
public String toString() {
@@ -38,14 +44,26 @@ public class Ks3Object{
this.bucketName = bucketName;
}
+ /**
+ * @Deprecated
+ * @return
+ */
public File getFile() {
return file;
}
+ /**
+ * @Deprecated
+ * @return
+ */
public void setFile(File file) {
this.file = file;
}
-
+
+ /**
+ * @Deprecated
+ * @return
+ */
public long getFileLength(){
return this.file.length();
}
@@ -74,4 +92,16 @@ public class Ks3Object{
this.objectMetadata = objectMetadata;
}
+ /**
+ * Gets the object content
+ *
+ * @return Object's content in the form of InoutStream
+ */
+ public InputStream getObjectContent() {
+ return objectContent;
+ }
+
+ public void setObjectContent(InputStream objectContent) {
+ this.objectContent = objectContent;
+ }
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/ObjectMetadata.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/ObjectMetadata.java
index 8dbb57e24c6bc662cb76b106c12bfa2e4b70ced6..75f0925e5c271c38731373dd2d2b8754fd52f530 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/ObjectMetadata.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/ObjectMetadata.java
@@ -1,6 +1,7 @@
package com.ksyun.ks3.model;
import com.ksyun.ks3.services.request.tag.ObjectTagging;
+import com.ksyun.ks3.util.StringUtils;
import java.util.HashMap;
import java.util.Map;
@@ -11,13 +12,14 @@ import java.util.regex.Pattern;
*/
public class ObjectMetadata {
public static enum Meta {
- ContentType(HttpHeaders.ContentType), CacheControl(
- HttpHeaders.CacheControl), ContentLength(
- HttpHeaders.ContentLength), ContentDisposition(
- HttpHeaders.ContentDisposition), ContentEncoding(
- HttpHeaders.ContentEncoding), Expires(HttpHeaders.Expires), LastModified(HttpHeaders.LastModified),
- Etag(HttpHeaders.ETag), ContentMD5(HttpHeaders.ContentMD5), ContentLanguage(HttpHeaders.ContentLanguage), XKssObjectTagCount(HttpHeaders.XKssObjectTagCount),
- STORAGE_CLASS(HttpHeaders.ContentLanguage);
+
+ ContentType(HttpHeaders.ContentType), CacheControl(HttpHeaders.CacheControl),
+ ContentLength(HttpHeaders.ContentLength), ContentDisposition(HttpHeaders.ContentDisposition),
+ ContentEncoding(HttpHeaders.ContentEncoding), Expires(HttpHeaders.Expires),
+ LastModified(HttpHeaders.LastModified), Etag(HttpHeaders.ETag),
+ ContentMD5(HttpHeaders.ContentMD5), ContentLanguage(HttpHeaders.ContentLanguage),
+ XKssObjectTagCount(HttpHeaders.XKssObjectTagCount);
+
private HttpHeaders header;
public HttpHeaders getHeader() {
@@ -73,7 +75,7 @@ public class ObjectMetadata {
public Long getContentLength() {
Long contentLength = 0L;
- String contentLengthStr = this.metadata.get(HttpHeaders.ContentLength);
+ String contentLengthStr = this.metadata.get(Meta.ContentLength);
if (contentLengthStr != null) {
contentLength = Long.parseLong(contentLengthStr);
}
@@ -127,12 +129,12 @@ public class ObjectMetadata {
}
public String getContentType() {
- return metadata.get(HttpHeaders.ContentType.toString());
+ return metadata.get(Meta.ContentType);
}
public String getObjectTagCount() {
- return metadata.get(HttpHeaders.XKssObjectTagCount.toString());
+ return metadata.get(Meta.XKssObjectTagCount);
}
public void setObjectTagCount(String count) {
metadata.put(Meta.XKssObjectTagCount, count);
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/ReplicationRule.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/ReplicationRule.java
similarity index 77%
rename from ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/ReplicationRule.java
rename to ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/ReplicationRule.java
index b5afdd5fea611b95f667477be47e0b981b26d81a..25cfd1dd6190daebddc38a148b8f40dc5b4fa7e3 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/ReplicationRule.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/ReplicationRule.java
@@ -1,6 +1,4 @@
-package com.ksyun.ks3.model.result;
-
-import com.ksyun.ks3.services.handler.Ks3HttpResponceHandler;
+package com.ksyun.ks3.model;
import java.util.ArrayList;
import java.util.List;
@@ -55,6 +53,14 @@ public class ReplicationRule {
this.targetBucket = targetBucket;
}
-
+ @Override
+ public String toString() {
+ return "ReplicationRule{" +
+ "prefixList=" + prefixList +
+ ", targetBucket='" + targetBucket + '\'' +
+ ", region='" + region + '\'' +
+ ", deleteMarkerStatus=" + deleteMarkerStatus +
+ '}';
+ }
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/ResponseMessage.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/ResponseMessage.java
new file mode 100644
index 0000000000000000000000000000000000000000..fb229f32334c6e9512830ed842515d13f1b84266
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/ResponseMessage.java
@@ -0,0 +1,47 @@
+package com.ksyun.ks3.model;
+
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+
+import java.util.Map;
+
+public class ResponseMessage {
+ private int statusCode;
+
+ private Map headers;
+
+ private String response;
+
+ private Ks3HttpRequest request;
+
+ public int getStatusCode() {
+ return statusCode;
+ }
+
+ public void setStatusCode(int statusCode) {
+ this.statusCode = statusCode;
+ }
+
+ public Map getHeaders() {
+ return headers;
+ }
+
+ public void setHeaders(Map headers) {
+ this.headers = headers;
+ }
+
+ public String getResponse() {
+ return response;
+ }
+
+ public void setResponse(String response) {
+ this.response = response;
+ }
+
+ public void setRequest(Ks3HttpRequest request) {
+ this.request = request;
+ }
+
+ public Ks3HttpRequest getRequest() {
+ return request;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/StorageClass.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/StorageClass.java
new file mode 100644
index 0000000000000000000000000000000000000000..bfaaa7fcb621f3dda9b591dfb432a015a972d987
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/StorageClass.java
@@ -0,0 +1,61 @@
+package com.ksyun.ks3.model;
+
+public enum StorageClass {
+ /**
+ * 极速存储类型
+ */
+ EXTREME_PL1("EXTREME_PL1"),
+ EXTREME_PL2("EXTREME_PL2"),
+ EXTREME_PL3("EXTREME_PL3"),
+
+ /**
+ * 默认的KS3存储类型。Standard 提供较高的持久性、可用性和性能对象存储。
+ */
+ Standard("STANDARD"),
+
+ /**
+ * 用于不频繁访问但在需要时也要求快速访问的数据。Standard – IA 提供较高的持久性、吞吐量和较低的延迟
+ */
+ StandardInfrequentAccess("STANDARD_IA"),
+
+ /**
+ * 深度低频
+ */
+ DeepIa("DEEP_IA"),
+
+ /**
+ * 归档存储类型
+ */
+ Archive("ARCHIVE"),
+
+ /**
+ * 深度冷归档
+ */
+ DeepColdArchive("DEEP_COLD_ARCHIVE"),
+
+ /**
+ * 未知类型,当ks3有新的类型,而本SDK暂不支持时,返回该未知类型
+ */
+ UNKNOWN("UNKNOWN"),
+ ;
+
+ public static StorageClass fromValue(String s3StorageClassString) throws IllegalArgumentException {
+ for (StorageClass storageClass : StorageClass.values()) {
+ if (storageClass.toString().equals(s3StorageClassString)) {
+ return storageClass;
+ }
+ }
+ return UNKNOWN;
+ }
+
+ private final String storageClassId;
+
+ private StorageClass(String id) {
+ this.storageClassId = id;
+ }
+
+ @Override
+ public String toString() {
+ return storageClassId;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/AbortMultipartUploadResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/AbortMultipartUploadResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..0625e5b51e5e0c99ead168ff6d08d8b4dc6de655
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/AbortMultipartUploadResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class AbortMultipartUploadResult extends Ks3Result{
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/CompleteMultipartUploadResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/CompleteMultipartUploadResult.java
index bd9a98fc7482ec5fa1bb90f1f783ece74cdfdffc..d9add783298e0544d20f5f320acbe0f272aa9027 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/CompleteMultipartUploadResult.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/CompleteMultipartUploadResult.java
@@ -1,6 +1,6 @@
package com.ksyun.ks3.model.result;
-public class CompleteMultipartUploadResult {
+public class CompleteMultipartUploadResult extends Ks3Result {
private String location;
private String bucket;
private String key;
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/CopyObjectResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/CopyObjectResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..0e87e20604ac081097ad71f7c5ccd6c6cec48c23
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/CopyObjectResult.java
@@ -0,0 +1,28 @@
+package com.ksyun.ks3.model.result;
+
+import com.ksyun.ks3.util.StringUtils;
+
+import java.util.Date;
+
+public class CopyObjectResult extends Ks3Result{
+ /**
+ * last modified date
+ */
+ private Date lastModified;
+ private String ETag;
+ public Date getLastModified() {
+ return lastModified;
+ }
+ public void setLastModified(Date lastModified) {
+ this.lastModified = lastModified;
+ }
+ public String getETag() {
+ return ETag;
+ }
+ public void setETag(String eTag) {
+ ETag = eTag;
+ }
+ public String toString(){
+ return StringUtils.object2string(this);
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/CopyResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/CopyResult.java
deleted file mode 100644
index c70ad39330aceaaa40c066edd4478f6e074f69c0..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/CopyResult.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.ksyun.ks3.model.result;
-import java.util.Date;
-import com.ksyun.ks3.util.StringUtils;
-
-public class CopyResult {
- /**
- * last modified date
- */
- private Date lastModified;
- private String ETag;
- public Date getLastModified() {
- return lastModified;
- }
- public void setLastModified(Date lastModified) {
- this.lastModified = lastModified;
- }
- public String getETag() {
- return ETag;
- }
- public void setETag(String eTag) {
- ETag = eTag;
- }
- public String toString(){
- return StringUtils.object2string(this);
- }
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/CreateBucketResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/CreateBucketResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..38553d716acaaf545a2e37792a92a33ebecda30e
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/CreateBucketResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class CreateBucketResult extends Ks3Result{
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteBucketPolicyResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteBucketPolicyResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..dcdf6d85d3f501152573877231f9bfba62b433d6
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteBucketPolicyResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class DeleteBucketPolicyResult extends Ks3Result {
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteBucketQuotaResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteBucketQuotaResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..cd3474e8cfbfa44ef6082576eaf4bd91e15ced65
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteBucketQuotaResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class DeleteBucketQuotaResult extends Ks3Result {
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteBucketReplicationResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteBucketReplicationResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..82eeca1c8e75c016432acf9359091f7a68ad441d
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteBucketReplicationResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class DeleteBucketReplicationResult extends Ks3Result {
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteBucketResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteBucketResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..1b44540e1edb28b924bad4eef49e40f84986f048
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteBucketResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class DeleteBucketResult extends Ks3Result {
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteObjectResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteObjectResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..d748822cbe50194a17c1c36efd2d91ff1ed61149
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteObjectResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class DeleteObjectResult extends Ks3Result {
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteObjectTaggingResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteObjectTaggingResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..4e0db605b270bce24e2b72aa5783886439661983
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/DeleteObjectTaggingResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class DeleteObjectTaggingResult extends Ks3Result {
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetBucketACLResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetBucketACLResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..97c0cb6600d08fc6e643e0461ddcc0e93ecce52e
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetBucketACLResult.java
@@ -0,0 +1,15 @@
+package com.ksyun.ks3.model.result;
+
+import com.ksyun.ks3.model.acl.AccessControlPolicy;
+
+public class GetBucketACLResult extends Ks3Result {
+ private AccessControlPolicy accessControlPolicy;
+
+ public AccessControlPolicy getAccessControlPolicy() {
+ return accessControlPolicy;
+ }
+
+ public void setAccessControlPolicy(AccessControlPolicy accessControlPolicy) {
+ this.accessControlPolicy = accessControlPolicy;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetBucketPolicyResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetBucketPolicyResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..b6f220035e9338907939e8835d485e34c8c407f5
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetBucketPolicyResult.java
@@ -0,0 +1,13 @@
+package com.ksyun.ks3.model.result;
+
+public class GetBucketPolicyResult extends Ks3Result {
+ private String policy;
+
+ public String getPolicy() {
+ return policy;
+ }
+
+ public void setPolicy(String policy) {
+ this.policy = policy;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetBucketQuotaResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetBucketQuotaResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..c5a9994e9114bc8530be1979f1816f64b24dba36
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetBucketQuotaResult.java
@@ -0,0 +1,15 @@
+package com.ksyun.ks3.model.result;
+
+import com.ksyun.ks3.model.BucketQuota;
+
+public class GetBucketQuotaResult extends Ks3Result {
+ private BucketQuota bucketQuota;
+
+ public BucketQuota getBucketQuota() {
+ return bucketQuota;
+ }
+
+ public void setBucketQuota(BucketQuota bucketQuota) {
+ this.bucketQuota = bucketQuota;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetBucketReplicationResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetBucketReplicationResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..470e61b9a7a97281ec8656490e1832f19bf8fd68
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetBucketReplicationResult.java
@@ -0,0 +1,15 @@
+package com.ksyun.ks3.model.result;
+
+import com.ksyun.ks3.model.ReplicationRule;
+
+public class GetBucketReplicationResult extends Ks3Result {
+ private ReplicationRule replicationRule;
+
+ public ReplicationRule getReplicationRule() {
+ return replicationRule;
+ }
+
+ public void setReplicationRule(ReplicationRule replicationRule) {
+ this.replicationRule = replicationRule;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetObjectACLResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetObjectACLResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..dbc0690f10caa25d02a7d61e0ddf70dbd6f841f2
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetObjectACLResult.java
@@ -0,0 +1,15 @@
+package com.ksyun.ks3.model.result;
+
+import com.ksyun.ks3.model.acl.AccessControlPolicy;
+
+public class GetObjectACLResult extends Ks3Result {
+ private AccessControlPolicy accessControlPolicy;
+
+ public AccessControlPolicy getAccessControlPolicy() {
+ return accessControlPolicy;
+ }
+
+ public void setAccessControlPolicy(AccessControlPolicy accessControlPolicy) {
+ this.accessControlPolicy = accessControlPolicy;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetObjectAdpResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetObjectAdpResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..77da02184811d626022801c8006a45413ff31834
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetObjectAdpResult.java
@@ -0,0 +1,15 @@
+package com.ksyun.ks3.model.result;
+
+import com.ksyun.ks3.services.request.adp.AdpTask;
+
+public class GetObjectAdpResult extends Ks3Result {
+ private AdpTask adpTask;
+
+ public AdpTask getAdpTask() {
+ return adpTask;
+ }
+
+ public void setAdpTask(AdpTask adpTask) {
+ this.adpTask = adpTask;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetObjectResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetObjectResult.java
index 0802e0e9a7c298bab8220efab4a262f90f37bd38..13791ad31e879bb05665636b23fdfc74d9fb8248 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetObjectResult.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetObjectResult.java
@@ -3,7 +3,7 @@ package com.ksyun.ks3.model.result;
import com.ksyun.ks3.model.Ks3Object;
import com.ksyun.ks3.util.StringUtils;
-public class GetObjectResult {
+public class GetObjectResult extends Ks3Result {
private Ks3Object object = new Ks3Object();
private boolean ifModified = true;
private boolean ifPreconditionSuccess = true;
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetObjectTaggingResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetObjectTaggingResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..6df6e10ea641f7d2c323d05b96e74581c936d203
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/GetObjectTaggingResult.java
@@ -0,0 +1,15 @@
+package com.ksyun.ks3.model.result;
+
+import com.ksyun.ks3.services.request.tag.ObjectTagging;
+
+public class GetObjectTaggingResult extends Ks3Result{
+ private ObjectTagging tagging;
+
+ public ObjectTagging getTagging() {
+ return tagging;
+ }
+
+ public void setTagging(ObjectTagging tagging) {
+ this.tagging = tagging;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/HeadBucketResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/HeadBucketResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..edebad24bffdf24bc535dde605672af59e519c85
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/HeadBucketResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class HeadBucketResult extends Ks3Result{
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/HeadObjectResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/HeadObjectResult.java
index d673239e550930a64b6075b753d46272e1ee3b35..11608bb7516fca9d09064059d186f14500dc06f7 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/HeadObjectResult.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/HeadObjectResult.java
@@ -4,7 +4,7 @@ import java.util.Date;
import com.ksyun.ks3.model.ObjectMetadata;
-public class HeadObjectResult {
+public class HeadObjectResult extends Ks3Result {
private ObjectMetadata objectMetadata = new ObjectMetadata();
private String ETag;
private Date lastmodified;
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/InitiateMultipartUploadResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/InitiateMultipartUploadResult.java
index 4a0155590d29998d28f78f84e8045b57e568d934..2b1b57cca642ded1193b93cfdf3c29b40785b9f1 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/InitiateMultipartUploadResult.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/InitiateMultipartUploadResult.java
@@ -1,6 +1,6 @@
package com.ksyun.ks3.model.result;
-public class InitiateMultipartUploadResult {
+public class InitiateMultipartUploadResult extends Ks3Result {
private String bucket;
private String key;
private String uploadId;
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/Ks3Result.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/Ks3Result.java
new file mode 100644
index 0000000000000000000000000000000000000000..3fba488cdcd280fdbe117fdbbcdfcd11d8d98622
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/Ks3Result.java
@@ -0,0 +1,30 @@
+package com.ksyun.ks3.model.result;
+
+import java.util.Map;
+
+public class Ks3Result {
+ /**
+ * http 状态码
+ */
+ private int statusCode;
+ /**
+ * 返回的http头信息
+ */
+ private Map headers;
+
+ public int getStatusCode() {
+ return statusCode;
+ }
+
+ public void setStatusCode(int statusCode) {
+ this.statusCode = statusCode;
+ }
+
+ public Map getHeaders() {
+ return headers;
+ }
+
+ public void setHeaders(Map headers) {
+ this.headers = headers;
+ }
+}
\ No newline at end of file
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/Ks3SyncResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/Ks3SyncResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..36c6e1c403b78d56674814ca03699c6f3bbc7b55
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/Ks3SyncResult.java
@@ -0,0 +1,34 @@
+package com.ksyun.ks3.model.result;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+
+public class Ks3SyncResult {
+ private T result;
+ private Ks3ClientException clientException;
+ private Ks3ServiceException serviceException;
+
+ public T getResult() {
+ return result;
+ }
+
+ public void setResult(T result) {
+ this.result = result;
+ }
+
+ public Ks3ClientException getClientException() {
+ return clientException;
+ }
+
+ public void setClientException(Ks3ClientException clientException) {
+ this.clientException = clientException;
+ }
+
+ public Ks3ServiceException getServiceException() {
+ return serviceException;
+ }
+
+ public void setServiceException(Ks3ServiceException serviceException) {
+ this.serviceException = serviceException;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/ListBucketsResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/ListBucketsResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..dcc7f4ba5e6aa8947563cafce1e05b8d630a77ae
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/ListBucketsResult.java
@@ -0,0 +1,17 @@
+package com.ksyun.ks3.model.result;
+
+import com.ksyun.ks3.model.Bucket;
+
+import java.util.ArrayList;
+
+public class ListBucketsResult extends Ks3Result{
+ private ArrayList buckets;
+
+ public ArrayList getBuckets() {
+ return buckets;
+ }
+
+ public void setBuckets(ArrayList buckets) {
+ this.buckets = buckets;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/ListObjectsResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/ListObjectsResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..c8e62e8675bb4c2854e84a2ec6b27c68f21be27e
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/ListObjectsResult.java
@@ -0,0 +1,15 @@
+package com.ksyun.ks3.model.result;
+
+import com.ksyun.ks3.model.ObjectListing;
+
+public class ListObjectsResult extends Ks3Result{
+ private ObjectListing objectListing;
+
+ public ObjectListing getObjectListing() {
+ return objectListing;
+ }
+
+ public void setObjectListing(ObjectListing objectListing) {
+ this.objectListing = objectListing;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/ListPartsResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/ListPartsResult.java
index 10bfee65a9048479952a573740d00dd82c4866d5..9a44f994c9b08d16ec08e4723bf767af27837165 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/ListPartsResult.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/ListPartsResult.java
@@ -6,7 +6,7 @@ import java.util.List;
import com.ksyun.ks3.model.Owner;
import com.ksyun.ks3.model.Part;
-public class ListPartsResult {
+public class ListPartsResult extends Ks3Result {
private String bucketname;
private String key;
private String uploadId;
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PostObjectResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PostObjectResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..f35d170d6eb52da627c98ca8fe29779c884c31df
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PostObjectResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class PostObjectResult extends Ks3Result {
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutAdpResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutAdpResult.java
deleted file mode 100644
index 028a9cd7873d0520386ff7c8a95fb5593ab42a6e..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutAdpResult.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.ksyun.ks3.model.result;
-/**
- * @author lijunwei[lijunwei@kingsoft.com]
- *
- * @date 2015年5月5日 上午11:19:40
- *
- * @description 添加异步数据处理任务返回的结果
- **/
-public class PutAdpResult{
- /**
- * 任务ID,可以用于查询任务。
- */
- private String taskId;
-
- public String getTaskId() {
- return taskId;
- }
-
- public void setTaskId(String taskId) {
- this.taskId = taskId;
- }
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutBucketACLResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutBucketACLResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..20b246dac97fff39419638dbc7b7b9c0cb8428f9
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutBucketACLResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class PutBucketACLResult extends Ks3Result{
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutBucketPolicyResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutBucketPolicyResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..82ce0654ba55baa52ebff52bdb80d48dc1c89ef6
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutBucketPolicyResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class PutBucketPolicyResult extends Ks3Result {
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutBucketQuotaResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutBucketQuotaResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..2ed6295ecf3f6be865577dab21a5d8b3674ad8c8
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutBucketQuotaResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class PutBucketQuotaResult extends Ks3Result {
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutBucketReplicationResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutBucketReplicationResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..29c17662d959d64bd00f6ea04ebb1fa0f6d9f217
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutBucketReplicationResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class PutBucketReplicationResult extends Ks3Result{
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectACLResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectACLResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..05165f8e28de4f2d20605c67f0d970c56d47530d
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectACLResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class PutObjectACLResult extends Ks3Result{
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectAdpResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectAdpResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..a3f828cd673b66d66ffbe062ecfe35ad628121f5
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectAdpResult.java
@@ -0,0 +1,16 @@
+package com.ksyun.ks3.model.result;
+
+public class PutObjectAdpResult extends Ks3Result {
+ /**
+ * 任务ID,可以用于查询任务。
+ */
+ private String taskId;
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/object/PutObjectFetchResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectFetchResult.java
similarity index 93%
rename from ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/object/PutObjectFetchResult.java
rename to ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectFetchResult.java
index 0888839694053039a8904490808e124376c0c5e3..5be113711ea559af06291328e5ac17027431ce6f 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/object/PutObjectFetchResult.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectFetchResult.java
@@ -1,8 +1,6 @@
+package com.ksyun.ks3.model.result;
-package com.ksyun.ks3.services.request.object;
-
-public class PutObjectFetchResult {
-
+public class PutObjectFetchResult extends Ks3Result {
private int status;
private String key;
private String bucket;
@@ -69,4 +67,4 @@ public class PutObjectFetchResult {
", requestId='" + requestId + '\'' +
'}';
}
-}
\ No newline at end of file
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectResult.java
index 979909ea6f9b1c0a1832ad70ddae9fe460f1a62c..cf18b0eb91e21330c19315a37c0df93c27d38a7b 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectResult.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectResult.java
@@ -1,6 +1,6 @@
package com.ksyun.ks3.model.result;
-public class PutObjectResult {
+public class PutObjectResult extends Ks3Result {
private String eTag;
public String toString() {
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectTaggingResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectTaggingResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..3f293115a07d8ebdf0da1a2100ec82b4c8283657
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/PutObjectTaggingResult.java
@@ -0,0 +1,4 @@
+package com.ksyun.ks3.model.result;
+
+public class PutObjectTaggingResult extends Ks3Result{
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/UploadPartResult.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/UploadPartResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..093046afced45c16cb7b4919e9a8ad5670406b52
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/result/UploadPartResult.java
@@ -0,0 +1,15 @@
+package com.ksyun.ks3.model.result;
+
+import com.ksyun.ks3.model.PartETag;
+
+public class UploadPartResult extends Ks3Result{
+ private PartETag partETag;
+
+ public PartETag getPartETag() {
+ return partETag;
+ }
+
+ public void setPartETag(PartETag partETag) {
+ this.partETag = partETag;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/transfer/RequestProgressListener.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/transfer/RequestProgressListener.java
index 83e53718d436a78e5cff67592e0ca72b51889be5..73a2b0332861ec87f06dbf78d03809d78b4cf06a 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/transfer/RequestProgressListener.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/model/transfer/RequestProgressListener.java
@@ -1,5 +1,5 @@
package com.ksyun.ks3.model.transfer;
public interface RequestProgressListener {
- public void onTaskProgress(double progress);
+ public void onProgress(long bytesWritten, long totalSize);
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/AsyncHttpClientFactory.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/AsyncHttpClientFactory.java
deleted file mode 100644
index 58179630357372cdecb4716003ca74904fd29332..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/AsyncHttpClientFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.ksyun.ks3.services;
-
-import android.text.TextUtils;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import com.loopj.android.http.AsyncHttpClient;
-
-import cz.msebera.android.httpclient.conn.ssl.SSLSocketFactory;
-
-public class AsyncHttpClientFactory {
- private static AsyncHttpClient instance;
-
- private AsyncHttpClientFactory() {
- }
-
- static AsyncHttpClient getInstance() {
- if (instance == null) {
- instance = new AsyncHttpClient();
- }
- return instance;
- }
-
- static AsyncHttpClient getInstance(Ks3ClientConfiguration configuration) {
- if (instance == null) {
- instance = new AsyncHttpClient();
- instance.setConnectTimeout(configuration.getConnectionTimeout());
- instance.setTimeout(configuration.getSocketTimeout());
- instance.setUserAgent(configuration.getUserAgent());
- instance.setMaxConnections(configuration.getMaxConnections());
- instance.setThreadPool(configuration.getThreadPool());
- instance.setMaxRetriesAndTimeout(configuration.getMaxRetrytime(),
- configuration.getRetryTimeOut());
- if (configuration.getProxyUsername() != null
- && configuration.getProxyPort() > 0) {
- instance.setProxy(configuration.getProxyHost(),
- configuration.getProxyPort(),
- configuration.getProxyUsername(),
- configuration.getProxyPassword());
- }
-
- SSLSocketFactory sslSocketFactory = configuration.getSSLSocketFactory();
- if (sslSocketFactory != null) {
- instance.setSSLSocketFactory(sslSocketFactory);
- }
- }
- return instance;
- }
-
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3.java
index 90ac91699f0c65f94ef44f9295847ba239a02c88..0cae6568d20e93504308c5463cc713f8344b7014 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3.java
@@ -1,59 +1,71 @@
package com.ksyun.ks3.services;
import java.io.File;
-import java.util.ArrayList;
import java.util.List;
import android.content.Context;
-import com.ksyun.ks3.model.Bucket;
-import com.ksyun.ks3.model.ObjectListing;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
import com.ksyun.ks3.model.ObjectMetadata;
import com.ksyun.ks3.model.PartETag;
import com.ksyun.ks3.model.acl.AccessControlList;
-import com.ksyun.ks3.model.acl.AccessControlPolicy;
import com.ksyun.ks3.model.acl.CannedAccessControlList;
+import com.ksyun.ks3.model.result.AbortMultipartUploadResult;
import com.ksyun.ks3.model.result.CompleteMultipartUploadResult;
-import com.ksyun.ks3.model.result.CopyResult;
+import com.ksyun.ks3.model.result.CopyObjectResult;
+import com.ksyun.ks3.model.result.CreateBucketResult;
+import com.ksyun.ks3.model.result.DeleteBucketResult;
+import com.ksyun.ks3.model.result.DeleteObjectResult;
+import com.ksyun.ks3.model.result.GetBucketACLResult;
+import com.ksyun.ks3.model.result.GetObjectACLResult;
+import com.ksyun.ks3.model.result.GetObjectResult;
+import com.ksyun.ks3.model.result.HeadBucketResult;
import com.ksyun.ks3.model.result.HeadObjectResult;
import com.ksyun.ks3.model.result.InitiateMultipartUploadResult;
+import com.ksyun.ks3.model.result.ListBucketsResult;
+import com.ksyun.ks3.model.result.ListObjectsResult;
import com.ksyun.ks3.model.result.ListPartsResult;
+import com.ksyun.ks3.model.result.PutBucketACLResult;
+import com.ksyun.ks3.model.result.PutObjectACLResult;
+import com.ksyun.ks3.model.result.PutObjectResult;
+import com.ksyun.ks3.model.result.UploadPartResult;
import com.ksyun.ks3.services.handler.AbortMultipartUploadResponseHandler;
import com.ksyun.ks3.services.handler.CompleteMultipartUploadResponseHandler;
import com.ksyun.ks3.services.handler.CopyObjectResponseHandler;
-import com.ksyun.ks3.services.handler.CreateBucketResponceHandler;
-import com.ksyun.ks3.services.handler.DeleteBucketReplicationConfigResponceHandler;
-import com.ksyun.ks3.services.handler.DeleteBucketResponceHandler;
-import com.ksyun.ks3.services.handler.DeleteObjectRequestHandler;
-import com.ksyun.ks3.services.handler.GetBucketACLResponceHandler;
-import com.ksyun.ks3.services.handler.GetBucketReplicationConfigResponceHandler;
+import com.ksyun.ks3.services.handler.CreateBucketResponseHandler;
+import com.ksyun.ks3.services.handler.DeleteBucketReplicationResponseHandler;
+import com.ksyun.ks3.services.handler.DeleteBucketResponseHandler;
+import com.ksyun.ks3.services.handler.DeleteObjectResponseHandler;
+import com.ksyun.ks3.services.handler.GetBucketACLResponseHandler;
+import com.ksyun.ks3.services.handler.GetBucketReplicationResponseHandler;
import com.ksyun.ks3.services.handler.GetObjectACLResponseHandler;
import com.ksyun.ks3.services.handler.GetObjectResponseHandler;
import com.ksyun.ks3.services.handler.HeadBucketResponseHandler;
import com.ksyun.ks3.services.handler.HeadObjectResponseHandler;
-import com.ksyun.ks3.services.handler.InitiateMultipartUploadResponceHandler;
-import com.ksyun.ks3.services.handler.Ks3HttpResponceHandler;
-import com.ksyun.ks3.services.handler.ListBucketsResponceHandler;
+import com.ksyun.ks3.services.handler.InitiateMultipartUploadResponseHandler;
+import com.ksyun.ks3.services.handler.Ks3HttpResponseHandler;
+import com.ksyun.ks3.services.handler.ListBucketsResponseHandler;
import com.ksyun.ks3.services.handler.ListObjectsResponseHandler;
import com.ksyun.ks3.services.handler.ListPartsResponseHandler;
import com.ksyun.ks3.services.handler.PutBucketACLResponseHandler;
-import com.ksyun.ks3.services.handler.PutBucketReplicationResponceHandler;
+import com.ksyun.ks3.services.handler.PutBucketReplicationResponseHandler;
import com.ksyun.ks3.services.handler.PutObjectACLResponseHandler;
import com.ksyun.ks3.services.handler.PutObjectResponseHandler;
-import com.ksyun.ks3.services.handler.UploadPartResponceHandler;
+import com.ksyun.ks3.services.handler.UploadPartResponseHandler;
import com.ksyun.ks3.services.request.AbortMultipartUploadRequest;
import com.ksyun.ks3.services.request.CompleteMultipartUploadRequest;
import com.ksyun.ks3.services.request.CopyObjectRequest;
import com.ksyun.ks3.services.request.CreateBucketRequest;
import com.ksyun.ks3.services.request.DeleteBucketPolicyRequest;
import com.ksyun.ks3.services.request.DeleteBucketQuotaRequest;
-import com.ksyun.ks3.services.request.DeleteBucketReplicationConfigRequest;
+import com.ksyun.ks3.services.request.DeleteBucketReplicationRequest;
import com.ksyun.ks3.services.request.DeleteBucketRequest;
import com.ksyun.ks3.services.request.DeleteObjectRequest;
import com.ksyun.ks3.services.request.GetBucketACLRequest;
import com.ksyun.ks3.services.request.GetBucketPolicyRequest;
import com.ksyun.ks3.services.request.GetBucketQuotaRequest;
-import com.ksyun.ks3.services.request.GetBucketReplicationConfigRequest;
+import com.ksyun.ks3.services.request.GetBucketReplicationRequest;
import com.ksyun.ks3.services.request.GetObjectACLRequest;
import com.ksyun.ks3.services.request.GetObjectRequest;
import com.ksyun.ks3.services.request.HeadBucketRequest;
@@ -63,156 +75,156 @@ import com.ksyun.ks3.services.request.Ks3HttpRequest;
import com.ksyun.ks3.services.request.ListBucketsRequest;
import com.ksyun.ks3.services.request.ListObjectsRequest;
import com.ksyun.ks3.services.request.ListPartsRequest;
-import com.ksyun.ks3.services.request.PutBuckePolicyRequest;
-import com.ksyun.ks3.services.request.PutBuckeQuotaRequest;
+import com.ksyun.ks3.services.request.PutBucketPolicyRequest;
import com.ksyun.ks3.services.request.PutBucketACLRequest;
-import com.ksyun.ks3.services.request.PutBucketReplicationConfigRequest;
+import com.ksyun.ks3.services.request.PutBucketQuotaRequest;
+import com.ksyun.ks3.services.request.PutBucketReplicationRequest;
import com.ksyun.ks3.services.request.PutObjectACLRequest;
import com.ksyun.ks3.services.request.PutObjectRequest;
import com.ksyun.ks3.services.request.UploadPartRequest;
public abstract interface Ks3 {
- public void listBuckets(ListBucketsResponceHandler resultHandler);
+ public void listBuckets(ListBucketsResponseHandler resultHandler);
- public ArrayList syncListBuckets() throws Throwable;
+ public ListBucketsResult syncListBuckets() throws Ks3ClientException, Ks3ServiceException;
public void listBuckets(ListBucketsRequest request,
- ListBucketsResponceHandler resultHandler);
+ ListBucketsResponseHandler resultHandler);
public void getBucketACL(String bucketName,
- GetBucketACLResponceHandler resultHandler);
+ GetBucketACLResponseHandler resultHandler);
- public AccessControlPolicy syncGetBucketACL(String bucketName)
- throws Throwable;
+ public GetBucketACLResult syncGetBucketACL(String bucketName)
+ throws Ks3ClientException, Ks3ServiceException;
public void getBucketACL(GetBucketACLRequest request,
- GetBucketACLResponceHandler resultHandler);
+ GetBucketACLResponseHandler resultHandler);
- public AccessControlPolicy syncGetBucketACL(GetBucketACLRequest request)
- throws Throwable;
+ public GetBucketACLResult syncGetBucketACL(GetBucketACLRequest request)
+ throws Ks3ClientException, Ks3ServiceException;
public void putBucketACL(String bucketName,
AccessControlList accessControlList,
PutBucketACLResponseHandler resultHandler);
- public void syncPutBucketACL(String bucketName,
- AccessControlList accessControlList) throws Throwable;
+ public PutBucketACLResult syncPutBucketACL(String bucketName,
+ AccessControlList accessControlList) throws Ks3ClientException, Ks3ServiceException;
public void putBucketACL(String bucketName,
CannedAccessControlList CannedAcl,
PutBucketACLResponseHandler resultHandler);
- public void syncPutBucketACL(String bucketName,
- CannedAccessControlList accessControlList) throws Throwable;
+ public PutBucketACLResult syncPutBucketACL(String bucketName,
+ CannedAccessControlList accessControlList) throws Ks3ClientException, Ks3ServiceException;
public void putBucketACL(PutBucketACLRequest request,
PutBucketACLResponseHandler resultHandler);
- public void syncPutBucketACL(PutBucketACLRequest request) throws Throwable;
+ public PutBucketACLResult syncPutBucketACL(PutBucketACLRequest request) throws Ks3ClientException, Ks3ServiceException;
public void putObjectACL(String bucketName, String objectName,
CannedAccessControlList accessControlList,
PutObjectACLResponseHandler resultHandler);
- public void syncPutObjectACL(String bucketName, String objectName,
- CannedAccessControlList accessControlList) throws Throwable;
+ public PutObjectACLResult syncPutObjectACL(String bucketName, String objectName,
+ CannedAccessControlList accessControlList) throws Ks3ClientException, Ks3ServiceException;
public void putObjectACL(String bucketName, String objectName,
AccessControlList accessControlList,
PutObjectACLResponseHandler resultHandler);
- public void syncPutObjectACL(String bucketName, String objectName,
- AccessControlList accessControlList) throws Throwable;
+ public PutObjectACLResult syncPutObjectACL(String bucketName, String objectName,
+ AccessControlList accessControlList) throws Ks3ClientException, Ks3ServiceException;
public void putObjectACL(PutObjectACLRequest request,
PutObjectACLResponseHandler resultHandler);
- public void syncPutObjectACL(PutObjectACLRequest request) throws Throwable;
+ public PutObjectACLResult syncPutObjectACL(PutObjectACLRequest request) throws Ks3ClientException, Ks3ServiceException;
public void getObjectACL(String bucketName, String objectName,
GetObjectACLResponseHandler resultHandler);
- public AccessControlPolicy syncGetObjectACL(String bucketName,
- String objectName) throws Throwable;
+ public GetObjectACLResult syncGetObjectACL(String bucketName,
+ String objectName) throws Ks3ClientException, Ks3ServiceException;
public void getObjectACL(GetObjectACLRequest request,
GetObjectACLResponseHandler resultHandler);
- public AccessControlPolicy syncGetObjectACL(GetObjectACLRequest request)
- throws Throwable;
+ public GetObjectACLResult syncGetObjectACL(GetObjectACLRequest request)
+ throws Ks3ClientException, Ks3ServiceException;
public void headBucket(String bucketname,
HeadBucketResponseHandler resultHandler);
- public void syncHeadBucket(String bucketname) throws Throwable;
+ public HeadBucketResult syncHeadBucket(String bucketname) throws Ks3ClientException, Ks3ServiceException;
public void headBucket(HeadBucketRequest request,
HeadBucketResponseHandler resultHandler);
- public void syncHeadBucket(HeadBucketRequest request) throws Throwable;
+ public HeadBucketResult syncHeadBucket(HeadBucketRequest request) throws Ks3ClientException, Ks3ServiceException;
public boolean bucketExists(String bucketname);
public void createBucket(String bucketname,
- CreateBucketResponceHandler handlhandler);
+ CreateBucketResponseHandler handlhandler);
- public void syncCreateBucket(String bucketname) throws Throwable;
+ public CreateBucketResult syncCreateBucket(String bucketname) throws Ks3ClientException, Ks3ServiceException;
public void createBucket(String bucketname, AccessControlList list,
- CreateBucketResponceHandler handlhandler);
+ CreateBucketResponseHandler handlhandler);
- public void syncCreateBucket(String bucketname, AccessControlList list)
- throws Throwable;
+ public CreateBucketResult syncCreateBucket(String bucketname, AccessControlList list)
+ throws Ks3ClientException, Ks3ServiceException;
public void createBucket(String bucketname, CannedAccessControlList list,
- CreateBucketResponceHandler handlhandler);
+ CreateBucketResponseHandler handlhandler);
- public void syncCreateBucket(String bucketname, CannedAccessControlList list)
- throws Throwable;
+ public CreateBucketResult syncCreateBucket(String bucketname, CannedAccessControlList list)
+ throws Ks3ClientException, Ks3ServiceException;
public void createBucket(CreateBucketRequest request,
- CreateBucketResponceHandler handlhandler);
+ CreateBucketResponseHandler handlhandler);
- public void syncCreateBucket(CreateBucketRequest request) throws Throwable;
+ public CreateBucketResult syncCreateBucket(CreateBucketRequest request) throws Ks3ClientException, Ks3ServiceException;
public void deleteBucket(String bucketname,
- DeleteBucketResponceHandler handler);
+ DeleteBucketResponseHandler handler);
- public void syncDeleteBucket(String bucketname) throws Throwable;
+ public DeleteBucketResult syncDeleteBucket(String bucketname) throws Ks3ClientException, Ks3ServiceException;
public void deleteBucket(DeleteBucketRequest request,
- DeleteBucketResponceHandler resultHandler);
+ DeleteBucketResponseHandler resultHandler);
- public void syncDeleteBucket(DeleteBucketRequest request) throws Throwable;
+ public DeleteBucketResult syncDeleteBucket(DeleteBucketRequest request) throws Ks3ClientException, Ks3ServiceException;
public void listObjects(String bucketname,
ListObjectsResponseHandler resultHandler);
- public ObjectListing syncListObjects(String bucketname) throws Throwable;
+ public ListObjectsResult syncListObjects(String bucketname) throws Ks3ClientException, Ks3ServiceException;
public void listObjects(String bucketname, String prefix,
ListObjectsResponseHandler resultHandler);
- public ObjectListing syncListObjects(String bucketname, String prefix)
- throws Throwable;
+ public ListObjectsResult syncListObjects(String bucketname, String prefix)
+ throws Ks3ClientException, Ks3ServiceException;
public void listObjects(ListObjectsRequest request,
ListObjectsResponseHandler resultHandler);
- public ObjectListing syncListObjects(ListObjectsRequest request)
- throws Throwable;
+ public ListObjectsResult syncListObjects(ListObjectsRequest request)
+ throws Ks3ClientException, Ks3ServiceException;
public void deleteObject(String bucketname, String objectKey,
- DeleteObjectRequestHandler handler);
+ DeleteObjectResponseHandler handler);
- public void syncDeleteObject(String bucketname, String objectKey)
- throws Throwable;
+ public DeleteObjectResult syncDeleteObject(String bucketname, String objectKey)
+ throws Ks3ClientException, Ks3ServiceException;
public void deleteObject(DeleteObjectRequest request,
- DeleteObjectRequestHandler handler);
+ DeleteObjectResponseHandler handler);
- public void syncDeleteObject(DeleteObjectRequest request) throws Throwable;
+ public DeleteObjectResult syncDeleteObject(DeleteObjectRequest request) throws Ks3ClientException, Ks3ServiceException;
public Ks3HttpRequest getObject(Context context, String bucketname,
String key, GetObjectResponseHandler getObjectResponceHandler);
@@ -234,63 +246,63 @@ public abstract interface Ks3 {
HeadObjectResponseHandler resultHandler);
public HeadObjectResult syncHeadObject(String bucketname, String objectkey)
- throws Throwable;
+ throws Ks3ClientException, Ks3ServiceException;
public void headObject(HeadObjectRequest request,
HeadObjectResponseHandler resultHandler);
public HeadObjectResult syncHeadObject(HeadObjectRequest request)
- throws Throwable;
+ throws Ks3ClientException, Ks3ServiceException;
public void copyObject(String destinationBucket, String destinationObject,
String sourceBucket, String sourceKey,
CopyObjectResponseHandler handler);
- public CopyResult syncCopyObject(String destinationBucket,
- String destinationObject, String sourceBucket, String sourceKey)
- throws Throwable;
+ public CopyObjectResult syncCopyObject(String destinationBucket,
+ String destinationObject, String sourceBucket, String sourceKey)
+ throws Ks3ClientException, Ks3ServiceException;
public void copyObject(String destinationBucket, String destinationObject,
String sourceBucket, String sourceKey,
CannedAccessControlList cannedAcl, CopyObjectResponseHandler handler);
- public CopyResult syncCopyObject(String destinationBucket,
- String destinationObject, String sourceBucket, String sourceKey,
- CannedAccessControlList cannedAcl) throws Throwable;
+ public CopyObjectResult syncCopyObject(String destinationBucket,
+ String destinationObject, String sourceBucket, String sourceKey,
+ CannedAccessControlList cannedAcl) throws Ks3ClientException, Ks3ServiceException;
public void copyObject(String destinationBucket, String destinationObject,
String sourceBucket, String sourceKey,
AccessControlList accessControlList,
CopyObjectResponseHandler handler);
- public CopyResult syncCopyObject(String destinationBucket,
- String destinationObject, String sourceBucket, String sourceKey,
- AccessControlList accessControlList) throws Throwable;
+ public CopyObjectResult syncCopyObject(String destinationBucket,
+ String destinationObject, String sourceBucket, String sourceKey,
+ AccessControlList accessControlList) throws Ks3ClientException, Ks3ServiceException;
public void copyObject(CopyObjectRequest request,
CopyObjectResponseHandler handler);
- public CopyResult syncCopyObject(CopyObjectRequest request)
- throws Throwable;
+ public CopyObjectResult syncCopyObject(CopyObjectRequest request)
+ throws Ks3ClientException, Ks3ServiceException;
public void initiateMultipartUpload(String bucketname, String objectkey,
- InitiateMultipartUploadResponceHandler resultHandler);
+ InitiateMultipartUploadResponseHandler resultHandler);
public InitiateMultipartUploadResult syncInitiateMultipartUpload(
- String bucketname, String objectkey) throws Throwable;
+ String bucketname, String objectkey) throws Ks3ClientException, Ks3ServiceException;
public void initiateMultipartUpload(InitiateMultipartUploadRequest request,
- InitiateMultipartUploadResponceHandler resultHandler);
+ InitiateMultipartUploadResponseHandler resultHandler);
public InitiateMultipartUploadResult syncInitiateMultipartUpload(
- InitiateMultipartUploadRequest request) throws Throwable;
+ InitiateMultipartUploadRequest request) throws Ks3ClientException, Ks3ServiceException;
public void uploadPart(String bucketName, String key, String uploadId,
File file, long offset, int partNumber, long partSize,
- UploadPartResponceHandler resultHandler);
+ UploadPartResponseHandler resultHandler);
public void uploadPart(UploadPartRequest request,
- UploadPartResponceHandler resultHandler);
+ UploadPartResponseHandler resultHandler);
public void completeMultipartUpload(String bucketname, String objectkey,
String uploadId, List partETags,
@@ -298,83 +310,83 @@ public abstract interface Ks3 {
public CompleteMultipartUploadResult syncCompleteMultipartUpload(
String bucketname, String objectkey, String uploadId,
- List partETags) throws Throwable;
+ List partETags) throws Ks3ClientException, Ks3ServiceException;
public void completeMultipartUpload(ListPartsResult result,
CompleteMultipartUploadResponseHandler handler);
public CompleteMultipartUploadResult syncCompleteMultipartUpload(
- ListPartsResult result) throws Throwable;
+ ListPartsResult result) throws Ks3ClientException, Ks3ServiceException;
public void completeMultipartUpload(CompleteMultipartUploadRequest request,
CompleteMultipartUploadResponseHandler handler);
public CompleteMultipartUploadResult syncCompleteMultipartUpload(
- CompleteMultipartUploadRequest request) throws Throwable;
+ CompleteMultipartUploadRequest request) throws Ks3ClientException, Ks3ServiceException;
public void abortMultipartUpload(String bucketname, String objectkey,
String uploadId, AbortMultipartUploadResponseHandler handler);
- public void syncAbortMultipartUpload(String bucketname, String objectkey,
- String uploadId) throws Throwable;
+ public AbortMultipartUploadResult syncAbortMultipartUpload(String bucketname, String objectkey,
+ String uploadId) throws Ks3ClientException, Ks3ServiceException;
public void abortMultipartUpload(AbortMultipartUploadRequest request,
AbortMultipartUploadResponseHandler handler);
- public void syncAbortMultipartUpload(AbortMultipartUploadRequest request)
- throws Throwable;
+ public AbortMultipartUploadResult syncAbortMultipartUpload(AbortMultipartUploadRequest request)
+ throws Ks3ClientException, Ks3ServiceException;
public void listParts(String bucketname, String objectkey, String uploadId,
ListPartsResponseHandler handler);
public ListPartsResult syncListParts(String bucketname, String objectkey,
- String uploadId) throws Throwable;
+ String uploadId) throws Ks3ClientException, Ks3ServiceException;
public void listParts(String bucketname, String objectkey, String uploadId,
int maxParts, ListPartsResponseHandler handler);
public ListPartsResult syncListParts(String bucketname, String objectkey,
- String uploadId, int maxParts) throws Throwable;
+ String uploadId, int maxParts) throws Ks3ClientException, Ks3ServiceException;
public void listParts(String bucketname, String objectkey, String uploadId,
int maxParts, int partNumberMarker, ListPartsResponseHandler handler);
public ListPartsResult syncListParts(String bucketname, String objectkey,
String uploadId, int maxParts, int partNumberMarker)
- throws Throwable;
+ throws Ks3ClientException, Ks3ServiceException;
public void listParts(ListPartsRequest request,
ListPartsResponseHandler handler);
- public void putBucketCrr(PutBucketReplicationConfigRequest request,
- PutBucketReplicationResponceHandler handler);
+ public void putBucketCrr(PutBucketReplicationRequest request,
+ PutBucketReplicationResponseHandler handler);
- public void getBucketCrr(GetBucketReplicationConfigRequest request,
- GetBucketReplicationConfigResponceHandler handler);
+ public void getBucketCrr(GetBucketReplicationRequest request,
+ GetBucketReplicationResponseHandler handler);
- public void deleteBucketCrr(DeleteBucketReplicationConfigRequest request,
- DeleteBucketReplicationConfigResponceHandler handler);
+ public void deleteBucketCrr(DeleteBucketReplicationRequest request,
+ DeleteBucketReplicationResponseHandler handler);
- public void putBucketPolicy(PutBuckePolicyRequest request,
- Ks3HttpResponceHandler handler);
+ public void putBucketPolicy(PutBucketPolicyRequest request,
+ Ks3HttpResponseHandler handler);
public void getBucketPolicy(GetBucketPolicyRequest request,
- Ks3HttpResponceHandler handler);
+ Ks3HttpResponseHandler handler);
public void deleteBucketPolicy(DeleteBucketPolicyRequest request,
- Ks3HttpResponceHandler handler);
+ Ks3HttpResponseHandler handler);
- public void putBucketQuota(PutBuckeQuotaRequest request,
- Ks3HttpResponceHandler handler);
+ public void putBucketQuota(PutBucketQuotaRequest request,
+ Ks3HttpResponseHandler handler);
public void getBucketQuota(GetBucketQuotaRequest request,
- Ks3HttpResponceHandler handler);
+ Ks3HttpResponseHandler handler);
public void deleteBucketQuota(DeleteBucketQuotaRequest request,
- Ks3HttpResponceHandler handler);
+ Ks3HttpResponseHandler handler);
public ListPartsResult syncListParts(ListPartsRequest request)
- throws Throwable;
+ throws Ks3ClientException, Ks3ServiceException;
public void pause(Context context);
@@ -382,24 +394,24 @@ public abstract interface Ks3 {
public Context getContext();
- public void syncGetObject(GetObjectRequest request, File downloadFile,
- boolean append) throws Throwable;
+ public GetObjectResult syncGetObject(GetObjectRequest request, File downloadFile,
+ boolean append) throws Ks3ClientException, Ks3ServiceException;
- public void syncGetObject(Context context, File file, boolean append,
- String bucketname, String key,
- GetObjectResponseHandler getObjectResponceHandler) throws Throwable;
+ public GetObjectResult syncGetObject(Context context, File file, boolean append,
+ String bucketname, String key,
+ GetObjectResponseHandler getObjectResponceHandler) throws Ks3ClientException, Ks3ServiceException;
- public void syncPutObject(String bucketname, String objectkey, File file)
- throws Throwable;
+ public PutObjectResult syncPutObject(String bucketname, String objectkey, File file)
+ throws Ks3ClientException, Ks3ServiceException;
- public void syncPutObject(String bucketname, String objectkey, File file,
- ObjectMetadata objectmeta) throws Throwable;
+ public PutObjectResult syncPutObject(String bucketname, String objectkey, File file,
+ ObjectMetadata objectmeta) throws Ks3ClientException, Ks3ServiceException;
- public void syncPutObject(PutObjectRequest request) throws Throwable;
+ public PutObjectResult syncPutObject(PutObjectRequest request) throws Ks3ClientException, Ks3ServiceException;
- public PartETag syncUploadPart(String bucketName, String key,
- String uploadId, File file, long offset, int partNumber,
- long partSize) throws Throwable;
+ public UploadPartResult syncUploadPart(String bucketName, String key,
+ String uploadId, File file, long offset, int partNumber,
+ long partSize) throws Ks3ClientException, Ks3ServiceException;
- public PartETag syncUploadPart(UploadPartRequest request) throws Throwable;
+ public UploadPartResult syncUploadPart(UploadPartRequest request) throws Ks3ClientException, Ks3ServiceException;
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3Client.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3Client.java
index 72781a3e89d83ace84187f4415e4357495118177..231f68a0276d378a0e77ea6b23298c936ba2c2e9 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3Client.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3Client.java
@@ -1,76 +1,90 @@
package com.ksyun.ks3.services;
import java.io.File;
-import java.io.UnsupportedEncodingException;
import java.security.SignatureException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import cz.msebera.android.httpclient.Header;
import android.content.Context;
-import com.ks3.demo.main.utils.DateUtils;
import com.ksyun.ks3.auth.AuthUtils;
import com.ksyun.ks3.exception.Ks3ClientException;
-import com.ksyun.ks3.exception.Ks3Error;
-import com.ksyun.ks3.model.Bucket;
-import com.ksyun.ks3.model.ObjectListing;
+import com.ksyun.ks3.exception.Ks3ServiceException;
import com.ksyun.ks3.model.ObjectMetadata;
import com.ksyun.ks3.model.PartETag;
import com.ksyun.ks3.model.PostObjectFormFields;
import com.ksyun.ks3.model.PostPolicy;
import com.ksyun.ks3.model.PostPolicyCondition;
import com.ksyun.ks3.model.acl.AccessControlList;
-import com.ksyun.ks3.model.acl.AccessControlPolicy;
import com.ksyun.ks3.model.acl.Authorization;
import com.ksyun.ks3.model.acl.CannedAccessControlList;
+import com.ksyun.ks3.model.result.AbortMultipartUploadResult;
import com.ksyun.ks3.model.result.CompleteMultipartUploadResult;
-import com.ksyun.ks3.model.result.CopyResult;
+import com.ksyun.ks3.model.result.CopyObjectResult;
+import com.ksyun.ks3.model.result.CreateBucketResult;
+import com.ksyun.ks3.model.result.DeleteBucketResult;
+import com.ksyun.ks3.model.result.DeleteObjectResult;
+import com.ksyun.ks3.model.result.GetBucketACLResult;
+import com.ksyun.ks3.model.result.GetObjectACLResult;
import com.ksyun.ks3.model.result.GetObjectResult;
+import com.ksyun.ks3.model.result.HeadBucketResult;
import com.ksyun.ks3.model.result.HeadObjectResult;
import com.ksyun.ks3.model.result.InitiateMultipartUploadResult;
+import com.ksyun.ks3.model.result.Ks3SyncResult;
+import com.ksyun.ks3.model.result.ListBucketsResult;
+import com.ksyun.ks3.model.result.ListObjectsResult;
import com.ksyun.ks3.model.result.ListPartsResult;
+import com.ksyun.ks3.model.result.PutBucketACLResult;
+import com.ksyun.ks3.model.result.PutObjectACLResult;
+import com.ksyun.ks3.model.result.PutObjectResult;
+import com.ksyun.ks3.model.result.UploadPartResult;
import com.ksyun.ks3.services.handler.AbortMultipartUploadResponseHandler;
+import com.ksyun.ks3.services.handler.AsyncHttpResponseHandler;
import com.ksyun.ks3.services.handler.CompleteMultipartUploadResponseHandler;
import com.ksyun.ks3.services.handler.CopyObjectResponseHandler;
-import com.ksyun.ks3.services.handler.CreateBucketResponceHandler;
-import com.ksyun.ks3.services.handler.DeleteBucketReplicationConfigResponceHandler;
-import com.ksyun.ks3.services.handler.DeleteBucketResponceHandler;
-import com.ksyun.ks3.services.handler.DeleteObjectRequestHandler;
-import com.ksyun.ks3.services.handler.GetBucketACLResponceHandler;
-import com.ksyun.ks3.services.handler.GetBucketReplicationConfigResponceHandler;
+import com.ksyun.ks3.services.handler.CreateBucketResponseHandler;
+import com.ksyun.ks3.services.handler.DeleteBucketReplicationResponseHandler;
+import com.ksyun.ks3.services.handler.DeleteBucketResponseHandler;
+import com.ksyun.ks3.services.handler.DeleteObjectResponseHandler;
+import com.ksyun.ks3.services.handler.DeleteObjectTaggingResponseHandler;
+import com.ksyun.ks3.services.handler.GetBucketACLResponseHandler;
+import com.ksyun.ks3.services.handler.GetBucketReplicationResponseHandler;
import com.ksyun.ks3.services.handler.GetObjectACLResponseHandler;
import com.ksyun.ks3.services.handler.GetObjectResponseHandler;
import com.ksyun.ks3.services.handler.GetObjectTaggingResponseHandler;
import com.ksyun.ks3.services.handler.HeadBucketResponseHandler;
import com.ksyun.ks3.services.handler.HeadObjectResponseHandler;
-import com.ksyun.ks3.services.handler.InitiateMultipartUploadResponceHandler;
-import com.ksyun.ks3.services.handler.Ks3HttpResponceHandler;
-import com.ksyun.ks3.services.handler.ListBucketsResponceHandler;
+import com.ksyun.ks3.services.handler.InitiateMultipartUploadResponseHandler;
+import com.ksyun.ks3.services.handler.Ks3HttpResponseHandler;
+import com.ksyun.ks3.services.handler.ListBucketsResponseHandler;
import com.ksyun.ks3.services.handler.ListObjectsResponseHandler;
import com.ksyun.ks3.services.handler.ListPartsResponseHandler;
import com.ksyun.ks3.services.handler.PutBucketACLResponseHandler;
-import com.ksyun.ks3.services.handler.PutBucketReplicationResponceHandler;
+import com.ksyun.ks3.services.handler.PutBucketReplicationResponseHandler;
import com.ksyun.ks3.services.handler.PutObjectACLResponseHandler;
+import com.ksyun.ks3.services.handler.PutObjectFetchResponseHandler;
import com.ksyun.ks3.services.handler.PutObjectResponseHandler;
-import com.ksyun.ks3.services.handler.UploadPartResponceHandler;
+import com.ksyun.ks3.services.handler.PutObjectTaggingResponseHandler;
+import com.ksyun.ks3.services.handler.UploadPartResponseHandler;
import com.ksyun.ks3.services.request.AbortMultipartUploadRequest;
import com.ksyun.ks3.services.request.CompleteMultipartUploadRequest;
import com.ksyun.ks3.services.request.CopyObjectRequest;
import com.ksyun.ks3.services.request.CreateBucketRequest;
import com.ksyun.ks3.services.request.DeleteBucketPolicyRequest;
import com.ksyun.ks3.services.request.DeleteBucketQuotaRequest;
-import com.ksyun.ks3.services.request.DeleteBucketReplicationConfigRequest;
+import com.ksyun.ks3.services.request.DeleteBucketReplicationRequest;
import com.ksyun.ks3.services.request.DeleteBucketRequest;
import com.ksyun.ks3.services.request.DeleteObjectRequest;
-import com.ksyun.ks3.services.request.adp.GetAdpRequest;
+import com.ksyun.ks3.services.request.GetBucketQuotaRequest;
+import com.ksyun.ks3.services.request.PutBucketQuotaRequest;
+import com.ksyun.ks3.services.request.PutObjectFetchRequest;
+import com.ksyun.ks3.services.request.adp.GetObjectAdpRequest;
import com.ksyun.ks3.services.request.GetBucketACLRequest;
import com.ksyun.ks3.services.request.GetBucketPolicyRequest;
-import com.ksyun.ks3.services.request.GetBucketQuotaRequest;
-import com.ksyun.ks3.services.request.GetBucketReplicationConfigRequest;
+import com.ksyun.ks3.services.request.GetBucketReplicationRequest;
import com.ksyun.ks3.services.request.GetObjectACLRequest;
import com.ksyun.ks3.services.request.GetObjectRequest;
import com.ksyun.ks3.services.request.HeadBucketRequest;
@@ -80,16 +94,14 @@ import com.ksyun.ks3.services.request.Ks3HttpRequest;
import com.ksyun.ks3.services.request.ListBucketsRequest;
import com.ksyun.ks3.services.request.ListObjectsRequest;
import com.ksyun.ks3.services.request.ListPartsRequest;
-import com.ksyun.ks3.services.request.PutBuckePolicyRequest;
-import com.ksyun.ks3.services.request.PutBuckeQuotaRequest;
+import com.ksyun.ks3.services.request.PutBucketPolicyRequest;
import com.ksyun.ks3.services.request.PutBucketACLRequest;
-import com.ksyun.ks3.services.request.PutBucketReplicationConfigRequest;
+import com.ksyun.ks3.services.request.PutBucketReplicationRequest;
import com.ksyun.ks3.services.request.PutObjectACLRequest;
import com.ksyun.ks3.services.request.PutObjectRequest;
import com.ksyun.ks3.services.request.UploadPartRequest;
-import com.ksyun.ks3.services.request.adp.PutAdpRequest;
-import com.ksyun.ks3.services.request.object.PostObjectRequest;
-import com.ksyun.ks3.services.request.object.PutObjectFetchRequest;
+import com.ksyun.ks3.services.request.adp.PutObjectAdpRequest;
+import com.ksyun.ks3.services.request.PostObjectRequest;
import com.ksyun.ks3.services.request.tag.DeleteObjectTaggingRequest;
import com.ksyun.ks3.services.request.tag.GetObjectTaggingRequest;
import com.ksyun.ks3.services.request.tag.PutObjectTaggingRequest;
@@ -97,8 +109,8 @@ import com.ksyun.ks3.util.Base64;
import com.ksyun.ks3.util.ClientIllegalArgumentException;
import com.ksyun.ks3.util.ClientIllegalArgumentExceptionGenerator;
import com.ksyun.ks3.util.Constants;
+import com.ksyun.ks3.util.DateUtil;
import com.ksyun.ks3.util.StringUtils;
-import com.loopj.android.http.AsyncHttpResponseHandler;
import org.joda.time.DateTime;
@@ -106,7 +118,7 @@ public class Ks3Client implements Ks3 {
private Ks3ClientConfiguration clientConfiguration;
private String endpoint;
public Authorization auth;
- private Ks3HttpExector client = new Ks3HttpExector();
+ private Ks3HttpExecutor client = new Ks3HttpExecutor();
private Context context = null;
public AuthListener authListener = null;
@@ -129,6 +141,7 @@ public class Ks3Client implements Ks3 {
/**
* 使用sts形式
+ *
* @param accesskeyid
* @param accesskeysecret
* @param securityToken
@@ -205,36 +218,36 @@ public class Ks3Client implements Ks3 {
/* Service */
@Override
- public void listBuckets(ListBucketsResponceHandler resultHandler) {
+ public void listBuckets(ListBucketsResponseHandler resultHandler) {
listBuckets(new ListBucketsRequest(), resultHandler);
}
@Override
public void listBuckets(ListBucketsRequest request,
- ListBucketsResponceHandler resultHandler) {
+ ListBucketsResponseHandler resultHandler) {
this.listBuckets(request, resultHandler, true);
}
private void listBuckets(ListBucketsRequest request,
- ListBucketsResponceHandler resultHandler, boolean isUseAsyncMode) {
+ ListBucketsResponseHandler resultHandler, boolean isUseAsyncMode) {
invoke(auth, request, resultHandler, isUseAsyncMode);
}
/* Bucket ACL */
@Override
public void getBucketACL(String bucketName,
- GetBucketACLResponceHandler resultHandler) {
+ GetBucketACLResponseHandler resultHandler) {
this.getBucketACL(new GetBucketACLRequest(bucketName), resultHandler);
}
@Override
public void getBucketACL(GetBucketACLRequest request,
- GetBucketACLResponceHandler resultHandler) {
+ GetBucketACLResponseHandler resultHandler) {
this.getBucketACL(request, resultHandler, true);
}
private void getBucketACL(GetBucketACLRequest request,
- GetBucketACLResponceHandler resultHandler, boolean isUseAsyncMode) {
+ GetBucketACLResponseHandler resultHandler, boolean isUseAsyncMode) {
this.invoke(auth, request, resultHandler, isUseAsyncMode);
}
@@ -337,49 +350,49 @@ public class Ks3Client implements Ks3 {
@Override
public void createBucket(String bucketname,
- CreateBucketResponceHandler resultHandler) {
+ CreateBucketResponseHandler resultHandler) {
this.createBucket(new CreateBucketRequest(bucketname), resultHandler);
}
@Override
public void createBucket(String bucketname, AccessControlList list,
- CreateBucketResponceHandler resultHandler) {
+ CreateBucketResponseHandler resultHandler) {
this.createBucket(new CreateBucketRequest(bucketname, list),
resultHandler);
}
@Override
public void createBucket(String bucketname, CannedAccessControlList list,
- CreateBucketResponceHandler resultHandler) {
+ CreateBucketResponseHandler resultHandler) {
this.createBucket(new CreateBucketRequest(bucketname, list),
resultHandler);
}
@Override
public void createBucket(CreateBucketRequest request,
- CreateBucketResponceHandler resultHandler) {
+ CreateBucketResponseHandler resultHandler) {
this.createBucket(request, resultHandler, true);
}
private void createBucket(CreateBucketRequest request,
- CreateBucketResponceHandler resultHandler, boolean isUseAsyncMode) {
+ CreateBucketResponseHandler resultHandler, boolean isUseAsyncMode) {
invoke(auth, request, resultHandler, isUseAsyncMode);
}
@Override
public void deleteBucket(String bucketname,
- DeleteBucketResponceHandler resultHandler) {
+ DeleteBucketResponseHandler resultHandler) {
this.deleteBucket(new DeleteBucketRequest(bucketname), resultHandler);
}
@Override
public void deleteBucket(DeleteBucketRequest request,
- DeleteBucketResponceHandler resultHandler) {
+ DeleteBucketResponseHandler resultHandler) {
this.deleteBucket(request, resultHandler, true);
}
private void deleteBucket(DeleteBucketRequest request,
- DeleteBucketResponceHandler resultHandler, boolean isUseAsyncMode) {
+ DeleteBucketResponseHandler resultHandler, boolean isUseAsyncMode) {
invoke(auth, request, resultHandler, isUseAsyncMode);
}
@@ -410,18 +423,18 @@ public class Ks3Client implements Ks3 {
@Override
public void deleteObject(String bucketname, String key,
- DeleteObjectRequestHandler handler) {
+ DeleteObjectResponseHandler handler) {
this.deleteObject(new DeleteObjectRequest(bucketname, key), handler);
}
@Override
public void deleteObject(DeleteObjectRequest request,
- DeleteObjectRequestHandler handler) {
+ DeleteObjectResponseHandler handler) {
this.deleteObject(request, handler, true);
}
private void deleteObject(DeleteObjectRequest request,
- DeleteObjectRequestHandler handler, boolean isUseAsyncMode) {
+ DeleteObjectResponseHandler handler, boolean isUseAsyncMode) {
this.invoke(auth, request, handler, isUseAsyncMode);
}
@@ -443,13 +456,13 @@ public class Ks3Client implements Ks3 {
return this.invoke(auth, request, handler, isUseAsyncMode);
}
-
@Override
public Ks3HttpRequest putObject(String bucketname, String objectkey,
File file, PutObjectResponseHandler handler) {
return this.putObject(
new PutObjectRequest(bucketname, objectkey, file), handler);
}
+
@Override
public Ks3HttpRequest putObject(String bucketname, String objectkey,
File file, ObjectMetadata objectmeta,
@@ -465,7 +478,7 @@ public class Ks3Client implements Ks3 {
}
public Ks3HttpRequest putObject(PutObjectRequest request,
- PutObjectResponseHandler handler, boolean isUseAsyncMode) {
+ PutObjectResponseHandler handler, boolean isUseAsyncMode) {
return this.invoke(auth, request, handler, isUseAsyncMode);
}
@@ -533,20 +546,20 @@ public class Ks3Client implements Ks3 {
/* MultiUpload */
@Override
public void initiateMultipartUpload(String bucketname, String objectkey,
- InitiateMultipartUploadResponceHandler resultHandler) {
+ InitiateMultipartUploadResponseHandler resultHandler) {
this.initiateMultipartUpload(new InitiateMultipartUploadRequest(
bucketname, objectkey), resultHandler);
}
@Override
public void initiateMultipartUpload(InitiateMultipartUploadRequest request,
- InitiateMultipartUploadResponceHandler resultHandler) {
+ InitiateMultipartUploadResponseHandler resultHandler) {
this.initiateMultipartUpload(request, resultHandler, true);
}
private void initiateMultipartUpload(
InitiateMultipartUploadRequest request,
- InitiateMultipartUploadResponceHandler resultHandler,
+ InitiateMultipartUploadResponseHandler resultHandler,
boolean isUseAsyncMode) {
this.invoke(auth, request, resultHandler, isUseAsyncMode);
}
@@ -554,19 +567,19 @@ public class Ks3Client implements Ks3 {
@Override
public void uploadPart(String bucketName, String key, String uploadId,
File file, long offset, int partNumber, long partSize,
- UploadPartResponceHandler resultHandler) {
+ UploadPartResponseHandler resultHandler) {
this.uploadPart(new UploadPartRequest(bucketName, key, uploadId, file,
offset, partNumber, partSize), resultHandler);
}
@Override
public void uploadPart(UploadPartRequest request,
- UploadPartResponceHandler resultHandler) {
+ UploadPartResponseHandler resultHandler) {
this.uploadPart(request, resultHandler, true);
}
private void uploadPart(UploadPartRequest request,
- UploadPartResponceHandler resultHandler, boolean isUseAsyncMode) {
+ UploadPartResponseHandler resultHandler, boolean isUseAsyncMode) {
this.invoke(auth, request, resultHandler, isUseAsyncMode);
}
@@ -644,74 +657,78 @@ public class Ks3Client implements Ks3 {
}
@Override
- public void putBucketCrr(PutBucketReplicationConfigRequest request,
- PutBucketReplicationResponceHandler handler) {
+ public void putBucketCrr(PutBucketReplicationRequest request,
+ PutBucketReplicationResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
@Override
- public void getBucketCrr(GetBucketReplicationConfigRequest request,
- GetBucketReplicationConfigResponceHandler handler) {
+ public void getBucketCrr(GetBucketReplicationRequest request,
+ GetBucketReplicationResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
@Override
- public void deleteBucketCrr(DeleteBucketReplicationConfigRequest request,
- DeleteBucketReplicationConfigResponceHandler handler) {
+ public void deleteBucketCrr(DeleteBucketReplicationRequest request,
+ DeleteBucketReplicationResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
- public void putBucketPolicy(PutBuckePolicyRequest request,
- Ks3HttpResponceHandler handler) {
+ public void putBucketPolicy(PutBucketPolicyRequest request,
+ Ks3HttpResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
public void getBucketPolicy(GetBucketPolicyRequest request,
- Ks3HttpResponceHandler handler) {
+ Ks3HttpResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
public void deleteBucketPolicy(DeleteBucketPolicyRequest request,
- Ks3HttpResponceHandler handler) {
+ Ks3HttpResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
- public void putBucketQuota(PutBuckeQuotaRequest request,
- Ks3HttpResponceHandler handler) {
+
+ public void putBucketQuota(PutBucketQuotaRequest request,
+ Ks3HttpResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
public void getBucketQuota(GetBucketQuotaRequest request,
- Ks3HttpResponceHandler handler) {
+ Ks3HttpResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
public void deleteBucketQuota(DeleteBucketQuotaRequest request,
- Ks3HttpResponceHandler handler) {
+ Ks3HttpResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
- public void putAdpTask(PutAdpRequest request, Ks3HttpResponceHandler handler) {
+ public void putAdpTask(PutObjectAdpRequest request, Ks3HttpResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
- public void getAdpTask(GetAdpRequest request,Ks3HttpResponceHandler handler){
+ public void getAdpTask(GetObjectAdpRequest request, Ks3HttpResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
- public void putObjectTag(PutObjectTaggingRequest request, Ks3HttpResponceHandler handler) {
+ public void putObjectTag(PutObjectTaggingRequest request, PutObjectTaggingResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
- public void getObjectTag(GetObjectTaggingRequest request, GetObjectTaggingResponseHandler handler){
+
+ public void getObjectTag(GetObjectTaggingRequest request, GetObjectTaggingResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
- public void deleteObjectTag(DeleteObjectTaggingRequest request,
- Ks3HttpResponceHandler handler) {
+
+ public void deleteObjectTag(DeleteObjectTaggingRequest request, DeleteObjectTaggingResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
- public void postObject(PostObjectRequest request, Ks3HttpResponceHandler handler) {
+
+ public void postObject(PostObjectRequest request, Ks3HttpResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
- public void putObjectFetch(PutObjectFetchRequest request, Ks3HttpResponceHandler handler) {
+
+ public void putObjectFetch(PutObjectFetchRequest request, PutObjectFetchResponseHandler handler) {
this.invoke(auth, request, handler, true);
}
@@ -731,32 +748,32 @@ public class Ks3Client implements Ks3 {
}
public PostObjectFormFields getObjectFormFields(String bucket, String filename,
- Map postFormData, List unknowValueFormFiled) throws Ks3ClientException {
- if(StringUtils.isBlank(bucket))
+ Map postFormData, List unknowValueFormFiled) throws Ks3ClientException {
+ if (StringUtils.isBlank(bucket))
throw ClientIllegalArgumentExceptionGenerator.notNull("bucket");
- if(postFormData==null)
- postFormData = new HashMap();
- if(unknowValueFormFiled==null)
+ if (postFormData == null)
+ postFormData = new HashMap();
+ if (unknowValueFormFiled == null)
unknowValueFormFiled = new ArrayList();
- postFormData.put("bucket",bucket);
+ postFormData.put("bucket", bucket);
PostPolicy policy = new PostPolicy();
//签名将在五小时后过期
- policy.setExpiration(DateUtils.convertDate2Str(new DateTime().plusHours(5).toDate(), DateUtils.DATETIME_PROTOCOL.ISO8861));
+ policy.setExpiration(DateUtil.convertDate2Str(new DateTime().plusHours(5).toDate(), DateUtil.DATETIME_PROTOCOL.ISO8861));
- for(Map.Entry entry:postFormData.entrySet()){
- if(!Constants.postFormIgnoreFields.contains(entry.getKey())){
+ for (Map.Entry entry : postFormData.entrySet()) {
+ if (!Constants.postFormIgnoreFields.contains(entry.getKey())) {
PostPolicyCondition condition = new PostPolicyCondition();
condition.setMatchingType(PostPolicyCondition.MatchingType.eq);
- condition.setParamA("$"+entry.getKey());
+ condition.setParamA("$" + entry.getKey());
condition.setParamB(entry.getValue().replace("${filename}", filename));
policy.getConditions().add(condition);
}
}
- for(String field:unknowValueFormFiled){
- if(!Constants.postFormIgnoreFields.contains(field)){
+ for (String field : unknowValueFormFiled) {
+ if (!Constants.postFormIgnoreFields.contains(field)) {
PostPolicyCondition condition = new PostPolicyCondition();
condition.setMatchingType(PostPolicyCondition.MatchingType.startsWith);
- condition.setParamA("$"+field);
+ condition.setParamA("$" + field);
condition.setParamB("");
policy.getConditions().add(condition);
}
@@ -766,26 +783,26 @@ public class Ks3Client implements Ks3 {
public PostObjectFormFields postObject(PostPolicy policy)
throws Ks3ClientException {
- Map policyMap = new HashMap();
+ Map policyMap = new HashMap();
policyMap.put("expiration", policy.getExpiration());
List> conditions = new ArrayList>();
- for(PostPolicyCondition condition : policy.getConditions()){
+ for (PostPolicyCondition condition : policy.getConditions()) {
List conditionList = new ArrayList();
- if(condition.getMatchingType()!= PostPolicyCondition.MatchingType.contentLengthRange){
- if(!condition.getParamA().startsWith("$")){
- condition.setParamA("$"+condition.getParamA());
+ if (condition.getMatchingType() != PostPolicyCondition.MatchingType.contentLengthRange) {
+ if (!condition.getParamA().startsWith("$")) {
+ condition.setParamA("$" + condition.getParamA());
}
- }else{
- if(!StringUtils.checkLong(condition.getParamA())||!StringUtils.checkLong(condition.getParamB())){
+ } else {
+ if (!StringUtils.checkLong(condition.getParamA()) || !StringUtils.checkLong(condition.getParamB())) {
throw new ClientIllegalArgumentException("contentLengthRange匹配规则的参数A和参数B都应该是Long型");
}
}
conditionList.add(condition.getMatchingType().toString());
//表单中的项是忽略大小写的
- if(condition.getMatchingType()!= PostPolicyCondition.MatchingType.contentLengthRange&&!Constants.postFormUnIgnoreCase.contains(condition.getParamA().substring(1))){
+ if (condition.getMatchingType() != PostPolicyCondition.MatchingType.contentLengthRange && !Constants.postFormUnIgnoreCase.contains(condition.getParamA().substring(1))) {
conditionList.add(condition.getParamA().toLowerCase());
- }else{
+ } else {
conditionList.add(condition.getParamA());
}
conditionList.add(condition.getParamB());
@@ -801,19 +818,17 @@ public class Ks3Client implements Ks3 {
try {
fields.setSignature(AuthUtils.calcSignature(auth.getAccessKeySecret(), policyBase64));
} catch (SignatureException e) {
- throw new Ks3ClientException("计算签名出错",e);
+ throw new Ks3ClientException("计算签名出错", e);
}
return fields;
}
@Override
public void pause(Context context) {
- client.pause(context);
}
@Override
public void cancel(Context context) {
- client.cancel(context);
}
@Override
@@ -822,468 +837,499 @@ public class Ks3Client implements Ks3 {
}
@Override
- public ArrayList syncListBuckets() throws Throwable {
- final ArrayList list = new ArrayList();
+ public ListBucketsResult syncListBuckets() throws Ks3ClientException, Ks3ServiceException {
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
- final Throwable error = new Throwable();
this.listBuckets(new ListBucketsRequest(),
- new ListBucketsResponceHandler() {
+ new ListBucketsResponseHandler() {
@Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders,
- ArrayList resultList) {
- list.addAll(resultList);
+ public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
+ public void onFailure(ListBucketsRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
+ }
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
}
- return list;
+
+ return syncResult.getResult();
}
@Override
- public AccessControlPolicy syncGetBucketACL(String bucketName)
- throws Throwable {
+ public GetBucketACLResult syncGetBucketACL(String bucketName)
+ throws Ks3ClientException, Ks3ServiceException {
GetBucketACLRequest request = new GetBucketACLRequest(bucketName);
return this.syncGetBucketACL(request);
}
@Override
- public AccessControlPolicy syncGetBucketACL(GetBucketACLRequest request)
- throws Throwable {
+ public GetBucketACLResult syncGetBucketACL(GetBucketACLRequest request)
+ throws Ks3ClientException, Ks3ServiceException {
- final AccessControlPolicy policy = new AccessControlPolicy();
- final Throwable error = new Throwable();
- this.getBucketACL(request, new GetBucketACLResponceHandler() {
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
- @Override
- public void onSuccess(int statesCode, Header[] responceHeaders,
- AccessControlPolicy accessControlPolicy) {
- policy.setAccessControlList(accessControlPolicy
- .getAccessControlList());
- policy.setGrants(accessControlPolicy.getGrants());
- policy.setOwner(accessControlPolicy.getOwner());
+ this.getBucketACL(request, new GetBucketACLResponseHandler() {
+ @Override
+ public void onSuccess(GetBucketACLRequest request, GetBucketACLResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onFailure(int statesCode, Ks3Error kseError,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
+ public void onFailure(GetBucketACLRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
}
- return policy;
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
+ }
+
+ return syncResult.getResult();
}
@Override
- public void syncPutBucketACL(String bucketName,
- AccessControlList accessControlList) throws Throwable {
+ public PutBucketACLResult syncPutBucketACL(String bucketName,
+ AccessControlList accessControlList) throws Ks3ClientException, Ks3ServiceException {
PutBucketACLRequest request = new PutBucketACLRequest(bucketName,
accessControlList);
- this.syncPutBucketACL(request);
+ return this.syncPutBucketACL(request);
}
@Override
- public void syncPutBucketACL(String bucketName,
- CannedAccessControlList accessControlList) throws Throwable {
+ public PutBucketACLResult syncPutBucketACL(String bucketName,
+ CannedAccessControlList accessControlList) throws Ks3ClientException, Ks3ServiceException {
PutBucketACLRequest request = new PutBucketACLRequest(bucketName,
accessControlList);
- this.syncPutBucketACL(request);
+ return this.syncPutBucketACL(request);
}
- public void syncPutBucketACL(PutBucketACLRequest request) throws Throwable {
+ public PutBucketACLResult syncPutBucketACL(PutBucketACLRequest request) throws Ks3ClientException, Ks3ServiceException {
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
- final Throwable error = new Throwable();
this.putBucketACL(request, new PutBucketACLResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders) {
+ public void onSuccess(PutBucketACLRequest request, PutBucketACLResult result) {
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
+ public void onFailure(PutBucketACLRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
}
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
+ }
+
+ return syncResult.getResult();
}
@Override
- public void syncPutObjectACL(String bucketName, String objectKey,
- CannedAccessControlList accessControlList) throws Throwable {
+ public PutObjectACLResult syncPutObjectACL(String bucketName, String objectKey,
+ CannedAccessControlList accessControlList) throws Ks3ClientException, Ks3ServiceException {
PutObjectACLRequest request = new PutObjectACLRequest(bucketName,
objectKey, accessControlList);
- this.syncPutObjectACL(request);
+ return this.syncPutObjectACL(request);
}
@Override
- public void syncPutObjectACL(String bucketName, String objectKey,
- AccessControlList accessControlList) throws Throwable {
+ public PutObjectACLResult syncPutObjectACL(String bucketName, String objectKey,
+ AccessControlList accessControlList) throws Ks3ClientException, Ks3ServiceException {
PutObjectACLRequest request = new PutObjectACLRequest(bucketName,
objectKey, accessControlList);
- this.syncPutObjectACL(request);
+ return this.syncPutObjectACL(request);
}
@Override
- public void syncPutObjectACL(PutObjectACLRequest request) throws Throwable {
+ public PutObjectACLResult syncPutObjectACL(PutObjectACLRequest request) throws Ks3ClientException, Ks3ServiceException {
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
- final Throwable error = new Throwable();
this.putObjectACL(request, new PutObjectACLResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders) {
-
+ public void onSuccess(PutObjectACLRequest request, PutObjectACLResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
+ public void onFailure(PutObjectACLRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
}
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
+ }
+
+ return syncResult.getResult();
}
@Override
- public AccessControlPolicy syncGetObjectACL(String bucketName,
- String objectKey) throws Throwable {
+ public GetObjectACLResult syncGetObjectACL(String bucketName,
+ String objectKey) throws Ks3ClientException, Ks3ServiceException {
GetObjectACLRequest request = new GetObjectACLRequest(bucketName,
objectKey);
return this.syncGetObjectACL(request);
}
@Override
- public AccessControlPolicy syncGetObjectACL(GetObjectACLRequest request)
- throws Throwable {
+ public GetObjectACLResult syncGetObjectACL(GetObjectACLRequest request)
+ throws Ks3ClientException, Ks3ServiceException {
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
- final AccessControlPolicy policy = new AccessControlPolicy();
- final Throwable error = new Throwable();
this.getObjectACL(request, new GetObjectACLResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders,
- AccessControlPolicy accessControlPolicy) {
- policy.setAccessControlList(accessControlPolicy
- .getAccessControlList());
- policy.setGrants(accessControlPolicy.getGrants());
- policy.setOwner(accessControlPolicy.getOwner());
-
+ public void onSuccess(GetObjectACLRequest request, GetObjectACLResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
+ public void onFailure(GetObjectACLRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
+ }
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
}
- return policy;
+
+ return syncResult.getResult();
}
@Override
- public void syncHeadBucket(String bucketName) throws Throwable {
+ public HeadBucketResult syncHeadBucket(String bucketName) throws Ks3ClientException, Ks3ServiceException {
HeadBucketRequest request = new HeadBucketRequest(bucketName);
- this.syncHeadBucket(request);
+ return this.syncHeadBucket(request);
}
@Override
- public void syncHeadBucket(HeadBucketRequest request) throws Throwable {
+ public HeadBucketResult syncHeadBucket(HeadBucketRequest request) throws Ks3ClientException, Ks3ServiceException {
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
- final Throwable error = new Throwable();
this.headBucket(request, new HeadBucketResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders) {
-
+ public void onSuccess(HeadBucketRequest request, HeadBucketResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
+ public void onFailure(HeadBucketRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
}
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
+ }
+
+ return syncResult.getResult();
}
@Override
- public void syncCreateBucket(String bucketName) throws Throwable {
+ public CreateBucketResult syncCreateBucket(String bucketName) throws Ks3ClientException, Ks3ServiceException {
CreateBucketRequest request = new CreateBucketRequest(bucketName);
- this.syncCreateBucket(request);
+ return this.syncCreateBucket(request);
}
@Override
- public void syncCreateBucket(String bucketName,
- CannedAccessControlList accessControlList) throws Throwable {
+ public CreateBucketResult syncCreateBucket(String bucketName,
+ CannedAccessControlList accessControlList) throws Ks3ClientException, Ks3ServiceException {
CreateBucketRequest request = new CreateBucketRequest(bucketName,
accessControlList);
- this.syncCreateBucket(request);
+ return this.syncCreateBucket(request);
}
@Override
- public void syncCreateBucket(String bucketName,
- AccessControlList accessControlList) throws Throwable {
+ public CreateBucketResult syncCreateBucket(String bucketName,
+ AccessControlList accessControlList) throws Ks3ClientException, Ks3ServiceException {
CreateBucketRequest request = new CreateBucketRequest(bucketName,
accessControlList);
- this.syncCreateBucket(request);
+ return this.syncCreateBucket(request);
}
@Override
- public void syncCreateBucket(CreateBucketRequest request) throws Throwable {
+ public CreateBucketResult syncCreateBucket(CreateBucketRequest request) throws Ks3ClientException, Ks3ServiceException {
- final Throwable error = new Throwable();
- this.createBucket(request, new CreateBucketResponceHandler() {
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
+ this.createBucket(request, new CreateBucketResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders) {
-
+ public void onSuccess(CreateBucketRequest request, CreateBucketResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
+ public void onFailure(CreateBucketRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
+ }
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
}
+
+ return syncResult.getResult();
}
@Override
- public void syncDeleteBucket(String bucketName) throws Throwable {
+ public DeleteBucketResult syncDeleteBucket(String bucketName) throws Ks3ClientException, Ks3ServiceException {
DeleteBucketRequest request = new DeleteBucketRequest(bucketName);
- this.syncDeleteBucket(request);
+ return this.syncDeleteBucket(request);
}
@Override
- public void syncDeleteBucket(DeleteBucketRequest request) throws Throwable {
+ public DeleteBucketResult syncDeleteBucket(DeleteBucketRequest request) throws Ks3ClientException, Ks3ServiceException {
- final Throwable error = new Throwable();
- this.deleteBucket(request, new DeleteBucketResponceHandler() {
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
+ this.deleteBucket(request, new DeleteBucketResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders) {
-
+ public void onSuccess(DeleteBucketRequest request, DeleteBucketResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
-
+ public void onFailure(DeleteBucketRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
}
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
+ }
+
+ return syncResult.getResult();
}
@Override
- public ObjectListing syncListObjects(String bucketName) throws Throwable {
+ public ListObjectsResult syncListObjects(String bucketName) throws Ks3ClientException, Ks3ServiceException {
ListObjectsRequest request = new ListObjectsRequest(bucketName);
return syncListObjects(request);
}
@Override
- public ObjectListing syncListObjects(String bucketName, String prefix)
- throws Throwable {
+ public ListObjectsResult syncListObjects(String bucketName, String prefix)
+ throws Ks3ClientException, Ks3ServiceException {
ListObjectsRequest request = new ListObjectsRequest(bucketName, prefix);
return syncListObjects(request);
}
@Override
- public ObjectListing syncListObjects(ListObjectsRequest request)
- throws Throwable {
+ public ListObjectsResult syncListObjects(ListObjectsRequest request)
+ throws Ks3ClientException, Ks3ServiceException {
- final ObjectListing listing = new ObjectListing();
- final Throwable error = new Throwable();
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
this.listObjects(request, new ListObjectsResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders,
- ObjectListing objectListing) {
- listing.setBucketName(objectListing.getBucketName());
- listing.setCommonPrefixes(objectListing.getCommonPrefixes());
- listing.setDelimiter(objectListing.getDelimiter());
- listing.setMarker(objectListing.getMarker());
- listing.setMaxKeys(objectListing.getMaxKeys());
- listing.setNextMarker(objectListing.getNextMarker());
- listing.setObjectSummaries(objectListing.getObjectSummaries());
- listing.setPrefix(objectListing.getPrefix());
-
+ public void onSuccess(ListObjectsRequest request, ListObjectsResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
+ public void onFailure(ListObjectsRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
+ }
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
}
- return listing;
+
+ return syncResult.getResult();
}
@Override
- public void syncDeleteObject(String bucketName, String objectKey)
- throws Throwable {
+ public DeleteObjectResult syncDeleteObject(String bucketName, String objectKey)
+ throws Ks3ClientException, Ks3ServiceException {
DeleteObjectRequest request = new DeleteObjectRequest(bucketName,
objectKey);
- this.syncDeleteObject(request);
+ return this.syncDeleteObject(request);
}
@Override
- public void syncDeleteObject(DeleteObjectRequest request) throws Throwable {
+ public DeleteObjectResult syncDeleteObject(DeleteObjectRequest request) throws Ks3ClientException, Ks3ServiceException {
- final Throwable error = new Throwable();
- this.deleteObject(request, new DeleteObjectRequestHandler() {
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
+ this.deleteObject(request, new DeleteObjectResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders) {
-
+ public void onSuccess(DeleteObjectRequest request, DeleteObjectResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
+ public void onFailure(DeleteObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
+ }
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
}
+
+ return syncResult.getResult();
}
@Override
public HeadObjectResult syncHeadObject(String bucketName, String objectKey)
- throws Throwable {
+ throws Ks3ClientException, Ks3ServiceException {
HeadObjectRequest request = new HeadObjectRequest(bucketName, objectKey);
return this.syncHeadObject(request);
}
@Override
public HeadObjectResult syncHeadObject(HeadObjectRequest request)
- throws Throwable {
+ throws Ks3ClientException, Ks3ServiceException {
- final HeadObjectResult result = new HeadObjectResult();
- final Throwable error = new Throwable();
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
this.headObject(request, new HeadObjectResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders,
- HeadObjectResult headObjectResult) {
- result.setETag(headObjectResult.getETag());
- result.setLastmodified(headObjectResult.getLastmodified());
- result.setObjectMetadata(headObjectResult.getObjectMetadata());
-
+ public void onSuccess(HeadObjectRequest request, HeadObjectResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
-
+ public void onFailure(HeadObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
}
- return result;
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
+ }
+
+ return syncResult.getResult();
}
@Override
- public CopyResult syncCopyObject(String destinationBucket,
- String destinationObject, String sourceBucket, String sourceKey)
- throws Throwable {
+ public CopyObjectResult syncCopyObject(String destinationBucket,
+ String destinationObject, String sourceBucket, String sourceKey)
+ throws Ks3ClientException, Ks3ServiceException {
CopyObjectRequest request = new CopyObjectRequest(destinationBucket,
destinationObject, sourceBucket, sourceKey);
return this.syncCopyObject(request);
}
@Override
- public CopyResult syncCopyObject(String destinationBucket,
- String destinationObject, String sourceBucket, String sourceKey,
- CannedAccessControlList accessControlList) throws Throwable {
+ public CopyObjectResult syncCopyObject(String destinationBucket,
+ String destinationObject, String sourceBucket, String sourceKey,
+ CannedAccessControlList accessControlList) throws Ks3ClientException, Ks3ServiceException {
CopyObjectRequest request = new CopyObjectRequest(destinationBucket,
destinationObject, sourceBucket, sourceKey, accessControlList);
return this.syncCopyObject(request);
}
@Override
- public CopyResult syncCopyObject(String destinationBucket,
- String destinationObject, String sourceBucket, String sourceKey,
- AccessControlList accessControlList) throws Throwable {
+ public CopyObjectResult syncCopyObject(String destinationBucket,
+ String destinationObject, String sourceBucket, String sourceKey,
+ AccessControlList accessControlList) throws Ks3ClientException, Ks3ServiceException {
CopyObjectRequest request = new CopyObjectRequest(destinationBucket,
destinationObject, sourceBucket, sourceKey, accessControlList);
return this.syncCopyObject(request);
}
@Override
- public CopyResult syncCopyObject(CopyObjectRequest request)
- throws Throwable {
+ public CopyObjectResult syncCopyObject(CopyObjectRequest request)
+ throws Ks3ClientException, Ks3ServiceException {
- final CopyResult copyResult = new CopyResult();
- final Throwable error = new Throwable();
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
this.copyObject(request, new CopyObjectResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders,
- CopyResult result) {
- copyResult.setETag(result.getETag());
- copyResult.setLastModified(result.getLastModified());
-
+ public void onSuccess(CopyObjectRequest request, CopyObjectResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
+ public void onFailure(CopyObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
+ }
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
}
- return copyResult;
+
+ return syncResult.getResult();
}
@Override
public InitiateMultipartUploadResult syncInitiateMultipartUpload(
- String bucketName, String objectKey) throws Throwable {
+ String bucketName, String objectKey) throws Ks3ClientException, Ks3ServiceException {
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(
bucketName, objectKey);
return this.syncInitiateMultipartUpload(request);
@@ -1291,40 +1337,39 @@ public class Ks3Client implements Ks3 {
@Override
public InitiateMultipartUploadResult syncInitiateMultipartUpload(
- InitiateMultipartUploadRequest request) throws Throwable {
+ InitiateMultipartUploadRequest request) throws Ks3ClientException, Ks3ServiceException {
- final InitiateMultipartUploadResult initResult = new InitiateMultipartUploadResult();
- final Throwable error = new Throwable();
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
this.initiateMultipartUpload(request,
- new InitiateMultipartUploadResponceHandler() {
+ new InitiateMultipartUploadResponseHandler() {
@Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders,
- InitiateMultipartUploadResult result) {
- initResult.setBucket(result.getBucket());
- initResult.setKey(result.getKey());
- initResult.setUploadId(result.getUploadId());
-
+ public void onSuccess(InitiateMultipartUploadRequest request, InitiateMultipartUploadResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
+ public void onFailure(InitiateMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
+ }
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
}
- return initResult;
+
+ return syncResult.getResult();
}
@Override
public CompleteMultipartUploadResult syncCompleteMultipartUpload(
String bucketName, String objectKey, String uploadId,
- List partETags) throws Throwable {
+ List partETags) throws Ks3ClientException, Ks3ServiceException {
CompleteMultipartUploadRequest request = new CompleteMultipartUploadRequest(
bucketName, objectKey, uploadId, partETags);
return this.syncCompleteMultipartUpload(request);
@@ -1332,7 +1377,7 @@ public class Ks3Client implements Ks3 {
@Override
public CompleteMultipartUploadResult syncCompleteMultipartUpload(
- ListPartsResult result) throws Throwable {
+ ListPartsResult result) throws Ks3ClientException, Ks3ServiceException {
CompleteMultipartUploadRequest request = new CompleteMultipartUploadRequest(
result);
return this.syncCompleteMultipartUpload(request);
@@ -1340,77 +1385,78 @@ public class Ks3Client implements Ks3 {
@Override
public CompleteMultipartUploadResult syncCompleteMultipartUpload(
- CompleteMultipartUploadRequest request) throws Throwable {
+ CompleteMultipartUploadRequest request) throws Ks3ClientException, Ks3ServiceException {
- final CompleteMultipartUploadResult completeMultipartUploadResult = new CompleteMultipartUploadResult();
- final Throwable error = new Throwable();
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
this.completeMultipartUpload(request,
new CompleteMultipartUploadResponseHandler() {
@Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders,
- CompleteMultipartUploadResult result) {
- completeMultipartUploadResult.setBucket(result
- .getBucket());
- completeMultipartUploadResult.setKey(result.getKey());
- completeMultipartUploadResult.seteTag(result.geteTag());
- completeMultipartUploadResult.setLocation(result
- .getLocation());
-
+ public void onSuccess(CompleteMultipartUploadRequest request, CompleteMultipartUploadResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
+ public void onFailure(CompleteMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
+ }
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
}
- return completeMultipartUploadResult;
+
+ return syncResult.getResult();
}
@Override
- public void syncAbortMultipartUpload(AbortMultipartUploadRequest request)
- throws Throwable {
+ public AbortMultipartUploadResult syncAbortMultipartUpload(AbortMultipartUploadRequest request)
+ throws Ks3ClientException, Ks3ServiceException {
+
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
- final Throwable error = new Throwable();
this.abortMultipartUpload(request,
new AbortMultipartUploadResponseHandler() {
@Override
- public void onSuccess(int statesCode,
- Header[] responceHeaders) {
-
+ public void onSuccess(AbortMultipartUploadRequest request, AbortMultipartUploadResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
-
+ public void onFailure(AbortMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
+ }
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
}
+
+ return syncResult.getResult();
}
@Override
- public void syncAbortMultipartUpload(String bucketname, String objectKey,
- String uploadId) throws Throwable {
+ public AbortMultipartUploadResult syncAbortMultipartUpload(String bucketname, String objectKey,
+ String uploadId) throws Ks3ClientException, Ks3ServiceException {
AbortMultipartUploadRequest request = new AbortMultipartUploadRequest(
bucketname, objectKey, uploadId);
- this.syncAbortMultipartUpload(request);
+ return this.syncAbortMultipartUpload(request);
}
@Override
public ListPartsResult syncListParts(String bucketName, String objectKey,
- String uploadId) throws Throwable {
+ String uploadId) throws Ks3ClientException, Ks3ServiceException {
ListPartsRequest request = new ListPartsRequest(bucketName, objectKey,
uploadId);
return this.syncListParts(request);
@@ -1418,7 +1464,7 @@ public class Ks3Client implements Ks3 {
@Override
public ListPartsResult syncListParts(String bucketName, String objectKey,
- String uploadId, int maxParts) throws Throwable {
+ String uploadId, int maxParts) throws Ks3ClientException, Ks3ServiceException {
ListPartsRequest request = new ListPartsRequest(bucketName, objectKey,
uploadId, maxParts);
return this.syncListParts(request);
@@ -1427,7 +1473,7 @@ public class Ks3Client implements Ks3 {
@Override
public ListPartsResult syncListParts(String bucketName, String objectKey,
String uploadId, int maxParts, int partNumberMarker)
- throws Throwable {
+ throws Ks3ClientException, Ks3ServiceException {
ListPartsRequest request = new ListPartsRequest(bucketName, objectKey,
uploadId, maxParts, partNumberMarker);
return this.syncListParts(request);
@@ -1435,68 +1481,48 @@ public class Ks3Client implements Ks3 {
@Override
public ListPartsResult syncListParts(ListPartsRequest request)
- throws Throwable {
- final ListPartsResult listPartsResult = new ListPartsResult();
- final Throwable error = new Throwable();
+ throws Ks3ClientException, Ks3ServiceException {
+
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
this.listParts(request, new ListPartsResponseHandler() {
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders,
- ListPartsResult result) {
- listPartsResult.setBucketname(result.getBucketname());
- listPartsResult.setEncodingType(result.getEncodingType());
- listPartsResult.setInitiator(result.getInitiator());
- listPartsResult.setKey(result.getKey());
- listPartsResult.setMaxParts(result.getMaxParts());
- listPartsResult.setNextPartNumberMarker(result
- .getNextPartNumberMarker());
- listPartsResult.setOwner(result.getOwner());
- listPartsResult.setPartNumberMarker(result
- .getPartNumberMarker());
- listPartsResult.setParts(result.getParts());
- listPartsResult.setUploadId(result.getUploadId());
+ public void onSuccess(ListPartsRequest request, ListPartsResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
-
+ public void onFailure(ListPartsRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
}, false);
- if (error.getCause() != null) {
- throw error;
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
}
- return listPartsResult;
- }
- @Override
- public void syncGetObject(GetObjectRequest request, File file,
- boolean append) throws Throwable {
- final Throwable error = new Throwable();
- this.getObject(request, new GetObjectResponseHandler(file, append) {
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
+ }
- @Override
- public void onTaskStart() {
+ return syncResult.getResult();
+ }
- }
+ @Override
+ public GetObjectResult syncGetObject(GetObjectRequest request, File file,
+ boolean append) throws Ks3ClientException, Ks3ServiceException {
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
+ this.getObject(request, new GetObjectResponseHandler(file, append) {
@Override
public void onTaskProgress(double progress) {
}
@Override
- public void onTaskFinish() {
-
- }
-
- @Override
- public void onTaskFailure(int paramInt, Ks3Error ks3Error,
- Header[] paramArrayOfHeader, Throwable paramThrowable,
- File paramFile) {
- error.initCause(paramThrowable);
+ public void onSuccess(GetObjectRequest request, GetObjectResult result) {
+ syncResult.setResult(result);
}
@Override
@@ -1505,120 +1531,124 @@ public class Ks3Client implements Ks3 {
}
@Override
- public void onTaskSuccess(int paramInt,
- Header[] paramArrayOfHeader, GetObjectResult getObjectResult) {
- // TODO Auto-generated method stub
-
+ public void onFailure(GetObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
- });
- if (error.getCause() != null) {
- throw error;
+ }, false);
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
+ }
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
}
+
+ return syncResult.getResult();
}
@Override
- public void syncGetObject(Context context, File file, boolean append,
- String bucketname, String key,
- GetObjectResponseHandler getObjectResponceHandler) throws Throwable {
+ public GetObjectResult syncGetObject(Context context, File file, boolean append,
+ String bucketname, String key,
+ GetObjectResponseHandler getObjectResponceHandler) throws Ks3ClientException, Ks3ServiceException {
GetObjectRequest request = new GetObjectRequest(bucketname, key);
- this.syncGetObject(request, file, append);
+ return this.syncGetObject(request, file, append);
}
@Override
- public void syncPutObject(String bucketname, String objectkey, File file)
- throws Throwable {
+ public PutObjectResult syncPutObject(String bucketname, String objectkey, File file)
+ throws Ks3ClientException, Ks3ServiceException {
PutObjectRequest request = new PutObjectRequest(bucketname, objectkey,
file);
- this.syncPutObject(request);
+ return this.syncPutObject(request);
}
@Override
- public void syncPutObject(String bucketname, String objectkey, File file,
- ObjectMetadata objectmeta) throws Throwable {
+ public PutObjectResult syncPutObject(String bucketname, String objectkey, File file,
+ ObjectMetadata objectmeta) throws Ks3ClientException, Ks3ServiceException {
PutObjectRequest request = new PutObjectRequest(bucketname, objectkey,
file, objectmeta);
- this.syncPutObject(request);
+ return this.syncPutObject(request);
}
@Override
- public void syncPutObject(PutObjectRequest request) throws Throwable {
- final Throwable error = new Throwable();
+ public PutObjectResult syncPutObject(PutObjectRequest request) throws Ks3ClientException, Ks3ServiceException {
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
this.putObject(request, new PutObjectResponseHandler() {
@Override
- public void onTaskProgress(double progress) {
-
+ public void onTaskSuccess(PutObjectRequest request, PutObjectResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onTaskSuccess(int statesCode, Header[] responceHeaders) {
+ public void onTaskProgress(double progress) {
}
@Override
- public void onTaskStart() {
-
+ public void onTaskFailure(PutObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
@Override
- public void onTaskFinish() {
+ public void onTaskCancel() {
}
+ }, false);
- @Override
- public void onTaskFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
- }
-
- @Override
- public void onTaskCancel() {
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
+ }
- }
- });
- if (error.getCause() != null) {
- throw error;
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
}
+
+ return syncResult.getResult();
}
@Override
- public PartETag syncUploadPart(String bucketName, String key,
- String uploadId, File file, long offset, int partNumber,
- long partSize) throws Throwable {
+ public UploadPartResult syncUploadPart(String bucketName, String key,
+ String uploadId, File file, long offset, int partNumber,
+ long partSize) throws Ks3ClientException, Ks3ServiceException {
UploadPartRequest request = new UploadPartRequest(bucketName, key,
uploadId, file, offset, partNumber, partSize);
return this.syncUploadPart(request);
}
@Override
- public PartETag syncUploadPart(UploadPartRequest request) throws Throwable {
- final Throwable error = new Throwable();
- final PartETag result = new PartETag();
- this.uploadPart(request, new UploadPartResponceHandler() {
+ public UploadPartResult syncUploadPart(UploadPartRequest request) throws Ks3ClientException, Ks3ServiceException {
+ final Ks3SyncResult syncResult = new Ks3SyncResult<>();
+ this.uploadPart(request, new UploadPartResponseHandler() {
@Override
- public void onTaskProgress(double progress) {
-
+ public void onSuccess(UploadPartRequest request, UploadPartResult result) {
+ syncResult.setResult(result);
}
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders,
- PartETag response) {
- result.seteTag(response.geteTag());
- result.setPartNumber(response.getPartNumber());
+ public void onFailure(UploadPartRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ syncResult.setClientException(clientException);
+ syncResult.setServiceException(serviceException);
}
@Override
- public void onFailure(int statesCode, Ks3Error ks3Error,
- Header[] responceHeaders, String response,
- Throwable paramThrowable) {
- error.initCause(paramThrowable);
+ public void onTaskProgress(double progress) {
+
}
- });
- if (error.getCause() != null) {
- throw error;
+ }, false);
+
+ if (syncResult.getClientException() != null) {
+ throw syncResult.getClientException();
+ }
+
+ if (syncResult.getServiceException() != null) {
+ throw syncResult.getServiceException();
}
- return result;
+
+ return syncResult.getResult();
}
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3ClientConfiguration.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3ClientConfiguration.java
index 13381fc84ccc045fb6debe72ff043d96514c73a1..ea9fa493e88608938092399553b9bc51a8152452 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3ClientConfiguration.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3ClientConfiguration.java
@@ -1,19 +1,14 @@
package com.ksyun.ks3.services;
import java.io.IOException;
+import java.security.KeyManagementException;
import java.security.KeyStore;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLException;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocket;
-
-import cz.msebera.android.httpclient.conn.ssl.SSLSocketFactory;
-import cz.msebera.android.httpclient.conn.ssl.X509HostnameVerifier;
-
public class Ks3ClientConfiguration {
@@ -42,8 +37,8 @@ public class Ks3ClientConfiguration {
private int maxRetrytime;
private int retryTimeOut;
private static Ks3ClientConfiguration instantce = null;
- private SSLSocketFactory sslSocketFactory = null;
-
+ private boolean retryOnConnectionFailure = false;
+ private boolean enableLog = false;
/**
* @deprecated domainMode is misleading in libraries. For the library package name use LIBRARY_PACKAGE_NAME
*/
@@ -79,8 +74,6 @@ public class Ks3ClientConfiguration {
public static Ks3ClientConfiguration getDefaultConfiguration() {
if (instantce == null) {
instantce = new Ks3ClientConfiguration();
- instantce.setConnectionTimeout(20000);
- instantce.setSocketTimeout(50000);
instantce.setMaxConnections(10);
instantce.setProxyHost(null);
instantce.setProxyUsername(null);
@@ -90,6 +83,7 @@ public class Ks3ClientConfiguration {
instantce.setRetryTimeOut(5000);
instantce.setUserAgent(DEFAULT_USER_AGENT);
instantce.setThreadPool(Executors.newCachedThreadPool());
+ instantce.setRetryOnConnectionFailure(false);
}
return instantce;
}
@@ -112,6 +106,7 @@ public class Ks3ClientConfiguration {
this.threadPool = other.threadPool;
this.pathStyleAccess = other.pathStyleAccess;
this.domainMode = other.domainMode;
+ this.retryOnConnectionFailure = other.retryOnConnectionFailure;
}
public int getMaxRetrytime() {
@@ -302,28 +297,32 @@ public class Ks3ClientConfiguration {
return protocol;
}
- public void setProtocol(PROTOCOL protocol) {
+ private void setProtocol(PROTOCOL protocol) {
this.protocol = protocol;
-
- try {
- KeyStore keystore = Ks3SSLSocketFactory.getKeystore();
- Ks3SSLSocketFactory factory = new Ks3SSLSocketFactory(keystore);
- factory.setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER);
- this.setSSLSocketFactory(factory);
- } catch (Exception e) {
- System.out.println(e);
- }
}
/**
- * ssl认证相关信息
- * @param factory
+ * 设置是否 Https 协议,默认为 Http
+ *
+ * @param isHttps 是否Https
*/
- public void setSSLSocketFactory(SSLSocketFactory factory) {
- this.sslSocketFactory = factory;
+ public void isHttps (boolean isHttps) {
+ this.setProtocol(isHttps ? PROTOCOL.https : PROTOCOL.http);
+ }
+
+ public boolean isRetryOnConnectionFailure() {
+ return retryOnConnectionFailure;
+ }
+
+ public void setRetryOnConnectionFailure(boolean retryOnConnectionFailure) {
+ this.retryOnConnectionFailure = retryOnConnectionFailure;
+ }
+
+ public boolean isEnableLog() {
+ return enableLog;
}
- public SSLSocketFactory getSSLSocketFactory () {
- return this.sslSocketFactory;
+ public void setEnableLog(boolean enableLog) {
+ this.enableLog = enableLog;
}
}
\ No newline at end of file
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3HttpExector.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3HttpExector.java
deleted file mode 100644
index e1aaa97ed4ef552cac358e3d53b3318b9944c8ea..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3HttpExector.java
+++ /dev/null
@@ -1,216 +0,0 @@
-package com.ksyun.ks3.services;
-
-import android.content.Context;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.ksyun.ks3.auth.AuthEvent;
-import com.ksyun.ks3.exception.Ks3ClientException;
-import com.ksyun.ks3.model.HttpMethod;
-import com.ksyun.ks3.model.acl.Authorization;
-import com.ksyun.ks3.services.request.Ks3HttpRequest;
-import com.ksyun.ks3.util.Constants;
-import com.loopj.android.http.AsyncHttpClient;
-import com.loopj.android.http.AsyncHttpResponseHandler;
-import com.loopj.android.http.RequestHandle;
-import com.loopj.android.http.RequestParams;
-
-import cz.msebera.android.httpclient.Header;
-
-public class Ks3HttpExector {
- private AsyncHttpClient client;
-
- public void invoke(Authorization auth, final Ks3HttpRequest request,
- final AsyncHttpResponseHandler resultHandler,
- Ks3ClientConfiguration clientConfiguration, final Context context,
- String endpoint, AuthListener authListener, Boolean isUseAsyncMode) {
- if(TextUtils.isEmpty(endpoint)){
- Log.e(Constants.LOG_TAG, "The endpoint is empty,do you call setEndpoint() after you create Ks3Client?");
- return;
- }
-
- // 如果是https判断是否添加了crt文件 如果没有则直接返回
- if (clientConfiguration != null && clientConfiguration.getProtocol() == Ks3ClientConfiguration.PROTOCOL.https) {
- if (clientConfiguration.getSSLSocketFactory() == null) {
- Log.e(Constants.LOG_TAG, "Because of current request is https, please set crt file, or check your log wheather has error.");
- return;
- }
- }
-
- /* Configure AsyncHttpClient */
- if (clientConfiguration != null) {
- if (isUseAsyncMode) {
- client = AsyncHttpClientFactory
- .getInstance(clientConfiguration);
- } else {
- client = SyncHttpClientFactory.getInstance(clientConfiguration);
- }
- } else {
- if (isUseAsyncMode) {
- client = AsyncHttpClientFactory.getInstance();
- } else {
- client = SyncHttpClientFactory.getInstance();
- }
- }
-
- request.setAuthorization(auth);
- //设置host
- if (request.getBucketname() == null || clientConfiguration.isPathStyleAccess() || clientConfiguration.getDomainMode()) {
- request.setEndpoint(endpoint);
- } else {
- request.setEndpoint(request.getBucketname() + "." + endpoint);
- }
-
- // 异步
- if (isUseAsyncMode) {
- // Token形式
- if (authListener != null) {
- request.setAuthListener(authListener);
- setUpRequsetInBackground(request, new Ks3AuthHandler() {
-
- @Override
- public void onSuccess(AuthEvent event) {
- doRequset(request, context, resultHandler);
- }
-
- @Override
- public void onFailure(AuthEvent event) {
- resultHandler.onFailure(0, null, null,
- new Ks3ClientException(event.getContent()));
- }
- }, resultHandler);
- }
- // AK&SK形式
- else {
- try {
- request.completeRequset(null, resultHandler);
- } catch (Ks3ClientException e) {
- resultHandler.onFailure(0, null, null, e);
- return;
- }
-
-
-
- doRequset(request, context, resultHandler);
- }
- }
- // 同步
- else {
- // Token形式
- if (authListener != null) {
- request.setAuthListener(authListener);
- Ks3AuthHandler ks3AuthHandler = new Ks3AuthHandler() {
-
- @Override
- public void onSuccess(AuthEvent event) {
- doRequset(request, context, resultHandler);
- }
-
- @Override
- public void onFailure(AuthEvent event) {
- resultHandler.onFailure(0, null, null,
- new Ks3ClientException(event.getContent()));
- }
- };
- try {
- request.completeRequset(ks3AuthHandler, resultHandler);
- } catch (Ks3ClientException e) {
- ks3AuthHandler.isNeedCalculateAuth = false;
- resultHandler.onFailure(0, null, null, e);
- return;
- }
- // AK&SK形式
- } else {
- try {
- request.completeRequset(null, resultHandler);
- } catch (Ks3ClientException e) {
- resultHandler.onFailure(0, null, null, e);
- return;
- }
- doRequset(request, context, resultHandler);
- }
- }
-
- }
-
- protected void doRequset(Ks3HttpRequest request, Context context,
- AsyncHttpResponseHandler resultHandler) {
- // For test
- LogShow(request);
- RequestHandle handler = null;
- Log.d(Constants.LOG_TAG, "requset url = "+ request.getUrl());
- switch (request.getHttpMethod()) {
- case GET:
- handler = client.get(context, request.getAsyncHttpRequestParam()
- .getUrl(), request.getAsyncHttpRequestParam().getHeader(),
- null, resultHandler);
- break;
- case POST:
- handler = client.post(context, request.getAsyncHttpRequestParam()
- .getUrl(), request.getAsyncHttpRequestParam().getHeader(),
- request.getEntity(), request.getContentType(),
- resultHandler);
- break;
- case PUT:
- handler = client.put(context, request.getAsyncHttpRequestParam()
- .getUrl(), request.getAsyncHttpRequestParam().getHeader(),
- request.getEntity(), request.getContentType(),
- resultHandler);
- break;
- case DELETE:
- handler = client.delete(context, request.getAsyncHttpRequestParam()
- .getUrl(), request.getAsyncHttpRequestParam().getHeader(),
- resultHandler);
- break;
- case HEAD:
- handler = client.head(context, request.getAsyncHttpRequestParam()
- .getUrl(), request.getAsyncHttpRequestParam().getHeader(),
- null, resultHandler);
- break;
- default:
- Log.e(Constants.LOG_TAG, "unsupport http method ! ");
- break;
- }
- request.setRequestHandler(handler);
- }
-
- private void setUpRequsetInBackground(final Ks3HttpRequest request,
- final Ks3AuthHandler ks3AuthHandler,
- final AsyncHttpResponseHandler resultHandler) {
- new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- request.completeRequset(ks3AuthHandler, resultHandler);
- } catch (Ks3ClientException e) {
- ks3AuthHandler.isNeedCalculateAuth = false;
- resultHandler.onFailure(0, null, null, e);
- }
- }
- }).start();
- }
-
- private void LogShow(Ks3HttpRequest request) {
- String url = request.getAsyncHttpRequestParam().getUrl();
- Header[] headers = request.getAsyncHttpRequestParam().getHeader();
- HttpMethod httpMethod = request.getHttpMethod();
-
- StringBuffer sb = new StringBuffer();
- sb.append("**url** " + url).append("\n");
- sb.append("**method** " + httpMethod.toString() + "\n");
- sb.append("**heads** ").append("\n");
- for (int i = 0; i < headers.length; i++) {
- sb.append(headers[i].getName()).append("=>").append(headers[i].getValue()).append("\n");
- }
- Log.e(Constants.LOG_TAG, sb.toString());
- }
-
- public void cancel(Context context) {
- client.cancelRequests(context, true);
- }
-
- public void pause(Context context) {
- client.cancelRequests(context, true);
- }
-
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3HttpExecutor.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3HttpExecutor.java
new file mode 100644
index 0000000000000000000000000000000000000000..f6990d31d6674d3e2fbd9775e8a71605d08b1558
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3HttpExecutor.java
@@ -0,0 +1,191 @@
+package com.ksyun.ks3.services;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.ksyun.ks3.auth.AuthEvent;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.model.HttpMethod;
+import com.ksyun.ks3.model.acl.Authorization;
+import com.ksyun.ks3.services.handler.AsyncHttpResponseHandler;
+import com.ksyun.ks3.services.request.GetObjectRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.Constants;
+import com.ksyun.ks3.util.ModelUtil;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import okhttp3.Call;
+import okhttp3.Headers;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+
+public class Ks3HttpExecutor {
+
+ private OkHttpClient client;
+
+ public void invoke(Authorization auth, final Ks3HttpRequest request,
+ final AsyncHttpResponseHandler resultHandler,
+ Ks3ClientConfiguration clientConfiguration, final Context context,
+ String endpoint, AuthListener authListener, Boolean isUseAsyncMode) {
+ if (TextUtils.isEmpty(endpoint)) {
+ Log.e(Constants.LOG_TAG, "The endpoint is empty,do you call setEndpoint() after you create Ks3Client?");
+ return;
+ }
+
+ /* Configure AsyncHttpClient */
+ if (clientConfiguration != null) {
+ client = OkHttpClientFactory.getInstance(clientConfiguration);
+ } else {
+ client = OkHttpClientFactory.getInstance();
+ }
+
+ request.setAuthorization(auth);
+ //设置host
+ if (request.getBucketname() == null || clientConfiguration.isPathStyleAccess() || clientConfiguration.getDomainMode()) {
+ request.setEndpoint(endpoint);
+ } else {
+ request.setEndpoint(request.getBucketname() + "." + endpoint);
+ }
+
+ request.setUseAsyncMode(isUseAsyncMode);
+ // Token形式
+ if (authListener != null) {
+ request.setAuthListener(authListener);
+ // 开线程执行 initRequestParams
+ setUpRequestInBackground(request, new Ks3AuthHandler() {
+
+ @Override
+ public void onSuccess(AuthEvent event) {
+ doRequest(request, context, resultHandler);
+ }
+
+ @Override
+ public void onFailure(AuthEvent event) {
+ resultHandler.onFailure(request, new Ks3ClientException(event.getContent()), null);
+ }
+ }, resultHandler);
+ }
+ // AK&SK形式
+ else {
+ try {
+ request.initRequestParams(null, resultHandler);
+ } catch (Ks3ClientException e) {
+ resultHandler.onFailure(request, e, null);
+ return;
+ }
+ doRequest(request, context, resultHandler);
+ }
+ }
+
+ protected void doRequest(Ks3HttpRequest request, Context context,
+ AsyncHttpResponseHandler resultHandler) {
+ resultHandler.setRequest(request);
+ Request.Builder builder = new Request.Builder()
+ .url(request.getUrl())
+ .tag(context.getClass())
+ .headers(ModelUtil.convertHeaderArray(request.getHeader()));
+ builder.addHeader("Connection", "close");
+
+ Request okHttpRequest = null;
+ // For test
+ LogShow(request);
+ Log.d(Constants.LOG_TAG, "request url = " + request.getUrl());
+
+ InputStream inputStream = null;
+ String stringBody = null;
+ switch (request.getHttpMethod()) {
+ case POST:
+ case PUT:
+ // file inputStream
+ if (request.getInputStreamBody() != null) {
+ inputStream = request.getInputStreamBody();
+
+ RequestBody body = NetworkProgressHelper.addProgressRequestBody(
+ inputStream,
+ request.getContentLength(),
+ request.getContentType(),
+ resultHandler);
+
+ builder = builder.method(request.getHttpMethod().toString(), body);
+ } else if (request.getRequestBody() != null) {
+ builder = builder.method(request.getHttpMethod().toString(), request.getRequestBody());
+ } else {
+ builder = builder.method(request.getHttpMethod().toString(), RequestBody.create(null, new byte[0]));
+ }
+ break;
+ case GET:
+ builder = builder.get();
+ break;
+ case DELETE:
+ builder = builder.delete();
+ break;
+ case HEAD:
+ builder = builder.head();
+ break;
+ default:
+ Log.e(Constants.LOG_TAG, "unsupport http method ! ");
+ break;
+ }
+
+ builder.addHeader("Content-Length", request.getContentLength() + "");
+
+ okHttpRequest = builder.build();
+
+ // 判断是否是getObject操作 如果是则添加进度监听器
+ if (request instanceof GetObjectRequest && !TextUtils.isEmpty(request.getObjectkey())) {
+ client = NetworkProgressHelper.addProgressResponseListener(this.client, resultHandler);
+ }
+
+ Call call = client.newCall(okHttpRequest);
+ request.setRequestCall(call);
+ if (request.isUseAsyncMode()) {
+ call.enqueue(resultHandler);
+ } else {
+ try {
+ Response response = call.execute();
+ Log.d("Ks3HttpExecutor", response.toString());
+ resultHandler.onResponse(call, response);
+ } catch (IOException e) {
+ resultHandler.onFailure(call, e);
+ }
+ }
+
+ }
+
+ private void setUpRequestInBackground(final Ks3HttpRequest request,
+ final Ks3AuthHandler ks3AuthHandler,
+ final AsyncHttpResponseHandler resultHandler) {
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ request.initRequestParams(ks3AuthHandler, resultHandler);
+ } catch (Ks3ClientException e) {
+ ks3AuthHandler.isNeedCalculateAuth = false;
+ resultHandler.onFailure(request, e, null);
+ }
+ }
+ }).start();
+ }
+
+ private void LogShow(Ks3HttpRequest request) {
+ String url = request.getAsyncHttpRequestParam().getUrl();
+ Headers headers = request.getAsyncHttpRequestParam().getHeaders();
+ HttpMethod httpMethod = request.getHttpMethod();
+
+ StringBuffer sb = new StringBuffer();
+ sb.append("**url** " + url).append("\n");
+ sb.append("**method** " + httpMethod.toString() + "\n");
+ sb.append("**heads** ").append("\n");
+ for (int i = 0; i < headers.size(); i++) {
+ sb.append(headers.name(i)).append("=>").append(headers.value(i)).append("\n");
+ }
+ Log.d(Constants.LOG_TAG, sb.toString());
+ }
+
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3SSLSocketFactory.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3SSLSocketFactory.java
deleted file mode 100644
index 33c9c76e7385e121819ddb7b5fac0470a1c7277a..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3SSLSocketFactory.java
+++ /dev/null
@@ -1,172 +0,0 @@
-package com.ksyun.ks3.services;
-
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.Socket;
-import java.security.KeyManagementException;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.UnrecoverableKeyException;
-import java.security.cert.Certificate;
-import java.security.cert.CertificateException;
-import java.security.cert.CertificateFactory;
-import java.security.cert.X509Certificate;
-
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-
-import cz.msebera.android.httpclient.HttpVersion;
-import cz.msebera.android.httpclient.conn.ClientConnectionManager;
-import cz.msebera.android.httpclient.conn.scheme.PlainSocketFactory;
-import cz.msebera.android.httpclient.conn.scheme.Scheme;
-import cz.msebera.android.httpclient.conn.scheme.SchemeRegistry;
-import cz.msebera.android.httpclient.conn.ssl.SSLSocketFactory;
-import cz.msebera.android.httpclient.impl.client.DefaultHttpClient;
-import cz.msebera.android.httpclient.impl.conn.tsccm.ThreadSafeClientConnManager;
-import cz.msebera.android.httpclient.params.BasicHttpParams;
-import cz.msebera.android.httpclient.params.HttpParams;
-import cz.msebera.android.httpclient.params.HttpProtocolParams;
-import cz.msebera.android.httpclient.protocol.HTTP;
-
-
-public class Ks3SSLSocketFactory extends SSLSocketFactory {
- final SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
-
- /**
- * Creates a new SSL Socket Factory with the given KeyStore.
- *
- * @param truststore A KeyStore to create the SSL Socket Factory in context of
- * @throws NoSuchAlgorithmException NoSuchAlgorithmException
- * @throws KeyManagementException KeyManagementException
- * @throws KeyStoreException KeyStoreException
- * @throws UnrecoverableKeyException UnrecoverableKeyException
- */
- public Ks3SSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
- super(truststore);
-
- Ks3X509TrustManager tm = new Ks3X509TrustManager();
-
- sslContext.init(null, new TrustManager[]{tm}, null);
- }
-
- /**
- * Gets a KeyStore containing the Certificate
- *
- * @param cert InputStream of the Certificate
- * @return KeyStore
- */
- public static KeyStore getKeystoreOfCA(InputStream cert) {
-
- // Load CAs from an InputStream
- InputStream caInput = null;
- Certificate ca = null;
- try {
- CertificateFactory cf = CertificateFactory.getInstance("X.509");
- caInput = new BufferedInputStream(cert);
- ca = cf.generateCertificate(caInput);
- System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN());
- } catch (CertificateException e1) {
- e1.printStackTrace();
- } finally {
- try {
- if (caInput != null) {
- caInput.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- // Create a KeyStore containing our trusted CAs
- String keyStoreType = KeyStore.getDefaultType();
- KeyStore keyStore = null;
- try {
- keyStore = KeyStore.getInstance(keyStoreType);
- keyStore.load(null, null);
- keyStore.setCertificateEntry("ca", ca);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return keyStore;
- }
-
- /**
- * Gets a Default KeyStore
- *
- * @return KeyStore
- */
- public static KeyStore getKeystore() {
- KeyStore trustStore = null;
- try {
- trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
- trustStore.load(null, null);
- } catch (Throwable t) {
- t.printStackTrace();
- }
- return trustStore;
- }
-
- /**
- * Returns a SSlSocketFactory which trusts all certificates
- *
- * @return SSLSocketFactory
- */
- public static SSLSocketFactory getFixedSocketFactory() {
- SSLSocketFactory socketFactory;
- try {
- socketFactory = new Ks3SSLSocketFactory(getKeystore());
- socketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
- } catch (Throwable t) {
- t.printStackTrace();
- socketFactory = SSLSocketFactory.getSocketFactory();
- }
- return socketFactory;
- }
-
- /**
- * Gets a DefaultHttpClient which trusts a set of certificates specified by the KeyStore
- *
- * @param keyStore custom provided KeyStore instance
- * @return DefaultHttpClient
- */
- public static DefaultHttpClient getNewHttpClient(KeyStore keyStore) {
-
- try {
- SSLSocketFactory sf = new Ks3SSLSocketFactory(keyStore);
- SchemeRegistry registry = new SchemeRegistry();
- registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
- registry.register(new Scheme("https", sf, 443));
-
- HttpParams params = new BasicHttpParams();
- HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
- HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
-
- ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
-
- return new DefaultHttpClient(ccm, params);
- } catch (Exception e) {
- return new DefaultHttpClient();
- }
- }
-
- @Override
- public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException {
- return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
- }
-
- @Override
- public Socket createSocket() throws IOException {
- return sslContext.getSocketFactory().createSocket();
- }
-
- /**
- * Makes HttpsURLConnection trusts a set of certificates specified by the KeyStore
- */
- public void fixHttpsURLConnection() {
- HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
- }
-}
\ No newline at end of file
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3X509TrustManager.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3X509TrustManager.java
deleted file mode 100644
index b1d0345775f5205b7ad547dffaa1f77a3f760022..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/Ks3X509TrustManager.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.ksyun.ks3.services;
-
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-
-import javax.net.ssl.X509TrustManager;
-
-public class Ks3X509TrustManager implements X509TrustManager {
- @Override
- public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
- try {
- chain[0].checkValidity();
- } catch (Exception e) {
- throw new CertificateException("Certificate not valid or trusted.");
- }
- }
-
- @Override
- public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
- try {
- chain[0].checkValidity();
- } catch (Exception e) {
- throw new CertificateException("Certificate not valid or trusted.");
- }
- }
-
- @Override
- public X509Certificate[] getAcceptedIssuers() {
- return null;
- }
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/MultiUploader.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/MultiUploader.java
index 66de06ff859443ade0f84ed687f42f8f63772ac7..14e66bcd1f02766fdd5d2f129fd11b14e0bf300f 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/MultiUploader.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/MultiUploader.java
@@ -4,17 +4,21 @@ import android.os.Handler;
import android.os.Message;
import android.util.Log;
-import com.ksyun.ks3.exception.Ks3Error;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
import com.ksyun.ks3.model.Part;
import com.ksyun.ks3.model.PartETag;
import com.ksyun.ks3.model.result.CompleteMultipartUploadResult;
import com.ksyun.ks3.model.result.InitiateMultipartUploadResult;
import com.ksyun.ks3.model.result.ListPartsResult;
+import com.ksyun.ks3.model.result.UploadPartResult;
import com.ksyun.ks3.services.handler.CompleteMultipartUploadResponseHandler;
-import com.ksyun.ks3.services.handler.InitiateMultipartUploadResponceHandler;
+import com.ksyun.ks3.services.handler.InitiateMultipartUploadResponseHandler;
import com.ksyun.ks3.services.handler.ListPartsResponseHandler;
-import com.ksyun.ks3.services.handler.UploadPartResponceHandler;
+import com.ksyun.ks3.services.handler.UploadPartResponseHandler;
+import com.ksyun.ks3.services.request.CompleteMultipartUploadRequest;
import com.ksyun.ks3.services.request.InitiateMultipartUploadRequest;
+import com.ksyun.ks3.services.request.ListPartsRequest;
import com.ksyun.ks3.services.request.UploadPartRequest;
@@ -26,8 +30,6 @@ import java.util.List;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
-import cz.msebera.android.httpclient.Header;
-
/**
* Created by zhaotao on 4/27/17.
*/
@@ -39,22 +41,23 @@ public class MultiUploader {
private String key;
private File file;
private int concurrentNo = 2;
- private long partSize = 5*1024*1024; // 5MB
+ private long partSize = 5 * 1024 * 1024; // 5MB
private String uploadId;
private AtomicInteger cur;
private Ks3Client client;
final static private int INIT_DONE = 0;
final static private int PARTS_DONE = 1;
final static private int COMPLETE_DONE = 2;
- final static private int GET_UPLOADED_DONE=3;
+ final static private int GET_UPLOADED_DONE = 3;
final static private int LIMIT_DONE = 4;
+ final static private int INIT_ERROR = 5;
final List doneParts = Collections.synchronizedList(new ArrayList());
List leftParts = Collections.synchronizedList(new ArrayList());
private CompleteMultipartUploadResponseHandler multiHandler;
- private void create(Ks3Client client, String bucketName, String key, File file, String uploadId, long partSize){
+ private void create(Ks3Client client, String bucketName, String key, File file, String uploadId, long partSize) {
this.client = client;
this.bucketName = bucketName;
this.key = key;
@@ -63,64 +66,75 @@ public class MultiUploader {
this.partSize = partSize;
}
- public MultiUploader(Ks3Client client, String bucketName, String key, File file, String uploadId, long partSize){
- create(client, bucketName,key, file, uploadId, partSize);
+ public MultiUploader(Ks3Client client, String bucketName, String key, File file, String uploadId, long partSize) {
+ create(client, bucketName, key, file, uploadId, partSize);
}
- public MultiUploader(Ks3Client client, String bucketName, String key, File file, String uploadId){
+ public MultiUploader(Ks3Client client, String bucketName, String key, File file, String uploadId) {
create(client, bucketName, key, file, uploadId, partSize);
}
- public MultiUploader(Ks3Client client, String bucketName, String key, File file){
+
+ public MultiUploader(Ks3Client client, String bucketName, String key, File file) {
create(client, bucketName, key, file, null, partSize);
}
- public MultiUploader(Ks3Client client, String bucketName, String key, File file, long partSize){
+
+ public MultiUploader(Ks3Client client, String bucketName, String key, File file, long partSize) {
create(client, bucketName, key, file, null, partSize);
}
- public void setConcurrentNo(int no){ concurrentNo = no; }
+ public void setConcurrentNo(int no) {
+ concurrentNo = no;
+ }
- public void setHandler(CompleteMultipartUploadResponseHandler uploadResponseHandler){
+ public void setHandler(CompleteMultipartUploadResponseHandler uploadResponseHandler) {
multiHandler = uploadResponseHandler;
}
- public String getKey(){
+ public String getKey() {
return key;
}
- public String getUploadId(){
+
+ public String getUploadId() {
return uploadId;
}
- abstract class MyUploadPartResponceHandler extends UploadPartResponceHandler {
+ abstract class MyUploadPartResponseHandler extends UploadPartResponseHandler {
private String key;
private int partNo;
private String uploadId;
- public abstract void onSuccess(int statesCode, Header[] responceHeaders, PartETag result, String key, int partNo, String uploadId);
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable throwable
+
+ public abstract void onSuccess(UploadPartRequest request, UploadPartResult result, String key, int partNo, String uploadId);
+
+ public abstract void onFailure(UploadPartRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException
, String key, int partNo, String uploadId);
+
public abstract void onTaskProgress(double progress, String key, int partNo, String uploadId);
- public MyUploadPartResponceHandler(String key, int partNo, String uploadId){
+ public MyUploadPartResponseHandler(String key, int partNo, String uploadId) {
this.key = key;
this.partNo = partNo;
this.uploadId = uploadId;
}
+
@Override
public void onTaskProgress(double progress) {
onTaskProgress(progress, key, partNo, uploadId);
}
+
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders, PartETag result) {
- onSuccess(statesCode, responceHeaders, result, key, partNo, uploadId);
+ public void onSuccess(UploadPartRequest request, UploadPartResult result) {
+ onSuccess(request, result, key, partNo, uploadId);
}
+
@Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable throwable) {
- onFailure(statesCode,error,responceHeaders,response,throwable, key, partNo, uploadId);
+ public void onFailure(UploadPartRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ onFailure(request, clientException, serviceException, key, partNo, uploadId);
}
}
- private final MyHandler mHandler = new MyHandler();
+ private final UploadHandler handler = new UploadHandler();
- class MyHandler extends Handler {
+ class UploadHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
@@ -131,13 +145,16 @@ public class MultiUploader {
completeUpload();
break;
case GET_UPLOADED_DONE:
- List res = (List)msg.obj;
+ List res = (List) msg.obj;
reUpload(res);
break;
case LIMIT_DONE:
int no = msg.arg1;
int N = msg.arg2;
doWithLimit(no, N);
+ case INIT_ERROR:
+ Log.e(TAG, "init multipart upload error");
+ break;
default:
break;
}
@@ -145,65 +162,79 @@ public class MultiUploader {
}
/*
- return false, if uploadId hasbeen got
+ return false, if uploadId has been got
*/
- public boolean upload(){
- if(uploadId != null) return false;
+ public boolean upload() {
+ if (uploadId != null) return false;
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, key);
- client.initiateMultipartUpload(request, new InitiateMultipartUploadResponceHandler(){
+ client.initiateMultipartUpload(request, new InitiateMultipartUploadResponseHandler() {
@Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
- Log.w(TAG, "init multiupload fail, statesCode="+statesCode, paramThrowable);
+ public void onFailure(InitiateMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ if (clientException != null) {
+ Log.e(TAG, "init multipart upload fail, clientException=" + clientException.getMessage());
+ }
+ if (serviceException != null) {
+ Log.e(TAG, "init multipart upload fail, serviceException=" + serviceException.getMessage());
+ }
+ handler.sendEmptyMessage(INIT_ERROR);
}
+
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders, InitiateMultipartUploadResult result) {
+ public void onSuccess(InitiateMultipartUploadRequest request, InitiateMultipartUploadResult result) {
uploadId = result.getUploadId();
- Log.d(TAG, "init multiupload success, uploadId="+uploadId + ",key="+key);
- mHandler.sendEmptyMessage(INIT_DONE);
+ Log.i(TAG, "init multi upload success, uploadId=" + uploadId + ",key=" + key);
+ handler.sendEmptyMessage(INIT_DONE);
}
});
return true;
}
- private List convertPart(List list){
+ private List convertPart(List list) {
List res = new ArrayList();
- for(Part p : list) {
+ for (Part p : list) {
res.add(new PartETag(p.getPartNumber(), p.getETag()));
}
return res;
}
+
/*
Get from ks3 server. call list parts API.
*/
- public void getUploadedParts(){
+ public void getUploadedParts() {
final List res = new ArrayList();
final ListPartsResponseHandler listPartsResponseHandler = new ListPartsResponseHandler() {
@Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
- Log.w(TAG, "list parts, statesCode="+statesCode, paramThrowable);
+ public void onFailure(ListPartsRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ if (clientException != null) {
+ Log.e(TAG, "list parts fail, clientException=" + clientException.getMessage());
+ }
+ if (serviceException != null) {
+ Log.e(TAG, "list parts fail, serviceException=" + serviceException.getMessage());
+ }
}
+
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders, ListPartsResult listPartsResult) {
- res.addAll(convertPart(listPartsResult.getParts()));
- if(! listPartsResult.isTruncated())
- mHandler.sendMessage(Message.obtain(mHandler, GET_UPLOADED_DONE, res));
+ public void onSuccess(ListPartsRequest request, ListPartsResult result) {
+ res.addAll(convertPart(result.getParts()));
+ if (!result.isTruncated())
+ handler.sendMessage(Message.obtain(handler, GET_UPLOADED_DONE, res));
else
- Log.e(TAG, "File size too largs. You may not use phone to upload");
+ Log.e(TAG, "File size too large. You may not use phone to upload");
}
};
client.listParts(bucketName, key, uploadId, listPartsResponseHandler);
}
- public List getLeftParts(List uploadedParts){
+ public List getLeftParts(List uploadedParts) {
List res = new ArrayList();
long start = 0L;
int partNumber = 1;
Set set = new HashSet();
- for(PartETag p : uploadedParts){
+ for (PartETag p : uploadedParts) {
set.add(p.getPartNumber());
}
- while(start= N) {
- mHandler.sendEmptyMessage(PARTS_DONE);
- } else if(cur.get()%concurrentNo==0){
- mHandler.sendMessage(Message.obtain(mHandler,LIMIT_DONE, cur.get(), N));
+ if (doneParts.size() >= N) {
+ handler.sendEmptyMessage(PARTS_DONE);
+ } else if (cur.get() % concurrentNo == 0) {
+ handler.sendMessage(Message.obtain(handler, LIMIT_DONE, cur.get(), N));
}
}
+
@Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable throwable,
- String key, int partNo, String uploadId) {
+ public void onFailure(UploadPartRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException, String key, int partNo, String uploadId) {
// you may record this failure info in file, database, or backend
- Log.w(TAG, "upload part fail, uploadId="+uploadId+",key="+key+",partNo="+partNo, throwable);
- if(multiHandler!=null)
- multiHandler.onFailure(statesCode, error, responceHeaders, response, throwable);
+ if (clientException != null) {
+ Log.e(TAG, "upload part fail, uploadId=" + uploadId + ", key=" + key + ", partNo=" + partNo + ", clientException=" + clientException.getMessage());
+ }
+ if (serviceException != null) {
+ Log.e(TAG, "upload part fail, uploadId=" + uploadId + ", key=" + key + ", partNo=" + partNo + ", serviceException=" + serviceException.getMessage());
+ }
+ if (multiHandler != null) {
+ multiHandler.onFailure(request, clientException, serviceException);
+ }
}
+
@Override
public void onTaskProgress(double progress, String key, int partNo, String uploadId) {
- Log.d(TAG, "progress:"+progress+",key="+key+",partNo"+partNo);
+ Log.d(TAG, "progress: " + progress + ", key=" + key + ", partNo " + partNo);
}
});
}
}
- public void reUpload(final List uploadedParts){
+ public void reUpload(final List uploadedParts) {
leftParts = getLeftParts(uploadedParts);
int N = leftParts.size() + uploadedParts.size();
cur = new AtomicInteger(0);
doneParts.addAll(uploadedParts);
- if(leftParts.isEmpty())
- mHandler.sendEmptyMessage(PARTS_DONE);
+ if (leftParts.isEmpty()) {
+ handler.sendEmptyMessage(PARTS_DONE);
+ }
doWithLimit(0, N);
}
- private void uploadParts(){
+ private void uploadParts() {
reUpload(new ArrayList());
}
- private void completeUpload(){
- if(multiHandler==null){
- multiHandler = new CompleteMultipartUploadResponseHandler(){
+ private void completeUpload() {
+ if (multiHandler == null) {
+ multiHandler = new CompleteMultipartUploadResponseHandler() {
@Override
- public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
- Log.w(TAG, "complete upload fail, statusCode="+statesCode, paramThrowable);
+ public void onFailure(CompleteMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ if (clientException != null) {
+ Log.e(TAG, "complete upload fail, clientException=" + clientException.getMessage());
+ }
+ if (serviceException != null) {
+ Log.e(TAG, "complete upload fail, serviceException=" + serviceException.getMessage());
+ }
}
+
@Override
- public void onSuccess(int statesCode, Header[] responceHeaders, CompleteMultipartUploadResult result) {
- Log.i(TAG, "complete upload, key="+key);
+ public void onSuccess(CompleteMultipartUploadRequest request, CompleteMultipartUploadResult result) {
+ Log.i(TAG, "complete upload, key=" + key + ", status code=" + result.getStatusCode());
}
};
}
- client.completeMultipartUpload(bucketName,key,uploadId,doneParts, multiHandler);
+ client.completeMultipartUpload(bucketName, key, uploadId, doneParts, multiHandler);
}
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/NetworkProgressHelper.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/NetworkProgressHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..9056c0df7c3b6b217ff8406f2b635bb70d6c8f85
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/NetworkProgressHelper.java
@@ -0,0 +1,48 @@
+package com.ksyun.ks3.services;
+
+import com.ksyun.ks3.services.handler.AsyncHttpResponseHandler;
+import com.ksyun.ks3.services.handler.ProgressResponseBody;
+import com.ksyun.ks3.services.request.ProgressRequestBody;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import okhttp3.Interceptor;
+import okhttp3.OkHttpClient;
+import okhttp3.Response;
+
+public class NetworkProgressHelper {
+ /**
+ * add response progress
+ * @param client
+ * @param handler
+ * @return
+ */
+ public static OkHttpClient addProgressResponseListener (OkHttpClient client, final AsyncHttpResponseHandler handler) {
+ OkHttpClient build = client.newBuilder().addNetworkInterceptor(new Interceptor() {
+ @Override
+ public Response intercept(Chain chain) throws IOException {
+ Response originalResponse = chain.proceed(chain.request());
+ return originalResponse.newBuilder()
+ .body(new ProgressResponseBody(originalResponse.body(), handler))
+ .build();
+ }
+ }).build();
+ return build;
+ }
+
+ /**
+ * add request progress
+ * @param input
+ * @param contentLength
+ * @param contentType
+ * @param handler
+ * @return
+ */
+ public static ProgressRequestBody addProgressRequestBody (InputStream input,
+ long contentLength,
+ String contentType,
+ AsyncHttpResponseHandler handler) {
+ return new ProgressRequestBody(input, contentLength, contentType, handler);
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/OkHttpClientFactory.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/OkHttpClientFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..13fc325a60c801119f175d30f4f87d67b87a3613
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/OkHttpClientFactory.java
@@ -0,0 +1,73 @@
+package com.ksyun.ks3.services;
+
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.Proxy;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import okhttp3.Authenticator;
+import okhttp3.Credentials;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+import okhttp3.Route;
+import okhttp3.logging.HttpLoggingInterceptor;
+
+public class OkHttpClientFactory {
+ private static OkHttpClient instance;
+
+ private OkHttpClientFactory() {
+ }
+
+ static OkHttpClient getInstance() {
+ if (instance == null) {
+ instance = new OkHttpClient.Builder().build();
+ }
+ return instance;
+ }
+
+ static OkHttpClient getInstance(final Ks3ClientConfiguration configuration) {
+ if (instance == null) {
+ // 设置重连次数
+ OkHttpClient.Builder builder = new OkHttpClient.Builder()
+ .connectTimeout(configuration.getConnectionTimeout(), TimeUnit.MILLISECONDS)
+ .readTimeout(configuration.getSocketTimeout(), TimeUnit.MILLISECONDS)
+ .writeTimeout(configuration.getSocketTimeout(), TimeUnit.MILLISECONDS)
+ .retryOnConnectionFailure(configuration.isRetryOnConnectionFailure());
+
+ // 添加调试日志
+ if (configuration.isEnableLog()) {
+ HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
+ interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
+ builder.addInterceptor(interceptor);
+ }
+
+ if (configuration.getProxyUsername() != null && configuration.getProxyPort() > 0) {
+ Proxy proxy = new Proxy(Proxy.Type.HTTP,
+ new InetSocketAddress(configuration.getProxyHost(), configuration.getProxyPort()));
+ Authenticator proxyAuthenticator = new Authenticator() {
+ @Override
+ public Request authenticate(Route route, Response response) throws IOException {
+ String credentials = Credentials.basic(configuration.getProxyUsername(), configuration.getProxyPassword());
+ return response.request()
+ .newBuilder()
+ .header("Proxy-Authorization", credentials)
+ .build();
+ }
+ };
+ builder.proxy(proxy)
+ .proxyAuthenticator(proxyAuthenticator)
+ .authenticator(proxyAuthenticator);
+ }
+
+ instance = builder.build();
+ }
+ return instance;
+ }
+
+ private static ExecutorService getDefaultThreadPool() {
+ return Executors.newCachedThreadPool();
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/OkHttpClientRetryInterceptor.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/OkHttpClientRetryInterceptor.java
new file mode 100644
index 0000000000000000000000000000000000000000..60cf84d23336d2b1df104819632549c33f42f9f1
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/OkHttpClientRetryInterceptor.java
@@ -0,0 +1,38 @@
+package com.ksyun.ks3.services;
+
+import java.io.IOException;
+
+import okhttp3.Interceptor;
+import okhttp3.Request;
+import okhttp3.Response;
+
+public class OkHttpClientRetryInterceptor implements Interceptor {
+
+ private int maxRetry; // 最大重连次数
+
+ public OkHttpClientRetryInterceptor(int maxRetry) {
+ this.maxRetry = maxRetry;
+ }
+
+ @Override
+ public Response intercept(Chain chain) throws IOException {
+ return retry(chain, 0);
+ }
+
+ private Response retry(Chain chain, int retryNo) {
+ Request request = chain.request();
+ Response response = null;
+ try {
+ response = chain.proceed(request);
+ } catch (IOException e) {
+ e.printStackTrace();
+ if (maxRetry > retryNo) {
+ return retry(chain, retryNo + 1);
+ }
+ } finally {
+ return response;
+ }
+ }
+
+
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/SyncHttpClientFactory.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/SyncHttpClientFactory.java
deleted file mode 100644
index a13a866165f4648a27cf9a96f6a558bf113676fd..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/SyncHttpClientFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.ksyun.ks3.services;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import com.loopj.android.http.AsyncHttpClient;
-import com.loopj.android.http.SyncHttpClient;
-
-public class SyncHttpClientFactory {
- private static SyncHttpClient instance;
-
- private SyncHttpClientFactory() {
- }
-
- static SyncHttpClient getInstance() {
- if (instance == null) {
- instance = new SyncHttpClient();
- }
- return instance;
- }
-
- static SyncHttpClient getInstance(Ks3ClientConfiguration configuration) {
- if (instance == null) {
- instance = new SyncHttpClient();
- instance.setConnectTimeout(configuration.getConnectionTimeout());
- instance.setTimeout(configuration.getSocketTimeout());
- instance.setUserAgent(configuration.getUserAgent());
- instance.setMaxConnections(configuration.getMaxConnections());
- instance.setMaxRetriesAndTimeout(configuration.getMaxRetrytime(), configuration.getRetryTimeOut());
- if (configuration.getProxyUsername() != null && configuration.getProxyPort() > 0) {
- instance.setProxy(configuration.getProxyHost(),
- configuration.getProxyPort(),
- configuration.getProxyUsername(),
- configuration.getProxyPassword());
- }
- if (null != configuration.getSSLSocketFactory()) {
- instance.setSSLSocketFactory(configuration.getSSLSocketFactory());
- }
- }
- return instance;
- }
-
- private static ExecutorService getDefaultThreadPool() {
- return Executors.newCachedThreadPool();
- }
-
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/AbortMultipartUploadResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/AbortMultipartUploadResponseHandler.java
index 51738b44e79f5861a3ef5ddc4d0fa665418344c6..371fb672d6878a7de67854584f26d760ba898375 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/AbortMultipartUploadResponseHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/AbortMultipartUploadResponseHandler.java
@@ -1,39 +1,49 @@
package com.ksyun.ks3.services.handler;
-import cz.msebera.android.httpclient.Header;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.AbortMultipartUploadResult;
+import com.ksyun.ks3.services.request.AbortMultipartUploadRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
-import com.ksyun.ks3.exception.Ks3Error;
+import okhttp3.Headers;
public abstract class AbortMultipartUploadResponseHandler extends
- Ks3HttpResponceHandler {
+ Ks3HttpResponseHandler {
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders,String response, Throwable paramThrowable);
+ public abstract void onFailure(AbortMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
- public abstract void onSuccess(int statesCode, Header[] responceHeaders);
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- this.onSuccess(statesCode, responceHeaders);
- }
+ public abstract void onSuccess(AbortMultipartUploadRequest request, AbortMultipartUploadResult result);
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode, error,responceHeaders, response==null?"":new String(response), throwable);
- }
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ AbortMultipartUploadResult result = new AbortMultipartUploadResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((AbortMultipartUploadRequest) request, result);
+ }
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((AbortMultipartUploadRequest) request, clientException, serviceException);
+ }
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {
- }
- @Override
- public final void onStart() {}
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
-
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/AsyncHttpResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/AsyncHttpResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..faf12fbb30cc49689a44ad4b8911c12c66a869a9
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/AsyncHttpResponseHandler.java
@@ -0,0 +1,79 @@
+package com.ksyun.ks3.services.handler;
+
+import android.util.Log;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.Constants;
+import com.ksyun.ks3.util.IOUtils;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import okhttp3.Call;
+import okhttp3.Callback;
+import okhttp3.Headers;
+import okhttp3.Response;
+
+public abstract class AsyncHttpResponseHandler implements Callback {
+ Ks3HttpRequest request;
+
+ @Override
+ public void onFailure(Call call, IOException e) {
+ if (!call.isCanceled()) {
+ call.cancel();
+ }
+ onFailure(request, new Ks3ClientException(e), null);
+ e.printStackTrace();
+ Log.e(Constants.LOG_TAG, e.toString());
+ }
+
+ @Override
+ public void onResponse(Call call, Response response) {
+ Headers headers = response.headers();
+ int code = response.code();
+ InputStream responseBody;
+ try {
+ responseBody = response.body().byteStream();
+ byte[] responseBytes = IOUtils.toByteArray(responseBody);
+ if (code < 300 & code >= 200) {
+ onSuccess(request, code, headers, responseBytes);
+ } else {
+ Ks3ServiceException serviceException = new Ks3ServiceException(code, headers, responseBytes);
+ onFailure(request, null, serviceException);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ Log.e(Constants.LOG_TAG, e.toString());
+ // @TODO 处理cancel导致的异常 权宜之计 后续有好的处理方式后再做更新
+ if (call.isExecuted() && call.isCanceled()) {
+ onCancel();
+ } else {
+ onFailure(request, new Ks3ClientException(e), null);
+ }
+ }
+ }
+
+ public abstract void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response);
+
+ public abstract void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onRetry(int retryNo);
+
+ public void onCancel() {
+ }
+
+ ;
+
+ public void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ public Ks3HttpRequest getRequest() {
+ return request;
+ }
+
+ public void setRequest(Ks3HttpRequest request) {
+ this.request = request;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/CompleteMultipartUploadResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/CompleteMultipartUploadResponseHandler.java
index db0edae8449baa7ba5ca3d2802b255c3ca003156..3e45f6b00161eeb1c4df28e63a57026ecf003430 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/CompleteMultipartUploadResponseHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/CompleteMultipartUploadResponseHandler.java
@@ -1,8 +1,12 @@
package com.ksyun.ks3.services.handler;
-import com.ksyun.ks3.exception.Ks3Error;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
import com.ksyun.ks3.model.result.CompleteMultipartUploadResult;
+import com.ksyun.ks3.services.request.CompleteMultipartUploadRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -11,25 +15,25 @@ import org.xmlpull.v1.XmlPullParserFactory;
import java.io.ByteArrayInputStream;
import java.io.IOException;
-import cz.msebera.android.httpclient.Header;
+import okhttp3.Headers;
-public abstract class CompleteMultipartUploadResponseHandler extends
- Ks3HttpResponceHandler {
+public abstract class CompleteMultipartUploadResponseHandler extends Ks3HttpResponseHandler {
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders, CompleteMultipartUploadResult result);
+ public abstract void onFailure(CompleteMultipartUploadRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+ public abstract void onSuccess(CompleteMultipartUploadRequest request, CompleteMultipartUploadResult result);
@Override
- public final void onSuccess(int statesCode, Header[] responceHeaders, byte[] response) {
- this.onSuccess(statesCode, responceHeaders, parseXml(responceHeaders, response));
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ CompleteMultipartUploadResult result = parseXml(response);
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((CompleteMultipartUploadRequest) request, result);
}
@Override
- public final void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode, error, responceHeaders, response == null ? "" : new String(response), throwable);
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((CompleteMultipartUploadRequest) request, clientException, serviceException);
}
@Override
@@ -48,7 +52,7 @@ public abstract class CompleteMultipartUploadResponseHandler extends
public final void onCancel() {
}
- private CompleteMultipartUploadResult parseXml(Header[] responceHeaders, byte[] response) {
+ private CompleteMultipartUploadResult parseXml(byte[] response) {
XmlPullParserFactory factory;
CompleteMultipartUploadResult result = null;
try {
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/CopyObjectResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/CopyObjectResponseHandler.java
index 82ba82238deb97599a5b7e6089b59d1294b29364..77191c6634c9fd9f52f1c9acba98303ca4f5a884 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/CopyObjectResponseHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/CopyObjectResponseHandler.java
@@ -3,98 +3,100 @@ package com.ksyun.ks3.services.handler;
import java.io.ByteArrayInputStream;
import java.io.IOException;
-import cz.msebera.android.httpclient.Header;
+import okhttp3.Headers;
+
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
-import com.ksyun.ks3.exception.Ks3Error;
-import com.ksyun.ks3.model.result.CopyResult;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.CopyObjectResult;
+import com.ksyun.ks3.services.request.CopyObjectRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
import com.ksyun.ks3.util.DateUtil;
+import com.ksyun.ks3.util.ResponseUtils;
import com.ksyun.ks3.util.StringUtils;
-public abstract class CopyObjectResponseHandler extends Ks3HttpResponceHandler {
-
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders,
- String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders,
- CopyResult result);
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,
- byte[] response) {
- this.onSuccess(statesCode, responceHeaders, parseXml(response));
- }
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,
- byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode,error, responceHeaders, response == null ? ""
- : new String(response), throwable);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {
- }
-
- @Override
- public final void onStart() {
- }
-
- @Override
- public final void onFinish() {
- }
-
- @Override
- public final void onCancel() {
-
- }
-
- private CopyResult parseXml(byte[] response) {
- XmlPullParserFactory factory;
- CopyResult result = new CopyResult();
- try {
- factory = XmlPullParserFactory.newInstance();
- XmlPullParser parse = factory.newPullParser();
- parse.setInput(new ByteArrayInputStream(response), "UTF-8");
- int eventType = parse.getEventType();
- while (XmlPullParser.END_DOCUMENT != eventType) {
- String nodeName = parse.getName();
- switch (eventType) {
- case XmlPullParser.START_DOCUMENT:
- break;
- case XmlPullParser.END_DOCUMENT:
- break;
- case XmlPullParser.START_TAG:
- if ("LastModified".equalsIgnoreCase(nodeName)) {
- String dateStr = parse.nextText();
- if (!StringUtils.isBlank(dateStr)){
- result.setLastModified(DateUtil.ConverToDate(dateStr));
- }
-
- }
- if ("ETag".equalsIgnoreCase(nodeName)) {
- result.setETag(parse.nextText());
- }
- break;
- case XmlPullParser.END_TAG:
- break;
- case XmlPullParser.TEXT:
- break;
- default:
- break;
- }
- eventType = parse.next();
- }
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return result;
- }
+public abstract class CopyObjectResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(CopyObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(CopyObjectRequest request, CopyObjectResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ CopyObjectResult result = parseXml(response);
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((CopyObjectRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((CopyObjectRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+
+ }
+
+ private CopyObjectResult parseXml(byte[] response) {
+ XmlPullParserFactory factory;
+ CopyObjectResult result = new CopyObjectResult();
+ try {
+ factory = XmlPullParserFactory.newInstance();
+ XmlPullParser parse = factory.newPullParser();
+ parse.setInput(new ByteArrayInputStream(response), "UTF-8");
+ int eventType = parse.getEventType();
+ while (XmlPullParser.END_DOCUMENT != eventType) {
+ String nodeName = parse.getName();
+ switch (eventType) {
+ case XmlPullParser.START_DOCUMENT:
+ break;
+ case XmlPullParser.END_DOCUMENT:
+ break;
+ case XmlPullParser.START_TAG:
+ if ("LastModified".equalsIgnoreCase(nodeName)) {
+ String dateStr = parse.nextText();
+ if (!StringUtils.isBlank(dateStr)) {
+ result.setLastModified(DateUtil.ConverToDate(dateStr));
+ }
+
+ }
+ if ("ETag".equalsIgnoreCase(nodeName)) {
+ result.setETag(parse.nextText());
+ }
+ break;
+ case XmlPullParser.END_TAG:
+ break;
+ case XmlPullParser.TEXT:
+ break;
+ default:
+ break;
+ }
+ eventType = parse.next();
+ }
+ } catch (XmlPullParserException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/CreateBucketResponceHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/CreateBucketResponceHandler.java
deleted file mode 100644
index a6b2d182b09dfa3ecd9e10f23b9316987b6a4b27..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/CreateBucketResponceHandler.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.ksyun.ks3.services.handler;
-
-import cz.msebera.android.httpclient.Header;
-
-import com.ksyun.ks3.exception.Ks3Error;
-
-public abstract class CreateBucketResponceHandler extends Ks3HttpResponceHandler {
-
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders,String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders);
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- onSuccess(statesCode, responceHeaders);
- }
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- onFailure(statesCode, error,responceHeaders,response==null?"":new String(response), throwable);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
-
- @Override
- public final void onStart() {}
-
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
-
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/CreateBucketResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/CreateBucketResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..affc03ecd39f1c2db1a21d487f5265f4eb322b28
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/CreateBucketResponseHandler.java
@@ -0,0 +1,48 @@
+package com.ksyun.ks3.services.handler;
+
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.CreateBucketResult;
+import com.ksyun.ks3.services.request.CreateBucketRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+public abstract class CreateBucketResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(CreateBucketRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(CreateBucketRequest request, CreateBucketResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ CreateBucketResult result = new CreateBucketResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((CreateBucketRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((CreateBucketRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketPolicyResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketPolicyResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..d7a57f315c5128c9034f50220205d701b682ed98
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketPolicyResponseHandler.java
@@ -0,0 +1,46 @@
+package com.ksyun.ks3.services.handler;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.DeleteBucketPolicyResult;
+import com.ksyun.ks3.services.request.DeleteBucketPolicyRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+public abstract class DeleteBucketPolicyResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(DeleteBucketPolicyRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(DeleteBucketPolicyRequest request, DeleteBucketPolicyResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ DeleteBucketPolicyResult result = new DeleteBucketPolicyResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((DeleteBucketPolicyRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((DeleteBucketPolicyRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketQuotaResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketQuotaResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..46c4758be8059b90df48a1d9fd2b9af4eba462f1
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketQuotaResponseHandler.java
@@ -0,0 +1,46 @@
+package com.ksyun.ks3.services.handler;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.DeleteBucketQuotaResult;
+import com.ksyun.ks3.services.request.DeleteBucketQuotaRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+public abstract class DeleteBucketQuotaResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(DeleteBucketQuotaRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(DeleteBucketQuotaRequest request, DeleteBucketQuotaResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ DeleteBucketQuotaResult result = new DeleteBucketQuotaResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((DeleteBucketQuotaRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((DeleteBucketQuotaRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketReplicationConfigResponceHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketReplicationConfigResponceHandler.java
deleted file mode 100644
index 009a33f534b84adf8c78167162bb1919c6702164..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketReplicationConfigResponceHandler.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.ksyun.ks3.services.handler;
-
-import com.ksyun.ks3.exception.Ks3Error;
-
-import cz.msebera.android.httpclient.Header;
-
-public abstract class DeleteBucketReplicationConfigResponceHandler extends Ks3HttpResponceHandler {
-
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders);
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- onSuccess(statesCode, responceHeaders);
- }
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- onFailure(statesCode, error,responceHeaders, response == null ?"":new String(response), throwable);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
-
- @Override
- public final void onStart() {}
-
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketReplicationResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketReplicationResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..2004ab82fb2f48677fc717c091436d9c70232845
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketReplicationResponseHandler.java
@@ -0,0 +1,46 @@
+package com.ksyun.ks3.services.handler;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.DeleteBucketReplicationResult;
+import com.ksyun.ks3.services.request.DeleteBucketReplicationRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+public abstract class DeleteBucketReplicationResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(DeleteBucketReplicationRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(DeleteBucketReplicationRequest request, DeleteBucketReplicationResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ DeleteBucketReplicationResult result = new DeleteBucketReplicationResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((DeleteBucketReplicationRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((DeleteBucketReplicationRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketResponceHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketResponceHandler.java
deleted file mode 100644
index ffc654aedb4071d2be9090d9526f04265a712776..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketResponceHandler.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.ksyun.ks3.services.handler;
-
-import cz.msebera.android.httpclient.Header;
-
-import com.ksyun.ks3.exception.Ks3Error;
-
-public abstract class DeleteBucketResponceHandler extends Ks3HttpResponceHandler {
-
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders,String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders);
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- onSuccess(statesCode, responceHeaders);
- }
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- onFailure(statesCode, error,responceHeaders, response == null ?"":new String(response), throwable);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
-
- @Override
- public final void onStart() {}
-
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..52e0f1cb98be5f8b564033f6b20d7a3ceb4166ef
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteBucketResponseHandler.java
@@ -0,0 +1,47 @@
+package com.ksyun.ks3.services.handler;
+
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.DeleteBucketResult;
+import com.ksyun.ks3.services.request.DeleteBucketRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+public abstract class DeleteBucketResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(DeleteBucketRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(DeleteBucketRequest request, DeleteBucketResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ DeleteBucketResult result = new DeleteBucketResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((DeleteBucketRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((DeleteBucketRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteObjectRequestHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteObjectRequestHandler.java
deleted file mode 100644
index ff19d2d543a182206618bbd8ee43e57babee5d16..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteObjectRequestHandler.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.ksyun.ks3.services.handler;
-
-import cz.msebera.android.httpclient.Header;
-
-import com.ksyun.ks3.exception.Ks3Error;
-
-public abstract class DeleteObjectRequestHandler extends Ks3HttpResponceHandler{
-
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders,String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders);
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- onSuccess(statesCode, responceHeaders);
- }
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- onFailure(statesCode, error,responceHeaders, "", throwable);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
-
- @Override
- public final void onStart() {}
-
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
-
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteObjectResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteObjectResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..98ca378ee8b28aba5f24b40cc5f6278f339e1e3e
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteObjectResponseHandler.java
@@ -0,0 +1,47 @@
+package com.ksyun.ks3.services.handler;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.DeleteObjectResult;
+import com.ksyun.ks3.services.request.DeleteObjectRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+public abstract class DeleteObjectResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(DeleteObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(DeleteObjectRequest request, DeleteObjectResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ DeleteObjectResult result = new DeleteObjectResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((DeleteObjectRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((DeleteObjectRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteObjectTaggingResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteObjectTaggingResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..e68afc3bb013aca9d475b5d43e3b9e250738f10d
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/DeleteObjectTaggingResponseHandler.java
@@ -0,0 +1,47 @@
+package com.ksyun.ks3.services.handler;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.DeleteObjectTaggingResult;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.tag.DeleteObjectTaggingRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+public abstract class DeleteObjectTaggingResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(DeleteObjectTaggingRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(DeleteObjectTaggingRequest request, DeleteObjectTaggingResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ DeleteObjectTaggingResult result = new DeleteObjectTaggingResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((DeleteObjectTaggingRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((DeleteObjectTaggingRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/FileAsyncHttpResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/FileAsyncHttpResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..d3cb21d7298a7c7cd75a292f882247b4491d09a1
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/FileAsyncHttpResponseHandler.java
@@ -0,0 +1,164 @@
+package com.ksyun.ks3.services.handler;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.Constants;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import okhttp3.Call;
+import okhttp3.Headers;
+import okhttp3.Response;
+
+public abstract class FileAsyncHttpResponseHandler extends AsyncHttpResponseHandler {
+
+ protected final File file;
+ protected final boolean append;
+ protected final boolean renameIfExists;
+ Ks3HttpRequest request;
+
+ public FileAsyncHttpResponseHandler(File file) {
+ this(file, false);
+ }
+
+ public FileAsyncHttpResponseHandler(File file, boolean append) {
+ this(file, append, false);
+ }
+
+ public FileAsyncHttpResponseHandler(File file, boolean append, boolean renameTargetFileIfExists) {
+ this(file, append, renameTargetFileIfExists, false);
+ }
+
+ public FileAsyncHttpResponseHandler(File file, boolean append, boolean renameTargetFileIfExists, boolean usePoolThread) {
+ this.file = file;
+ this.append = append;
+ this.renameIfExists = renameTargetFileIfExists;
+ }
+
+ public FileAsyncHttpResponseHandler(Context context) {
+ this.file = this.getTemporaryFile(context);
+ this.append = false;
+ this.renameIfExists = false;
+ }
+
+ protected File getTemporaryFile(Context context) {
+ try {
+ return File.createTempFile("temp_", "_handled", context.getCacheDir());
+ } catch (IOException var3) {
+ Log.e(Constants.LOG_TAG, "Cannot create temporary file", var3);
+ return null;
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, IOException e) {
+ if (!call.isCanceled()) {
+ call.cancel();
+ }
+ e.printStackTrace();
+ Log.e(Constants.LOG_TAG, e.toString());
+ }
+
+ public void onResponse(Call call, Response response) {
+ Headers headers = response.headers();
+ int code = response.code();
+ try {
+ if (code < 300 & code >= 200) {
+ // 写流到文件中
+ getResponseData(response);
+ onSuccess(request, code, headers, null);
+ } else {
+ Ks3ServiceException serviceException = new Ks3ServiceException(code, headers, response.body().bytes());
+ onFailure(request, null, serviceException);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ Log.e(Constants.LOG_TAG, e.toString());
+ if (call.isExecuted() && call.isCanceled()) {
+ onCancel();
+ } else {
+ onFailure(request, new Ks3ClientException(e), null);
+ }
+ }
+ }
+
+ protected File getOriginalFile() {
+ return this.file;
+ }
+
+ protected File getTargetFileByParsingURL(String requestURL) {
+ String filename = requestURL.substring(requestURL.lastIndexOf(47) + 1, requestURL.length());
+ File targetFileRtn = new File(this.getOriginalFile(), filename);
+ if (targetFileRtn.exists() && this.renameIfExists) {
+ String format;
+ if (!filename.contains(".")) {
+ format = filename + " (%d)";
+ } else {
+ format = filename.substring(0, filename.lastIndexOf(46)) + " (%d)" + filename.substring(filename.lastIndexOf(46), filename.length());
+ }
+
+ int index = 0;
+
+ while (true) {
+ targetFileRtn = new File(this.getOriginalFile(), String.format(format, index));
+ if (!targetFileRtn.exists()) {
+ return targetFileRtn;
+ }
+
+ ++index;
+ }
+ } else {
+ return targetFileRtn;
+ }
+ }
+
+ protected byte[] getResponseData(Response entity) throws IOException {
+ if (entity != null) {
+ InputStream instream = entity.body().byteStream();
+ FileOutputStream buffer = new FileOutputStream(this.file, this.append);
+ if (instream != null) {
+ try {
+ byte[] tmp = new byte[4096];
+ int count = 0;
+
+ int l;
+ while ((l = instream.read(tmp)) != -1 && !Thread.currentThread().isInterrupted()) {
+ count += l;
+ buffer.write(tmp, 0, l);
+ }
+ } catch (IOException e) {
+
+ } finally {
+ buffer.flush();
+ buffer.close();
+ }
+ }
+ }
+
+ return null;
+ }
+
+
+ public abstract void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response);
+
+ public abstract void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onRetry(int retryNo);
+
+ public void onCancel() {
+ }
+
+ ;
+
+ public void onProgress(long bytesWritten, long totalSize) {
+ }
+
+
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketACLResponceHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketACLResponceHandler.java
deleted file mode 100644
index 135c5204dd9913bdd178dfd696c0f077a012c972..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketACLResponceHandler.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package com.ksyun.ks3.services.handler;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-
-import cz.msebera.android.httpclient.Header;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-import org.xmlpull.v1.XmlPullParserFactory;
-
-import com.ksyun.ks3.exception.Ks3Error;
-import com.ksyun.ks3.model.Owner;
-import com.ksyun.ks3.model.acl.AccessControlList;
-import com.ksyun.ks3.model.acl.AccessControlPolicy;
-import com.ksyun.ks3.model.acl.Grant;
-import com.ksyun.ks3.model.acl.Grantee;
-import com.ksyun.ks3.model.acl.GranteeEmail;
-import com.ksyun.ks3.model.acl.GranteeId;
-import com.ksyun.ks3.model.acl.GranteeUri;
-import com.ksyun.ks3.model.acl.Permission;
-
-public abstract class GetBucketACLResponceHandler extends Ks3HttpResponceHandler{
-
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders,String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders,AccessControlPolicy accessControlPolicy);
-
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders, byte[] response) {
- this.onSuccess(statesCode, responceHeaders, parseXml(responceHeaders, response));
- }
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode, error, responceHeaders, response == null?"":new String(response), throwable);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
-
- @Override
- public final void onStart() {}
-
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
-
- private AccessControlPolicy parseXml(Header[] responceHeaders, byte[] response) {
- XmlPullParserFactory factory;
- Grantee grantee=null;
- Grant grant = null;
- AccessControlList accessControlList = null;
- Owner owner = null;
- Permission permission = null;
- AccessControlPolicy accessControlPolicy = null;
- try {
- factory = XmlPullParserFactory.newInstance();
- XmlPullParser parse = factory.newPullParser();
- parse.setInput(new ByteArrayInputStream(response), "UTF-8");
- int eventType = parse.getEventType();
- while (XmlPullParser.END_DOCUMENT != eventType) {
- String nodeName = parse.getName();
- switch (eventType) {
- case XmlPullParser.START_DOCUMENT:
- break;
- case XmlPullParser.END_DOCUMENT:
- break;
- case XmlPullParser.START_TAG:
- if("AccessControlPolicy".equalsIgnoreCase(nodeName)){
- accessControlPolicy = new AccessControlPolicy();
- }
- if ("Owner".equalsIgnoreCase(nodeName)) {
- owner = new Owner();
- parse.next();
- nodeName = parse.getName();
- if ("ID".equalsIgnoreCase(nodeName)) {
- owner.setId(parse.nextText());
- }
- parse.next();
- nodeName = parse.getName();
- if ("DisplayName".equalsIgnoreCase(nodeName)) {
- owner.setDisplayName(parse.nextText());
- }
- }
-
- if (nodeName.equalsIgnoreCase("AccessControlList")) {
- accessControlList = new AccessControlList();
- }
-
- if ("Grant".equalsIgnoreCase(nodeName)) {
- grant = new Grant();
- }
- if ("Grantee".equalsIgnoreCase(nodeName)) {
- parse.next();
- nodeName = parse.getName();
- if ("EmailAddress".equalsIgnoreCase(nodeName)) {
- grantee = new GranteeEmail();
- grantee.setIdentifier(parse.nextText());
- }else if("URI".equalsIgnoreCase(nodeName)){
- grantee = GranteeUri.parse(parse.nextText());
- }else if("ID".equalsIgnoreCase(nodeName)){
- grantee = new GranteeId();
- grantee.setIdentifier(parse.nextText());
- }
- }
- if("Permission".equalsIgnoreCase(nodeName)){
- permission = Permission.getInstance(parse.nextText());
- }
- break;
- case XmlPullParser.END_TAG:
- if (nodeName.equalsIgnoreCase("AccessControlList")) {
- }
- if ("Grant".equalsIgnoreCase(nodeName)) {
- grant.setGrantee(grantee);
- grant.setPermission(permission);
- accessControlList.addGrant(grant);
- }
- if("AccessControlPolicy".equalsIgnoreCase(nodeName)){
- accessControlPolicy.setAccessControlList(accessControlList);
- accessControlPolicy.setOwner(owner);
- }
- break;
- case XmlPullParser.TEXT:
-
- break;
- default:
- break;
- }
- eventType = parse.next();
- }
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return accessControlPolicy;
- }
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketACLResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketACLResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..c96d6bf8e8f532360d759ebf20a97a2060affb2a
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketACLResponseHandler.java
@@ -0,0 +1,156 @@
+package com.ksyun.ks3.services.handler;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+import org.xmlpull.v1.XmlPullParserFactory;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.Owner;
+import com.ksyun.ks3.model.acl.AccessControlList;
+import com.ksyun.ks3.model.acl.AccessControlPolicy;
+import com.ksyun.ks3.model.acl.Grant;
+import com.ksyun.ks3.model.acl.Grantee;
+import com.ksyun.ks3.model.acl.GranteeEmail;
+import com.ksyun.ks3.model.acl.GranteeId;
+import com.ksyun.ks3.model.acl.GranteeUri;
+import com.ksyun.ks3.model.acl.Permission;
+import com.ksyun.ks3.model.result.GetBucketACLResult;
+import com.ksyun.ks3.services.request.GetBucketACLRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+public abstract class GetBucketACLResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(GetBucketACLRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(GetBucketACLRequest request, GetBucketACLResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ GetBucketACLResult result = new GetBucketACLResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ result.setAccessControlPolicy(parseXml(response));
+ this.onSuccess((GetBucketACLRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((GetBucketACLRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+
+ private AccessControlPolicy parseXml(byte[] response) {
+ XmlPullParserFactory factory;
+ Grantee grantee = null;
+ Grant grant = null;
+ AccessControlList accessControlList = null;
+ Owner owner = null;
+ Permission permission = null;
+ AccessControlPolicy accessControlPolicy = null;
+ try {
+ factory = XmlPullParserFactory.newInstance();
+ XmlPullParser parse = factory.newPullParser();
+ parse.setInput(new ByteArrayInputStream(response), "UTF-8");
+ int eventType = parse.getEventType();
+ while (XmlPullParser.END_DOCUMENT != eventType) {
+ String nodeName = parse.getName();
+ switch (eventType) {
+ case XmlPullParser.START_DOCUMENT:
+ break;
+ case XmlPullParser.END_DOCUMENT:
+ break;
+ case XmlPullParser.START_TAG:
+ if ("AccessControlPolicy".equalsIgnoreCase(nodeName)) {
+ accessControlPolicy = new AccessControlPolicy();
+ }
+ if ("Owner".equalsIgnoreCase(nodeName)) {
+ owner = new Owner();
+ parse.next();
+ nodeName = parse.getName();
+ if ("ID".equalsIgnoreCase(nodeName)) {
+ owner.setId(parse.nextText());
+ }
+ parse.next();
+ nodeName = parse.getName();
+ if ("DisplayName".equalsIgnoreCase(nodeName)) {
+ owner.setDisplayName(parse.nextText());
+ }
+ }
+
+ if (nodeName.equalsIgnoreCase("AccessControlList")) {
+ accessControlList = new AccessControlList();
+ }
+
+ if ("Grant".equalsIgnoreCase(nodeName)) {
+ grant = new Grant();
+ }
+ if ("Grantee".equalsIgnoreCase(nodeName)) {
+ parse.next();
+ nodeName = parse.getName();
+ if ("EmailAddress".equalsIgnoreCase(nodeName)) {
+ grantee = new GranteeEmail();
+ grantee.setIdentifier(parse.nextText());
+ } else if ("URI".equalsIgnoreCase(nodeName)) {
+ grantee = GranteeUri.parse(parse.nextText());
+ } else if ("ID".equalsIgnoreCase(nodeName)) {
+ grantee = new GranteeId();
+ grantee.setIdentifier(parse.nextText());
+ }
+ }
+ if ("Permission".equalsIgnoreCase(nodeName)) {
+ permission = Permission.getInstance(parse.nextText());
+ }
+ break;
+ case XmlPullParser.END_TAG:
+ if (nodeName.equalsIgnoreCase("AccessControlList")) {
+ }
+ if ("Grant".equalsIgnoreCase(nodeName)) {
+ grant.setGrantee(grantee);
+ grant.setPermission(permission);
+ accessControlList.addGrant(grant);
+ }
+ if ("AccessControlPolicy".equalsIgnoreCase(nodeName)) {
+ accessControlPolicy.setAccessControlList(accessControlList);
+ accessControlPolicy.setOwner(owner);
+ }
+ break;
+ case XmlPullParser.TEXT:
+
+ break;
+ default:
+ break;
+ }
+ eventType = parse.next();
+ }
+ } catch (XmlPullParserException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return accessControlPolicy;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketPolicyResponceHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketPolicyResponceHandler.java
deleted file mode 100644
index 526a1bf5296092c0a0282040b473e37ffa3bf25e..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketPolicyResponceHandler.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.ksyun.ks3.services.handler;
-
-import com.google.gson.Gson;
-import com.ksyun.ks3.exception.Ks3Error;
-
-import cz.msebera.android.httpclient.Header;
-
-public abstract class GetBucketPolicyResponceHandler extends Ks3HttpResponceHandler {
-
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders, String policy);
-
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders, byte[] response) {
- this.onSuccess(statesCode, responceHeaders, parseKJsop(responceHeaders, response));
- }
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
- com.ksyun.ks3.exception.Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode, error, responceHeaders, response == null ? "" : new String(response), throwable);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {
- }
-
- @Override
- public final void onStart() {
- }
-
- @Override
- public final void onFinish() {
- }
-
- @Override
- public final void onCancel() {
- }
-
- private String parseKJsop(cz.msebera.android.httpclient.Header[] responceHeaders, byte[] response) {
-
- String bucketPolicy = null;
- try {
- bucketPolicy = new String(response);
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- return bucketPolicy;
- }
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketPolicyResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketPolicyResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..c749369bfb03cc47e24ebaa58ba6483d7d42a668
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketPolicyResponseHandler.java
@@ -0,0 +1,59 @@
+package com.ksyun.ks3.services.handler;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.GetBucketPolicyResult;
+import com.ksyun.ks3.services.request.GetBucketPolicyRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+public abstract class GetBucketPolicyResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(GetBucketPolicyRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(GetBucketPolicyRequest request, GetBucketPolicyResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ GetBucketPolicyResult result = new GetBucketPolicyResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ result.setPolicy(parseJson(response));
+ this.onSuccess((GetBucketPolicyRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((GetBucketPolicyRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+
+ private String parseJson(byte[] response) {
+
+ String bucketPolicy = null;
+ try {
+ bucketPolicy = new String(response);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return bucketPolicy;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketQuotaResponceHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketQuotaResponseHandler.java
similarity index 59%
rename from ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketQuotaResponceHandler.java
rename to ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketQuotaResponseHandler.java
index 460643d5ad861594888f252025a022f1c53392d6..ff5af07e45587d72ad8aaf4e99288ea8c8b63146 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketQuotaResponceHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketQuotaResponseHandler.java
@@ -1,9 +1,12 @@
package com.ksyun.ks3.services.handler;
-import com.google.gson.Gson;
-import com.ksyun.ks3.exception.Ks3Error;
-import com.ksyun.ks3.model.result.BucketQuota;
-import com.ksyun.ks3.model.result.ReplicationRule;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.BucketQuota;
+import com.ksyun.ks3.model.result.GetBucketQuotaResult;
+import com.ksyun.ks3.services.request.GetBucketQuotaRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -11,27 +14,26 @@ import org.xmlpull.v1.XmlPullParserFactory;
import java.io.ByteArrayInputStream;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import cz.msebera.android.httpclient.Header;
+import okhttp3.Headers;
-public abstract class GetBucketQuotaResponceHandler extends Ks3HttpResponceHandler {
+public abstract class GetBucketQuotaResponseHandler extends Ks3HttpResponseHandler {
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders, BucketQuota quota);
+ public abstract void onFailure(GetBucketQuotaRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+ public abstract void onSuccess(GetBucketQuotaRequest request, GetBucketQuotaResult result);
@Override
- public final void onSuccess(int statesCode, Header[] responceHeaders, byte[] response) {
- this.onSuccess(statesCode, responceHeaders, parseaXML(responceHeaders, response));
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ GetBucketQuotaResult result = parseXML(response);
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((GetBucketQuotaRequest) request, result);
}
@Override
- public final void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
- com.ksyun.ks3.exception.Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode, error, responceHeaders, response == null ? "" : new String(response), throwable);
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((GetBucketQuotaRequest) request, clientException, serviceException);
}
@Override
@@ -50,7 +52,8 @@ public abstract class GetBucketQuotaResponceHandler extends Ks3HttpResponceHandl
public final void onCancel() {
}
- private BucketQuota parseaXML(cz.msebera.android.httpclient.Header[] responceHeaders, byte[] response) {
+ private GetBucketQuotaResult parseXML(byte[] response) {
+ GetBucketQuotaResult result = new GetBucketQuotaResult();
XmlPullParserFactory factory;
BucketQuota quota = null;
try {
@@ -93,6 +96,7 @@ public abstract class GetBucketQuotaResponceHandler extends Ks3HttpResponceHandl
} catch (Exception e) {
e.printStackTrace();
}
- return quota;
+ result.setBucketQuota(quota);
+ return result;
}
-}
+}
\ No newline at end of file
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketReplicationConfigResponceHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketReplicationResponseHandler.java
similarity index 67%
rename from ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketReplicationConfigResponceHandler.java
rename to ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketReplicationResponseHandler.java
index bd0b4257561973551cf99938263f3e314571904a..b6dfaa03f0d44a50e661bc925d745674e779e797 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketReplicationConfigResponceHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetBucketReplicationResponseHandler.java
@@ -1,10 +1,13 @@
package com.ksyun.ks3.services.handler;
-import com.ksyun.ks3.exception.Ks3Error;
-import com.ksyun.ks3.model.result.ReplicationRule;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.GetBucketReplicationResult;
+import com.ksyun.ks3.model.ReplicationRule;
+import com.ksyun.ks3.services.request.GetBucketReplicationRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
-import org.json.JSONException;
-import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
@@ -14,24 +17,26 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import cz.msebera.android.httpclient.Header;
+import okhttp3.Headers;
-public abstract class GetBucketReplicationConfigResponceHandler extends Ks3HttpResponceHandler {
+public abstract class GetBucketReplicationResponseHandler extends Ks3HttpResponseHandler {
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders, ReplicationRule replicationRule);
+ public abstract void onFailure(GetBucketReplicationRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+ public abstract void onSuccess(GetBucketReplicationRequest request, GetBucketReplicationResult result);
@Override
- public final void onSuccess(int statesCode, Header[] responceHeaders, byte[] response) {
- this.onSuccess(statesCode, responceHeaders, parseXml(responceHeaders, response));
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ GetBucketReplicationResult result = new GetBucketReplicationResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ result.setReplicationRule(parseXml(response));
+ this.onSuccess((GetBucketReplicationRequest) request, result);
}
@Override
- public final void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
- com.ksyun.ks3.exception.Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode, error, responceHeaders, response == null ? "" : new String(response), throwable);
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((GetBucketReplicationRequest) request, clientException, serviceException);
}
@Override
@@ -50,7 +55,7 @@ public abstract class GetBucketReplicationConfigResponceHandler extends Ks3HttpR
public final void onCancel() {
}
- private ReplicationRule parseXml(cz.msebera.android.httpclient.Header[] responceHeaders, byte[] response) {
+ private ReplicationRule parseXml(byte[] response) {
XmlPullParserFactory factory;
ReplicationRule replicationRule = null;
List prefixList = null;
@@ -68,7 +73,7 @@ public abstract class GetBucketReplicationConfigResponceHandler extends Ks3HttpR
case XmlPullParser.END_DOCUMENT:
break;
case XmlPullParser.START_TAG:
- if ("Replication".equalsIgnoreCase(nodeName)) {
+ if ("Replication".equalsIgnoreCase(nodeName) || "ns2:Replication".equalsIgnoreCase(nodeName)) {
replicationRule = new ReplicationRule();
}
if ("prefix".equalsIgnoreCase(nodeName)) {
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectACLResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectACLResponseHandler.java
index 78b7a7a42d50789f416a880c7ba3d478f52e25e9..de26b7870c083b9d4501ddeec90ef6142020481c 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectACLResponseHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectACLResponseHandler.java
@@ -3,12 +3,12 @@ package com.ksyun.ks3.services.handler;
import java.io.ByteArrayInputStream;
import java.io.IOException;
-import cz.msebera.android.httpclient.Header;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
-import com.ksyun.ks3.exception.Ks3Error;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
import com.ksyun.ks3.model.Owner;
import com.ksyun.ks3.model.acl.AccessControlList;
import com.ksyun.ks3.model.acl.AccessControlPolicy;
@@ -18,128 +18,142 @@ import com.ksyun.ks3.model.acl.GranteeEmail;
import com.ksyun.ks3.model.acl.GranteeId;
import com.ksyun.ks3.model.acl.GranteeUri;
import com.ksyun.ks3.model.acl.Permission;
+import com.ksyun.ks3.model.result.CompleteMultipartUploadResult;
+import com.ksyun.ks3.model.result.GetObjectACLResult;
+import com.ksyun.ks3.services.request.CompleteMultipartUploadRequest;
+import com.ksyun.ks3.services.request.GetObjectACLRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
-public abstract class GetObjectACLResponseHandler extends Ks3HttpResponceHandler{
-
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders,String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders,AccessControlPolicy accessControlPolicy);
-
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- this.onSuccess(statesCode, responceHeaders, parseXml(responceHeaders, response));
- }
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode, error,responceHeaders, response==null?"":new String(response), throwable);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
-
- @Override
- public final void onStart() {}
-
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
-
-
- private AccessControlPolicy parseXml(Header[] responceHeaders, byte[] response) {
- XmlPullParserFactory factory;
- Grantee grantee=null;
- Grant grant = null;
- AccessControlList accessControlList = null;
- Owner owner = null;
- Permission permission = null;
- AccessControlPolicy accessControlPolicy = null;
- try {
- factory = XmlPullParserFactory.newInstance();
- XmlPullParser parse = factory.newPullParser();
- parse.setInput(new ByteArrayInputStream(response), "UTF-8");
- int eventType = parse.getEventType();
- while (XmlPullParser.END_DOCUMENT != eventType) {
- String nodeName = parse.getName();
- switch (eventType) {
- case XmlPullParser.START_DOCUMENT:
- break;
- case XmlPullParser.END_DOCUMENT:
- break;
- case XmlPullParser.START_TAG:
- if("AccessControlPolicy".equalsIgnoreCase(nodeName)){
- accessControlPolicy = new AccessControlPolicy();
- }
- if ("Owner".equalsIgnoreCase(nodeName)) {
- owner = new Owner();
- parse.next();
- nodeName = parse.getName();
- System.out.println("Node name :" + nodeName);
- if ("ID".equalsIgnoreCase(nodeName)) {
- owner.setId(parse.nextText());
- }
- }
-
- if ("DisplayName".equalsIgnoreCase(nodeName)) {
- owner.setDisplayName(parse.nextText());
- }
-
- if (nodeName.equalsIgnoreCase("AccessControlList")) {
- accessControlList = new AccessControlList();
- }
-
- if ("Grant".equalsIgnoreCase(nodeName)) {
- grant = new Grant();
- }
- if ("Grantee".equalsIgnoreCase(nodeName)) {
- parse.next();
- nodeName = parse.getName();
- if ("EmailAddress".equalsIgnoreCase(nodeName)) {
- grantee = new GranteeEmail();
- grantee.setIdentifier(parse.nextText());
- }else if("URI".equalsIgnoreCase(nodeName)){
- grantee = GranteeUri.parse(parse.nextText());
- }else if("ID".equalsIgnoreCase(nodeName)){
- grantee = new GranteeId();
- grantee.setIdentifier(parse.nextText());
- }
- }
- if("Permission".equalsIgnoreCase(nodeName)){
- permission = Permission.getInstance(parse.nextText());
- }
- break;
- case XmlPullParser.END_TAG:
- if (nodeName.equalsIgnoreCase("AccessControlList")) {
- }
- if ("Grant".equalsIgnoreCase(nodeName)) {
- grant.setGrantee(grantee);
- grant.setPermission(permission);
- accessControlList.addGrant(grant);
- }
- if("AccessControlPolicy".equalsIgnoreCase(nodeName)){
- accessControlPolicy.setAccessControlList(accessControlList);
- accessControlPolicy.setOwner(owner);
- }
- break;
- case XmlPullParser.TEXT:
-
- break;
- default:
- break;
- }
- eventType = parse.next();
- }
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return accessControlPolicy;
- }
+import okhttp3.Headers;
+
+public abstract class GetObjectACLResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(GetObjectACLRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(GetObjectACLRequest request, GetObjectACLResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ GetObjectACLResult result = new GetObjectACLResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ result.setAccessControlPolicy(parseXml(response));
+ this.onSuccess((GetObjectACLRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((GetObjectACLRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+
+
+ private AccessControlPolicy parseXml(byte[] response) {
+ XmlPullParserFactory factory;
+ Grantee grantee = null;
+ Grant grant = null;
+ AccessControlList accessControlList = null;
+ Owner owner = null;
+ Permission permission = null;
+ AccessControlPolicy accessControlPolicy = null;
+ try {
+ factory = XmlPullParserFactory.newInstance();
+ XmlPullParser parse = factory.newPullParser();
+ parse.setInput(new ByteArrayInputStream(response), "UTF-8");
+ int eventType = parse.getEventType();
+ while (XmlPullParser.END_DOCUMENT != eventType) {
+ String nodeName = parse.getName();
+ switch (eventType) {
+ case XmlPullParser.START_DOCUMENT:
+ break;
+ case XmlPullParser.END_DOCUMENT:
+ break;
+ case XmlPullParser.START_TAG:
+ if ("AccessControlPolicy".equalsIgnoreCase(nodeName)) {
+ accessControlPolicy = new AccessControlPolicy();
+ }
+ if ("Owner".equalsIgnoreCase(nodeName)) {
+ owner = new Owner();
+ parse.next();
+ nodeName = parse.getName();
+ System.out.println("Node name :" + nodeName);
+ if ("ID".equalsIgnoreCase(nodeName)) {
+ owner.setId(parse.nextText());
+ }
+ }
+
+ if ("DisplayName".equalsIgnoreCase(nodeName)) {
+ owner.setDisplayName(parse.nextText());
+ }
+
+ if (nodeName.equalsIgnoreCase("AccessControlList")) {
+ accessControlList = new AccessControlList();
+ }
+
+ if ("Grant".equalsIgnoreCase(nodeName)) {
+ grant = new Grant();
+ }
+ if ("Grantee".equalsIgnoreCase(nodeName)) {
+ parse.next();
+ nodeName = parse.getName();
+ if ("EmailAddress".equalsIgnoreCase(nodeName)) {
+ grantee = new GranteeEmail();
+ grantee.setIdentifier(parse.nextText());
+ } else if ("URI".equalsIgnoreCase(nodeName)) {
+ grantee = GranteeUri.parse(parse.nextText());
+ } else if ("ID".equalsIgnoreCase(nodeName)) {
+ grantee = new GranteeId();
+ grantee.setIdentifier(parse.nextText());
+ }
+ }
+ if ("Permission".equalsIgnoreCase(nodeName)) {
+ permission = Permission.getInstance(parse.nextText());
+ }
+ break;
+ case XmlPullParser.END_TAG:
+ if (nodeName.equalsIgnoreCase("AccessControlList")) {
+ }
+ if ("Grant".equalsIgnoreCase(nodeName)) {
+ grant.setGrantee(grantee);
+ grant.setPermission(permission);
+ accessControlList.addGrant(grant);
+ }
+ if ("AccessControlPolicy".equalsIgnoreCase(nodeName)) {
+ accessControlPolicy.setAccessControlList(accessControlList);
+ accessControlPolicy.setOwner(owner);
+ }
+ break;
+ case XmlPullParser.TEXT:
+
+ break;
+ default:
+ break;
+ }
+ eventType = parse.next();
+ }
+ } catch (XmlPullParserException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return accessControlPolicy;
+ }
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectAdpResponceHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectAdpResponseHandler.java
similarity index 68%
rename from ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectAdpResponceHandler.java
rename to ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectAdpResponseHandler.java
index a26d61af816aa4eeeccf51deadddc8bae6335974..bbafd8bcd6cd9c6be345d6fc358b57552e87b0c5 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectAdpResponceHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectAdpResponseHandler.java
@@ -1,7 +1,12 @@
package com.ksyun.ks3.services.handler;
-import com.ksyun.ks3.exception.Ks3Error;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.GetObjectAdpResult;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
import com.ksyun.ks3.services.request.adp.AdpTask;
+import com.ksyun.ks3.services.request.adp.GetObjectAdpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -10,24 +15,26 @@ import org.xmlpull.v1.XmlPullParserFactory;
import java.io.ByteArrayInputStream;
import java.io.IOException;
-import cz.msebera.android.httpclient.Header;
+import okhttp3.Headers;
-public abstract class GetObjectAdpResponceHandler extends Ks3HttpResponceHandler {
+public abstract class GetObjectAdpResponseHandler extends Ks3HttpResponseHandler {
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders, AdpTask adpTask);
+ public abstract void onFailure(GetObjectAdpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+ public abstract void onSuccess(GetObjectAdpRequest request, GetObjectAdpResult result);
@Override
- public final void onSuccess(int statesCode, Header[] responceHeaders, byte[] response) {
- this.onSuccess(statesCode, responceHeaders, parseaXML(response));
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ GetObjectAdpResult result = new GetObjectAdpResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ result.setAdpTask(parseXML(response));
+ this.onSuccess((GetObjectAdpRequest) request, result);
}
@Override
- public final void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
- com.ksyun.ks3.exception.Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode, error, responceHeaders, response == null ? "" : new String(response), throwable);
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((GetObjectAdpRequest) request, clientException, serviceException);
}
@Override
@@ -46,7 +53,7 @@ public abstract class GetObjectAdpResponceHandler extends Ks3HttpResponceHandler
public final void onCancel() {
}
- private AdpTask parseaXML(byte[] response) {
+ private AdpTask parseXML(byte[] response) {
XmlPullParserFactory factory;
AdpTask adpTask = null;
try {
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectResponseHandler.java
index 0ae9e4c7b6f5d04f48de2f0c8d7584197edee1dd..7827430eb06531dc7c79f3df4e60b7cf236404ea 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectResponseHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectResponseHandler.java
@@ -2,18 +2,21 @@ package com.ksyun.ks3.services.handler;
import java.io.File;
-import cz.msebera.android.httpclient.Header;
-import com.ksyun.ks3.exception.Ks3Error;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
import com.ksyun.ks3.model.HttpHeaders;
import com.ksyun.ks3.model.ObjectMetadata;
-import com.ksyun.ks3.model.ObjectMetadata.Meta;
import com.ksyun.ks3.model.result.GetObjectResult;
+import com.ksyun.ks3.model.transfer.RequestProgressListener;
+import com.ksyun.ks3.services.request.GetObjectRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
import com.ksyun.ks3.util.Md5Utils;
-import com.loopj.android.http.FileAsyncHttpResponseHandler;
+import com.ksyun.ks3.util.ResponseUtils;
-public abstract class GetObjectResponseHandler extends
- FileAsyncHttpResponseHandler {
+import okhttp3.Headers;
+
+public abstract class GetObjectResponseHandler extends FileAsyncHttpResponseHandler implements RequestProgressListener {
private String mBucketName;
private String mObjectKey;
@@ -22,91 +25,64 @@ public abstract class GetObjectResponseHandler extends
super(file, append);
}
- public GetObjectResponseHandler(File file, String buckName, String objectKey) {
+ public GetObjectResponseHandler(File file, String bucketName, String objectKey) {
this(file, false);
- this.mBucketName = buckName;
+ this.mBucketName = bucketName;
this.mObjectKey = objectKey;
}
public abstract void onTaskProgress(double progress);
- public abstract void onTaskStart();
-
- public abstract void onTaskFinish();
+ public abstract void onSuccess(GetObjectRequest request, GetObjectResult result);
public abstract void onTaskCancel();
- public abstract void onTaskSuccess(int paramInt, Header[] paramArrayOfHeader,
- GetObjectResult getObjectResult);
-
- public abstract void onTaskFailure(int paramInt, Ks3Error error, Header[] paramArrayOfHeader,
- Throwable paramThrowable, File paramFile);
-
-
- @Override
- public final void onFailure(int statesCode, Header[] paramArrayOfHeader, Throwable throwable,
- File paramFile) {
- Ks3Error error = new Ks3Error(statesCode, new byte[]{}, throwable);
- this.onTaskFailure(statesCode, error, paramArrayOfHeader, throwable, paramFile);
- }
-
+ public abstract void onFailure(GetObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
@Override
- public final void onSuccess(int paramInt, Header[] paramArrayOfHeader, File paramFile) {
- this.onTaskSuccess(paramInt, paramArrayOfHeader,
- parse(paramInt, paramArrayOfHeader, paramFile));
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((GetObjectRequest) request, clientException, serviceException);
}
-
@Override
- public final void onProgress(long bytesWritten, long totalSize) {
- double progress =
- Double.valueOf(totalSize > 0 ? bytesWritten * 1.0D / totalSize * 100.0D : -1.0D);
+ public void onProgress(long bytesWritten, long totalSize) {
+ double progress = Double.valueOf(totalSize > 0 ? bytesWritten * 1.0D / totalSize * 100.0D : -1.0D);
onTaskProgress(progress);
}
@Override
- public final void onStart() {
- onTaskStart();
+ public void onRetry(int retryNo) {
}
@Override
- public final void onFinish() {
- onTaskFinish();
+ public void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ GetObjectResult result = parse(statusCode, responseHeaders);
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((GetObjectRequest) request, result);
}
- @Override
- public final void onCancel() {
- onTaskCancel();
- }
-
- @Override
- public final boolean deleteTargetFile() {
- return (getTargetFile() != null) && (getTargetFile().delete());
- }
@Override
- public final File getTargetFile() {
- assert (this.file != null);
- return this.file;
+ public void onCancel() {
+ this.onTaskCancel();
}
- private GetObjectResult parse(int statesCode, Header[] responceHeaders, File file) {
+ private GetObjectResult parse(int statusCode, Headers responseHeaders) {
GetObjectResult result = new GetObjectResult();
ObjectMetadata metaData = new ObjectMetadata();
result.getObject().setBucketName(mBucketName);
result.getObject().setKey(mObjectKey);
- if (statesCode == 200 || statesCode == 206) {
- result.getObject().setFile(file);
- Header[] headers = responceHeaders;
- for (int i = 0; i < headers.length; i++) {
- String name = headers[i].getName();
- String value = headers[i].getValue();
+ if (statusCode == 200 || statusCode == 206) {
+ Headers header = responseHeaders;
+ for (int i = 0; i < header.size(); i++) {
+ String name = header.name(i);
+ String value = header.value(i);
if (HttpHeaders.XKssWebsiteRedirectLocation.toString().equalsIgnoreCase(name)) {
result.getObject().setRedirectLocation(value);
} else if (name.startsWith(ObjectMetadata.userMetaPrefix)) {
- metaData.addOrEditUserMeta(headers[i].getName(), value);
+ metaData.addOrEditUserMeta(name, value);
} else {
if (name.equalsIgnoreCase(HttpHeaders.LastModified.toString())) {
@@ -140,7 +116,7 @@ public abstract class GetObjectResponseHandler extends
metaData.addOrEditMeta(ObjectMetadata.Meta.ContentType, value);
- } else if (name.equalsIgnoreCase(Meta.Expires.toString())) {
+ } else if (name.equalsIgnoreCase(ObjectMetadata.Meta.Expires.toString())) {
metaData.setExpires(value);
@@ -150,9 +126,9 @@ public abstract class GetObjectResponseHandler extends
}
}
result.getObject().setObjectMetadata(metaData);
- } else if (statesCode == 304) {
+ } else if (statusCode == 304) {
result.setIfModified(false);
- } else if (statesCode == 412) {
+ } else if (statusCode == 412) {
result.setIfPreconditionSuccess(false);
}
return result;
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectTaggingResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectTaggingResponseHandler.java
index 080024cda45b7da149e1278b0824044f31cb1db7..ee04dd5212f1eace8f5c0f4861e6fe759b5e5862 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectTaggingResponseHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/GetObjectTaggingResponseHandler.java
@@ -1,8 +1,13 @@
package com.ksyun.ks3.services.handler;
-import com.ksyun.ks3.exception.Ks3Error;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.GetObjectTaggingResult;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.tag.GetObjectTaggingRequest;
import com.ksyun.ks3.services.request.tag.ObjectTag;
import com.ksyun.ks3.services.request.tag.ObjectTagging;
+import com.ksyun.ks3.util.ResponseUtils;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -12,36 +17,44 @@ import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.ArrayList;
-import cz.msebera.android.httpclient.Header;
+import okhttp3.Headers;
-public abstract class GetObjectTaggingResponseHandler extends Ks3HttpResponceHandler {
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable);
+public abstract class GetObjectTaggingResponseHandler extends Ks3HttpResponseHandler {
- public abstract void onSuccess(int statesCode, Header[] responceHeaders,ObjectTagging tagging);
+ public abstract void onFailure(GetObjectTaggingRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(GetObjectTaggingRequest request, GetObjectTaggingResult result);
@Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- this.onSuccess(statesCode, responceHeaders, parseXml(response));
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ GetObjectTaggingResult result = new GetObjectTaggingResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ result.setTagging(parseXml(response));
+ this.onSuccess((GetObjectTaggingRequest) request, result);
}
@Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- onFailure(statesCode, error,responceHeaders, response == null ?"":new String(response), throwable);
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((GetObjectTaggingRequest) request, clientException, serviceException);
}
@Override
- public final void onProgress(long bytesWritten, long totalSize) {}
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
@Override
- public final void onStart() {}
+ public final void onStart() {
+ }
@Override
- public final void onFinish() {}
+ public final void onFinish() {
+ }
@Override
- public final void onCancel() {}
+ public final void onCancel() {
+ }
private ObjectTagging parseXml(byte[] response) {
XmlPullParserFactory factory;
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/HeadBucketResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/HeadBucketResponseHandler.java
index 16f0a3da38eb5fa97a3eb4ab536bb7dfd716b3ac..1f6ab783d9495a1d539bd79476f7262d02223f01 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/HeadBucketResponseHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/HeadBucketResponseHandler.java
@@ -1,35 +1,46 @@
package com.ksyun.ks3.services.handler;
-import cz.msebera.android.httpclient.Header;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.HeadBucketResult;
+import com.ksyun.ks3.services.request.HeadBucketRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
-import com.ksyun.ks3.exception.Ks3Error;
+import okhttp3.Headers;
-public abstract class HeadBucketResponseHandler extends Ks3HttpResponceHandler {
+public abstract class HeadBucketResponseHandler extends Ks3HttpResponseHandler {
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders,String response, Throwable paramThrowable);
+ public abstract void onFailure(HeadBucketRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
- public abstract void onSuccess(int statesCode, Header[] responceHeaders);
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- this.onSuccess(statesCode, responceHeaders);
- }
+ public abstract void onSuccess(HeadBucketRequest request, HeadBucketResult result);
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode,error, responceHeaders, response==null?"":new String(response), throwable);
- }
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ HeadBucketResult result = new HeadBucketResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((HeadBucketRequest) request, result);
+ }
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((HeadBucketRequest) request, clientException, serviceException);
+ }
- @Override
- public final void onStart() {}
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/HeadObjectResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/HeadObjectResponseHandler.java
index 60251ef1640d58db3b8ac532239fdb5a96907c2c..585c376d0858a7a039a30bfd952f0111756469b9 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/HeadObjectResponseHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/HeadObjectResponseHandler.java
@@ -1,100 +1,95 @@
package com.ksyun.ks3.services.handler;
-import cz.msebera.android.httpclient.Header;
-
-import com.ksyun.ks3.exception.Ks3Error;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
import com.ksyun.ks3.model.HttpHeaders;
import com.ksyun.ks3.model.ObjectMetadata;
import com.ksyun.ks3.model.ObjectMetadata.Meta;
import com.ksyun.ks3.model.result.HeadObjectResult;
+import com.ksyun.ks3.services.request.HeadObjectRequest;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
import com.ksyun.ks3.util.DateUtil;
+import com.ksyun.ks3.util.ResponseUtils;
import com.ksyun.ks3.util.StringUtils;
-public abstract class HeadObjectResponseHandler extends Ks3HttpResponceHandler {
+import okhttp3.Headers;
+
+public abstract class HeadObjectResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(HeadObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(HeadObjectRequest request, HeadObjectResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ HeadObjectResult result = parseHeaders(responseHeaders);
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((HeadObjectRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((HeadObjectRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders,String response, Throwable paramThrowable);
+ @Override
+ public final void onFinish() {
+ }
- public abstract void onSuccess(int statesCode, Header[] responceHeaders,HeadObjectResult headObjectResult);
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
+ @Override
+ public final void onCancel() {
+ }
- this.onSuccess(statesCode, responceHeaders, parseHeaders(responceHeaders));
- }
+ private HeadObjectResult parseHeaders(Headers responseHeaders) {
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode, error,responceHeaders, response==null?"":new String(response), throwable);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
+ HeadObjectResult result = new HeadObjectResult();
+ ObjectMetadata meta = new ObjectMetadata();
+ try {
+ Headers header = responseHeaders;
+ for (int i = 0; i < header.size(); i++) {
+ String name = header.name(i);
+ String value = header.value(i);
+ if (HttpHeaders.ETag.toString().equalsIgnoreCase(name)) {
+ result.setETag(value);
+ }
+ if (HttpHeaders.LastModified.toString().equalsIgnoreCase(name)) {
+ String dateStr = value;
+ if (!StringUtils.isBlank(dateStr))
+ result.setLastmodified(DateUtil.ConverToDate(dateStr));
+ }
+ if (name.startsWith(ObjectMetadata.userMetaPrefix)) {
+ meta.addOrEditUserMeta(name, value);
+ } else if (name.equalsIgnoreCase(Meta.CacheControl.toString())) {
+ meta.setCacheControl(value);
+ } else if (name.equalsIgnoreCase(Meta.ContentDisposition.toString())) {
+ meta.setContentDisposition(value);
+ } else if (name.equalsIgnoreCase(Meta.ContentEncoding.toString())) {
+ meta.setContentEncoding(value);
+ } else if (name.equalsIgnoreCase(Meta.ContentLength.toString())) {
+ meta.setContentLength(value);
+ } else if (name.equalsIgnoreCase(Meta.ContentType.toString())) {
+ meta.setContentType(value);
+ } else if (name.equalsIgnoreCase(Meta.Expires.toString())) {
+ meta.setExpires(value);
+ } else if (name.equalsIgnoreCase(Meta.XKssObjectTagCount.toString())) {
+ meta.setObjectTagCount(value);
+ }
+ result.setObjectMetadata(meta);
+ }
+ } catch (Exception exception) {
+ exception.printStackTrace();
+ }
- @Override
- public final void onStart() {}
+ return result;
+ }
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
-
- private HeadObjectResult parseHeaders(Header[] responceHeaders) {
-
- HeadObjectResult result = new HeadObjectResult();
- ObjectMetadata meta = new ObjectMetadata();
- try {
- for(int i = 0;i result;
- private Owner owner;
- private Bucket bucket;
-
- public abstract void onFailure(int statesCode, Ks3Error error,
- Header[] responceHeaders, String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders,
- ArrayList resultList);
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,
- byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- onFailure(statesCode, error, responceHeaders, response == null ? ""
- : new String(response), throwable);
- }
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,
- byte[] response) {
- ArrayList buckets = parseXml(responceHeaders, response);
- onSuccess(statesCode, responceHeaders, buckets);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {
- }
-
- @Override
- public final void onStart() {
- }
-
- @Override
- public final void onFinish() {
- }
-
- @Override
- public final void onCancel() {
- }
-
- private ArrayList parseXml(Header[] responceHeaders, byte[] response) {
- XmlPullParserFactory factory;
- try {
- factory = XmlPullParserFactory.newInstance();
- XmlPullParser parse = factory.newPullParser();
- parse.setInput(new ByteArrayInputStream(response), "UTF-8");
- int eventType = parse.getEventType();
- while (XmlPullParser.END_DOCUMENT != eventType) {
- String nodeName = parse.getName();
- switch (eventType) {
- case XmlPullParser.START_DOCUMENT:
- result = new ArrayList();
- break;
- case XmlPullParser.END_DOCUMENT:
-
- break;
- case XmlPullParser.START_TAG:
- if (nodeName.equalsIgnoreCase("Owner")) {
- owner = new Owner();
- }
- if (nodeName.equalsIgnoreCase("ID")) {
- owner.setId(parse.nextText());
- }
- if (nodeName.equalsIgnoreCase("DisplayName")) {
- owner.setDisplayName(parse.nextText());
- }
-
- if (nodeName.equalsIgnoreCase("Bucket")) {
- bucket = new Bucket();
- }
- if (nodeName.equalsIgnoreCase("Name")) {
- bucket.setName(parse.nextText());
- }
- if (nodeName.equalsIgnoreCase("CreationDate")) {
- String dateStr = parse.nextText();
- if (!StringUtils.isBlank(dateStr))
- bucket.setCreationDate(DateUtil
- .ConverToDate(dateStr));
- }
- break;
- case XmlPullParser.END_TAG:
- if (nodeName.equalsIgnoreCase("Bucket")) {
- bucket.setOwner(owner);
- result.add(bucket);
- }
-
- break;
- case XmlPullParser.TEXT:
-
- break;
- default:
- break;
- }
- eventType = parse.next();
- }
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (DateParseException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return result;
- }
-
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/ListBucketsResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/ListBucketsResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..36bb86634e33a8a6c8af74c2d80a2fba0aa309df
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/ListBucketsResponseHandler.java
@@ -0,0 +1,129 @@
+package com.ksyun.ks3.services.handler;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+import org.xmlpull.v1.XmlPullParserFactory;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.Bucket;
+import com.ksyun.ks3.model.Owner;
+import com.ksyun.ks3.model.result.ListBucketsResult;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.ListBucketsRequest;
+import com.ksyun.ks3.util.DateUtil;
+import com.ksyun.ks3.util.ResponseUtils;
+import com.ksyun.ks3.util.StringUtils;
+
+import okhttp3.Headers;
+
+public abstract class ListBucketsResponseHandler extends Ks3HttpResponseHandler {
+
+ private ArrayList result;
+ private Owner owner;
+ private Bucket bucket;
+
+ public abstract void onFailure(ListBucketsRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(ListBucketsRequest request, ListBucketsResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ ListBucketsResult result = new ListBucketsResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ result.setBuckets(parseXml(response));
+ this.onSuccess((ListBucketsRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((ListBucketsRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+
+ private ArrayList parseXml(byte[] response) {
+ XmlPullParserFactory factory;
+ try {
+ factory = XmlPullParserFactory.newInstance();
+ XmlPullParser parse = factory.newPullParser();
+ parse.setInput(new ByteArrayInputStream(response), "UTF-8");
+ int eventType = parse.getEventType();
+ while (XmlPullParser.END_DOCUMENT != eventType) {
+ String nodeName = parse.getName();
+ switch (eventType) {
+ case XmlPullParser.START_DOCUMENT:
+ result = new ArrayList();
+ break;
+ case XmlPullParser.END_DOCUMENT:
+
+ break;
+ case XmlPullParser.START_TAG:
+ if (nodeName.equalsIgnoreCase("Owner")) {
+ owner = new Owner();
+ }
+ if (nodeName.equalsIgnoreCase("ID")) {
+ owner.setId(parse.nextText());
+ }
+ if (nodeName.equalsIgnoreCase("DisplayName")) {
+ owner.setDisplayName(parse.nextText());
+ }
+
+ if (nodeName.equalsIgnoreCase("Bucket")) {
+ bucket = new Bucket();
+ }
+ if (nodeName.equalsIgnoreCase("Name")) {
+ bucket.setName(parse.nextText());
+ }
+ if (nodeName.equalsIgnoreCase("CreationDate")) {
+ String dateStr = parse.nextText();
+ if (!StringUtils.isBlank(dateStr))
+ bucket.setCreationDate(DateUtil
+ .ConverToDate(dateStr));
+ }
+ break;
+ case XmlPullParser.END_TAG:
+ if (nodeName.equalsIgnoreCase("Bucket")) {
+ bucket.setOwner(owner);
+ result.add(bucket);
+ }
+
+ break;
+ case XmlPullParser.TEXT:
+
+ break;
+ default:
+ break;
+ }
+ eventType = parse.next();
+ }
+ } catch (XmlPullParserException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
+
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/ListObjectsResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/ListObjectsResponseHandler.java
index 2733acef26cf29c1597bf3dda2d9870409232c59..c6f7924be8d9e7f0fa65ddf663d36c8bcceb4dae 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/ListObjectsResponseHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/ListObjectsResponseHandler.java
@@ -5,164 +5,177 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import cz.msebera.android.httpclient.Header;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
-import com.ksyun.ks3.exception.Ks3Error;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
import com.ksyun.ks3.model.Ks3ObjectSummary;
import com.ksyun.ks3.model.ObjectListing;
import com.ksyun.ks3.model.Owner;
+import com.ksyun.ks3.model.result.ListObjectsResult;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.ListObjectsRequest;
import com.ksyun.ks3.util.DateUtil;
+import com.ksyun.ks3.util.ResponseUtils;
import com.ksyun.ks3.util.StringUtils;
-public abstract class ListObjectsResponseHandler extends Ks3HttpResponceHandler{
- private boolean isCommonPrefixes = false;
-
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders,String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders,ObjectListing objectListing);
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- this.onSuccess(statesCode, responceHeaders, parseXml(responceHeaders, response));
- }
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode,error, responceHeaders, response==null?"":new String(response), throwable);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
-
- @Override
- public final void onStart() {}
-
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
-
- private ObjectListing parseXml(Header[] responceHeaders, byte[] response) {
- ObjectListing objectListing = null;
- List objectSummarys = null;
- Ks3ObjectSummary objectSummary = null;
- Owner owner = null;
- List commonPrefixes = null;
- XmlPullParserFactory factory = null;
- try {
- factory = XmlPullParserFactory.newInstance();
- XmlPullParser parse = factory.newPullParser();
- parse.setInput(new ByteArrayInputStream(response), "UTF-8");
- int eventType = parse.getEventType();
- while (XmlPullParser.END_DOCUMENT != eventType) {
- String nodeName = parse.getName();
- switch (eventType) {
- case XmlPullParser.START_DOCUMENT:
- objectListing = new ObjectListing();
- objectSummarys = new ArrayList();
- commonPrefixes = new ArrayList();
- break;
- case XmlPullParser.END_DOCUMENT:
-
- break;
- case XmlPullParser.START_TAG:
- if("ListBucketResult".equalsIgnoreCase(nodeName)){
- }
- if("Name".equalsIgnoreCase(nodeName)){
- objectListing.setBucketName(parse.nextText());
- }
- if("Prefix".equalsIgnoreCase(nodeName)){
- if(isCommonPrefixes)
- commonPrefixes.add(parse.nextText());
- else
- objectListing.setPrefix(parse.nextText());
- }
- if("Marker".equalsIgnoreCase(nodeName)){
- objectListing.setMarker(parse.nextText());
- }
- if("MaxKeys".equalsIgnoreCase(nodeName)){
- objectListing.setMaxKeys(Integer.valueOf(parse.nextText()));
- }
- if("NextMarker".equalsIgnoreCase(nodeName)){
- objectListing.setNextMarker(parse.nextText());
- }
- if("Delimiter".equalsIgnoreCase(nodeName)){
- objectListing.setDelimiter(parse.nextText());
- }
- if("IsTruncated".equalsIgnoreCase(nodeName)){
- objectListing.setTruncated(Boolean.valueOf(parse.nextText()));
- }
- if("Contents".equalsIgnoreCase(nodeName)){
- objectSummary = new Ks3ObjectSummary();
- }
- if("Key".equalsIgnoreCase(nodeName)){
- String keyString = parse.nextText();
- objectSummary.setKey(keyString);
- }
- if("ETag".equalsIgnoreCase(nodeName)){
- String etag = parse.nextText();
- objectSummary.setETag(etag);
- }
- if("Size".equalsIgnoreCase(nodeName)){
- objectSummary.setSize(Long.valueOf(parse.nextText()));
- }
- if("Owner".equalsIgnoreCase(nodeName)){
- owner = new Owner();
- }
- if("ID".equalsIgnoreCase(nodeName)){
- owner.setId(parse.nextText());
- }
- if("DisplayName".equalsIgnoreCase(nodeName)){
- owner.setDisplayName(parse.nextText());
- }
- if("StorageClass".equalsIgnoreCase(nodeName)){
- objectSummary.setStorageClass(parse.nextText());
- }
- if("LastModified".equalsIgnoreCase(nodeName)){
- String dateStr = parse.nextText();
- if(!StringUtils.isBlank(dateStr))
- objectSummary.setLastModified(DateUtil.ConverToDate(dateStr));
- }
- if("CommonPrefixes".equalsIgnoreCase(nodeName)){
- isCommonPrefixes = true;
- }
-
- break;
- case XmlPullParser.END_TAG:
- if ("Contents".equalsIgnoreCase(nodeName)) {
- objectSummarys.add(objectSummary);
- }
- if ("Owner".equalsIgnoreCase(nodeName)) {
- objectSummary.setOwner(owner);
- }
- if ("CommonPrefixes".equalsIgnoreCase(nodeName)) {
- objectListing.setCommonPrefixes(commonPrefixes);
- }
- if("ListBucketResult".equalsIgnoreCase(nodeName)){
- objectListing.setObjectSummaries(objectSummarys);
- }
- break;
- case XmlPullParser.TEXT:
-
- break;
- default:
- break;
- }
- eventType = parse.next();
- }
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return objectListing;
- }
-
+import okhttp3.Headers;
+
+public abstract class ListObjectsResponseHandler extends Ks3HttpResponseHandler {
+ private boolean isCommonPrefixes = false;
+
+ public abstract void onFailure(ListObjectsRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(ListObjectsRequest request, ListObjectsResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ ListObjectsResult result = new ListObjectsResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ result.setObjectListing(parseXml(response));
+ this.onSuccess((ListObjectsRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((ListObjectsRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+
+ private ObjectListing parseXml(byte[] response) {
+ ObjectListing objectListing = null;
+ List objectSummarys = null;
+ Ks3ObjectSummary objectSummary = null;
+ Owner owner = null;
+ List commonPrefixes = null;
+ XmlPullParserFactory factory = null;
+ try {
+ factory = XmlPullParserFactory.newInstance();
+ XmlPullParser parse = factory.newPullParser();
+ parse.setInput(new ByteArrayInputStream(response), "UTF-8");
+ int eventType = parse.getEventType();
+ while (XmlPullParser.END_DOCUMENT != eventType) {
+ String nodeName = parse.getName();
+ switch (eventType) {
+ case XmlPullParser.START_DOCUMENT:
+ objectListing = new ObjectListing();
+ objectSummarys = new ArrayList();
+ commonPrefixes = new ArrayList();
+ break;
+ case XmlPullParser.END_DOCUMENT:
+
+ break;
+ case XmlPullParser.START_TAG:
+ if ("ListBucketResult".equalsIgnoreCase(nodeName)) {
+ }
+ if ("Name".equalsIgnoreCase(nodeName)) {
+ objectListing.setBucketName(parse.nextText());
+ }
+ if ("Prefix".equalsIgnoreCase(nodeName)) {
+ if (isCommonPrefixes)
+ commonPrefixes.add(parse.nextText());
+ else
+ objectListing.setPrefix(parse.nextText());
+ }
+ if ("Marker".equalsIgnoreCase(nodeName)) {
+ objectListing.setMarker(parse.nextText());
+ }
+ if ("MaxKeys".equalsIgnoreCase(nodeName)) {
+ objectListing.setMaxKeys(Integer.valueOf(parse.nextText()));
+ }
+ if ("NextMarker".equalsIgnoreCase(nodeName)) {
+ objectListing.setNextMarker(parse.nextText());
+ }
+ if ("Delimiter".equalsIgnoreCase(nodeName)) {
+ objectListing.setDelimiter(parse.nextText());
+ }
+ if ("IsTruncated".equalsIgnoreCase(nodeName)) {
+ objectListing.setTruncated(Boolean.valueOf(parse.nextText()));
+ }
+ if ("Contents".equalsIgnoreCase(nodeName)) {
+ objectSummary = new Ks3ObjectSummary();
+ }
+ if ("Key".equalsIgnoreCase(nodeName)) {
+ String keyString = parse.nextText();
+ objectSummary.setKey(keyString);
+ }
+ if ("ETag".equalsIgnoreCase(nodeName)) {
+ String etag = parse.nextText();
+ objectSummary.setETag(etag);
+ }
+ if ("Size".equalsIgnoreCase(nodeName)) {
+ objectSummary.setSize(Long.valueOf(parse.nextText()));
+ }
+ if ("Owner".equalsIgnoreCase(nodeName)) {
+ owner = new Owner();
+ }
+ if ("ID".equalsIgnoreCase(nodeName)) {
+ owner.setId(parse.nextText());
+ }
+ if ("DisplayName".equalsIgnoreCase(nodeName)) {
+ owner.setDisplayName(parse.nextText());
+ }
+ if ("StorageClass".equalsIgnoreCase(nodeName)) {
+ objectSummary.setStorageClass(parse.nextText());
+ }
+ if ("LastModified".equalsIgnoreCase(nodeName)) {
+ String dateStr = parse.nextText();
+ if (!StringUtils.isBlank(dateStr))
+ objectSummary.setLastModified(DateUtil.ConverToDate(dateStr));
+ }
+ if ("CommonPrefixes".equalsIgnoreCase(nodeName)) {
+ isCommonPrefixes = true;
+ }
+
+ break;
+ case XmlPullParser.END_TAG:
+ if ("Contents".equalsIgnoreCase(nodeName)) {
+ objectSummarys.add(objectSummary);
+ }
+ if ("Owner".equalsIgnoreCase(nodeName)) {
+ objectSummary.setOwner(owner);
+ }
+ if ("CommonPrefixes".equalsIgnoreCase(nodeName)) {
+ objectListing.setCommonPrefixes(commonPrefixes);
+ }
+ if ("ListBucketResult".equalsIgnoreCase(nodeName)) {
+ objectListing.setObjectSummaries(objectSummarys);
+ }
+ break;
+ case XmlPullParser.TEXT:
+
+ break;
+ default:
+ break;
+ }
+ eventType = parse.next();
+ }
+ } catch (XmlPullParserException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return objectListing;
+ }
+
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/ListPartsResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/ListPartsResponseHandler.java
index e78f5b6a3f2e7c9b723b6493f53a96949e5ddefc..c9d8e671edf7257f8c3e99ce3d67653199138dbe 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/ListPartsResponseHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/ListPartsResponseHandler.java
@@ -3,171 +3,182 @@ package com.ksyun.ks3.services.handler;
import java.io.ByteArrayInputStream;
import java.io.IOException;
-import cz.msebera.android.httpclient.Header;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
-import com.ksyun.ks3.exception.Ks3Error;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
import com.ksyun.ks3.model.Owner;
import com.ksyun.ks3.model.Part;
import com.ksyun.ks3.model.result.ListPartsResult;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.ListPartsRequest;
import com.ksyun.ks3.util.DateUtil;
+import com.ksyun.ks3.util.ResponseUtils;
import com.ksyun.ks3.util.StringUtils;
-public abstract class ListPartsResponseHandler extends Ks3HttpResponceHandler {
-
- private static String RESPONSE_TAG_PRIFIX = "ns2:";
-
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders,String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders,ListPartsResult listPartsResult);
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- this.onSuccess(statesCode, responceHeaders, parseXml(responceHeaders, response));
- }
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode, error,responceHeaders, response == null? "":new String(response), throwable);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
-
- @Override
- public final void onStart() {}
-
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
-
- private ListPartsResult parseXml(Header[] responceHeaders, byte[] response) {
- XmlPullParserFactory factory = null;
- ListPartsResult partsResult = null;
- Owner owner = null;
- Owner initiator = null;
- Part part = null;
- boolean isOwner = false;
- try {
- factory = XmlPullParserFactory.newInstance();
- XmlPullParser parse = factory.newPullParser();
- parse.setInput(new ByteArrayInputStream(response), "UTF-8");
- int eventType = parse.getEventType();
- while (XmlPullParser.END_DOCUMENT != eventType) {
- String nodeName = parse.getName();
- if(!StringUtils.isBlank(nodeName) && nodeName.startsWith(RESPONSE_TAG_PRIFIX)){
- nodeName = nodeName.substring(4);
- }
- switch (eventType) {
- case XmlPullParser.START_DOCUMENT:
- case XmlPullParser.END_DOCUMENT:
- break;
- case XmlPullParser.START_TAG:
- if("ListPartsResult".equalsIgnoreCase(nodeName)){
- partsResult = new ListPartsResult();
- }
- if("Bucket".equalsIgnoreCase(nodeName)){
- partsResult.setBucketname(parse.nextText());
- }
- if("Key".equalsIgnoreCase(nodeName)){
- partsResult.setKey(parse.nextText());
- }
- if("UploadId".equalsIgnoreCase(nodeName)){
- String upid = parse.nextText();
- partsResult.setUploadId(upid);
- }
- if("Initiator".equalsIgnoreCase(nodeName)){
- initiator = new Owner();
- }
- if("Owner".equalsIgnoreCase(nodeName)){
- isOwner = true;
- owner = new Owner();
- }
- if("ID".equalsIgnoreCase(nodeName)){
- if (isOwner) {
- owner.setId(parse.nextText());
- }else{
- initiator.setId(parse.nextText());
- }
- }
- if("DisplayName".equalsIgnoreCase(nodeName)){
- if (isOwner) {
- owner.setDisplayName(parse.nextText());
- }else{
- initiator.setDisplayName(parse.nextText());
- }
- }
- if("StorageClass".equalsIgnoreCase(nodeName)){
- }
- if("PartNumberMarker".equalsIgnoreCase(nodeName)){
- partsResult.setPartNumberMarker(parse.nextText());
- }
- if("NextPartNumberMarker".equalsIgnoreCase(nodeName)){
- partsResult.setNextPartNumberMarker(parse.nextText());
- }
- if("MaxParts".equalsIgnoreCase(nodeName)){
- partsResult.setMaxParts(parse.nextText());
- }
- if("IsTruncated".equalsIgnoreCase(nodeName)){
- partsResult.setTruncated(Boolean.valueOf(parse.nextText()));
- }
- if("Part".equalsIgnoreCase(nodeName)){
- part = new Part();
- }
- if("PartNumber".equalsIgnoreCase(nodeName)){
- part.setPartNumber(Integer.valueOf(parse.nextText()));
- }
- if("LastModified".equalsIgnoreCase(nodeName)){
- String dateStr = parse.nextText();
- if(!StringUtils.isBlank(dateStr))
- part.setLastModified(DateUtil.ConverToDate(dateStr));
- }
- if("ETag".equalsIgnoreCase(nodeName)){
- part.setETag(parse.nextText());
- }
- if("Size".equalsIgnoreCase(nodeName)){
- part.setSize(Long.valueOf(parse.nextText()));
- }
- if("Encoding-Type".equalsIgnoreCase(nodeName)){
- partsResult.setEncodingType(parse.nextText());
- }
- break;
- case XmlPullParser.END_TAG:
- if("ListPartsResult".equalsIgnoreCase(nodeName)){
-
- }
- if("Initiator".equalsIgnoreCase(nodeName)){
- partsResult.setInitiator(initiator);
- }
- if("Owner".equalsIgnoreCase(nodeName)){
- isOwner = false;
- partsResult.setOwner(owner);
- }
- if("Part".equalsIgnoreCase(nodeName)){
- partsResult.getParts().add(part);
- }
- break;
- case XmlPullParser.TEXT:
- break;
- default:
- break;
- }
- eventType = parse.next();
- }
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return partsResult;
- }
-
-
+import okhttp3.Headers;
+
+public abstract class ListPartsResponseHandler extends Ks3HttpResponseHandler {
+
+ private static String RESPONSE_TAG_PRIFIX = "ns2:";
+
+ public abstract void onFailure(ListPartsRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(ListPartsRequest request, ListPartsResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ ListPartsResult result = parseXml(response);
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ onSuccess((ListPartsRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((ListPartsRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+
+ private ListPartsResult parseXml(byte[] response) {
+ XmlPullParserFactory factory = null;
+ ListPartsResult partsResult = null;
+ Owner owner = null;
+ Owner initiator = null;
+ Part part = null;
+ boolean isOwner = false;
+ try {
+ factory = XmlPullParserFactory.newInstance();
+ XmlPullParser parse = factory.newPullParser();
+ parse.setInput(new ByteArrayInputStream(response), "UTF-8");
+ int eventType = parse.getEventType();
+ while (XmlPullParser.END_DOCUMENT != eventType) {
+ String nodeName = parse.getName();
+ if (!StringUtils.isBlank(nodeName) && nodeName.startsWith(RESPONSE_TAG_PRIFIX)) {
+ nodeName = nodeName.substring(4);
+ }
+ switch (eventType) {
+ case XmlPullParser.START_DOCUMENT:
+ case XmlPullParser.END_DOCUMENT:
+ break;
+ case XmlPullParser.START_TAG:
+ if ("ListPartsResult".equalsIgnoreCase(nodeName)) {
+ partsResult = new ListPartsResult();
+ }
+ if ("Bucket".equalsIgnoreCase(nodeName)) {
+ partsResult.setBucketname(parse.nextText());
+ }
+ if ("Key".equalsIgnoreCase(nodeName)) {
+ partsResult.setKey(parse.nextText());
+ }
+ if ("UploadId".equalsIgnoreCase(nodeName)) {
+ String upid = parse.nextText();
+ partsResult.setUploadId(upid);
+ }
+ if ("Initiator".equalsIgnoreCase(nodeName)) {
+ initiator = new Owner();
+ }
+ if ("Owner".equalsIgnoreCase(nodeName)) {
+ isOwner = true;
+ owner = new Owner();
+ }
+ if ("ID".equalsIgnoreCase(nodeName)) {
+ if (isOwner) {
+ owner.setId(parse.nextText());
+ } else {
+ initiator.setId(parse.nextText());
+ }
+ }
+ if ("DisplayName".equalsIgnoreCase(nodeName)) {
+ if (isOwner) {
+ owner.setDisplayName(parse.nextText());
+ } else {
+ initiator.setDisplayName(parse.nextText());
+ }
+ }
+ if ("StorageClass".equalsIgnoreCase(nodeName)) {
+ }
+ if ("PartNumberMarker".equalsIgnoreCase(nodeName)) {
+ partsResult.setPartNumberMarker(parse.nextText());
+ }
+ if ("NextPartNumberMarker".equalsIgnoreCase(nodeName)) {
+ partsResult.setNextPartNumberMarker(parse.nextText());
+ }
+ if ("MaxParts".equalsIgnoreCase(nodeName)) {
+ partsResult.setMaxParts(parse.nextText());
+ }
+ if ("IsTruncated".equalsIgnoreCase(nodeName)) {
+ partsResult.setTruncated(Boolean.valueOf(parse.nextText()));
+ }
+ if ("Part".equalsIgnoreCase(nodeName)) {
+ part = new Part();
+ }
+ if ("PartNumber".equalsIgnoreCase(nodeName)) {
+ part.setPartNumber(Integer.valueOf(parse.nextText()));
+ }
+ if ("LastModified".equalsIgnoreCase(nodeName)) {
+ String dateStr = parse.nextText();
+ if (!StringUtils.isBlank(dateStr))
+ part.setLastModified(DateUtil.ConverToDate(dateStr));
+ }
+ if ("ETag".equalsIgnoreCase(nodeName)) {
+ part.setETag(parse.nextText());
+ }
+ if ("Size".equalsIgnoreCase(nodeName)) {
+ part.setSize(Long.valueOf(parse.nextText()));
+ }
+ if ("Encoding-Type".equalsIgnoreCase(nodeName)) {
+ partsResult.setEncodingType(parse.nextText());
+ }
+ break;
+ case XmlPullParser.END_TAG:
+ if ("ListPartsResult".equalsIgnoreCase(nodeName)) {
+
+ }
+ if ("Initiator".equalsIgnoreCase(nodeName)) {
+ partsResult.setInitiator(initiator);
+ }
+ if ("Owner".equalsIgnoreCase(nodeName)) {
+ isOwner = false;
+ partsResult.setOwner(owner);
+ }
+ if ("Part".equalsIgnoreCase(nodeName)) {
+ partsResult.getParts().add(part);
+ }
+ break;
+ case XmlPullParser.TEXT:
+ break;
+ default:
+ break;
+ }
+ eventType = parse.next();
+ }
+ } catch (XmlPullParserException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return partsResult;
+ }
+
+
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PostObjectResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PostObjectResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..ad3304678d9c1f2a3d5a44f0a4f182d5f394b757
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PostObjectResponseHandler.java
@@ -0,0 +1,46 @@
+package com.ksyun.ks3.services.handler;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.PostObjectResult;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.PostObjectRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+public abstract class PostObjectResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(PostObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(PostObjectRequest request, PostObjectResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ PostObjectResult result = new PostObjectResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((PostObjectRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((PostObjectRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/ProgressResponseBody.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/ProgressResponseBody.java
new file mode 100644
index 0000000000000000000000000000000000000000..79d333ec1a3ab65fa7e9c5deeca10a7e5a56076c
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/ProgressResponseBody.java
@@ -0,0 +1,64 @@
+package com.ksyun.ks3.services.handler;
+
+
+import java.io.IOException;
+
+import okhttp3.MediaType;
+import okhttp3.ResponseBody;
+import okio.Buffer;
+import okio.BufferedSource;
+import okio.ForwardingSink;
+import okio.ForwardingSource;
+import okio.Okio;
+import okio.Sink;
+import okio.Source;
+
+public class ProgressResponseBody extends ResponseBody {
+ private ResponseBody responseBody;
+ private BufferedSource bufferedSource;
+ private AsyncHttpResponseHandler handler;
+
+ public ProgressResponseBody(ResponseBody responseBody, AsyncHttpResponseHandler handler) {
+ this.responseBody = responseBody;
+ this.handler = handler;
+ }
+
+ @Override
+ public MediaType contentType() {
+ return responseBody.contentType();
+ }
+
+ @Override
+ public long contentLength() {
+ return responseBody.contentLength();
+ }
+
+ @Override
+ public BufferedSource source() {
+ if (null == bufferedSource) {
+ bufferedSource = Okio.buffer(source(responseBody.source()));
+ }
+ return bufferedSource;
+ }
+
+ private Source source (Source source) {
+ return new ProgressBufferedSource(source);
+ }
+
+ private class ProgressBufferedSource extends ForwardingSource {
+
+ private long totalBytesRead = 0l; // 合计读入的字节数
+ public ProgressBufferedSource(Source source) {
+ super(source);
+ }
+
+ @Override
+ public long read(Buffer sink, long byteCount) throws IOException {
+ long readLength = super.read(sink, byteCount);
+ totalBytesRead += readLength > 0 ? readLength : 0;
+ handler.onProgress(totalBytesRead, responseBody.contentLength());
+ return readLength;
+ }
+ }
+
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketACLResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketACLResponseHandler.java
index 62d37e8a38e21250f4f42f7efaa0489ede2db04c..ef4284777242947ae0716a14488fc16ac4415ca6 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketACLResponseHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketACLResponseHandler.java
@@ -1,36 +1,47 @@
package com.ksyun.ks3.services.handler;
-import cz.msebera.android.httpclient.Header;
-import com.ksyun.ks3.exception.Ks3Error;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.PutBucketACLResult;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.PutBucketACLRequest;
+import com.ksyun.ks3.util.ResponseUtils;
-public abstract class PutBucketACLResponseHandler extends Ks3HttpResponceHandler {
+import okhttp3.Headers;
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders,String response, Throwable paramThrowable);
+public abstract class PutBucketACLResponseHandler extends Ks3HttpResponseHandler {
- public abstract void onSuccess(int statesCode, Header[] responceHeaders);
+ public abstract void onFailure(PutBucketACLRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- this.onSuccess(statesCode, responceHeaders);
- }
+ public abstract void onSuccess(PutBucketACLRequest request, PutBucketACLResult result);
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode, error,responceHeaders, response==null?"":new String(response), throwable);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ PutBucketACLResult result = new PutBucketACLResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((PutBucketACLRequest) request, result);
+ }
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((PutBucketACLRequest) request, clientException, serviceException);
+ }
- @Override
- public final void onStart() {}
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketPolicyResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketPolicyResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..587889c837c43b355f2b8719ea1ab38ee2d48849
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketPolicyResponseHandler.java
@@ -0,0 +1,46 @@
+package com.ksyun.ks3.services.handler;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.PutBucketPolicyResult;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.PutBucketPolicyRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+public abstract class PutBucketPolicyResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(PutBucketPolicyRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(PutBucketPolicyRequest request, PutBucketPolicyResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ PutBucketPolicyResult result = new PutBucketPolicyResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((PutBucketPolicyRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((PutBucketPolicyRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketQuotaResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketQuotaResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..8eb8f0a6870a5eec2c5d7ac4b03f0ff96acd75c0
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketQuotaResponseHandler.java
@@ -0,0 +1,46 @@
+package com.ksyun.ks3.services.handler;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.PutBucketQuotaResult;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.PutBucketQuotaRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+public abstract class PutBucketQuotaResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(PutBucketQuotaRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(PutBucketQuotaRequest request, PutBucketQuotaResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ PutBucketQuotaResult result = new PutBucketQuotaResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((PutBucketQuotaRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((PutBucketQuotaRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketReplicationResponceHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketReplicationResponceHandler.java
deleted file mode 100644
index 1ce1e29ca36763f094ce185b3b7a30b9bc23bbe6..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketReplicationResponceHandler.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.ksyun.ks3.services.handler;
-
-import com.ksyun.ks3.exception.Ks3Error;
-
-import cz.msebera.android.httpclient.Header;
-
-public abstract class PutBucketReplicationResponceHandler extends Ks3HttpResponceHandler {
-
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders);
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- this.onSuccess(statesCode, responceHeaders);
- }
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode, error,responceHeaders, response==null?"":new String(response), throwable);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
-
-
- @Override
- public final void onStart() {}
-
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketReplicationResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketReplicationResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..8009821bd73e3ca225608cf004a635a6ee890569
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutBucketReplicationResponseHandler.java
@@ -0,0 +1,47 @@
+package com.ksyun.ks3.services.handler;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.PutBucketReplicationResult;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.PutBucketReplicationRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+
+public abstract class PutBucketReplicationResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(PutBucketReplicationRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(PutBucketReplicationRequest request, PutBucketReplicationResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ PutBucketReplicationResult result = new PutBucketReplicationResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((PutBucketReplicationRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((PutBucketReplicationRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectACLResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectACLResponseHandler.java
index 28865d0fcf45a34b8e114c20d0f2de0a86b3c5a5..dcebc8615d46480023f73e1e4078297d6bb0e632 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectACLResponseHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectACLResponseHandler.java
@@ -1,35 +1,47 @@
package com.ksyun.ks3.services.handler;
-import cz.msebera.android.httpclient.Header;
-import com.ksyun.ks3.exception.Ks3Error;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.PutObjectACLResult;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.PutObjectACLRequest;
+import com.ksyun.ks3.util.ResponseUtils;
-public abstract class PutObjectACLResponseHandler extends Ks3HttpResponceHandler{
+import okhttp3.Headers;
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders,String response, Throwable paramThrowable);
+public abstract class PutObjectACLResponseHandler extends Ks3HttpResponseHandler {
- public abstract void onSuccess(int statesCode, Header[] responceHeaders);
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- this.onSuccess(statesCode, responceHeaders);
- }
+ public abstract void onFailure(PutObjectACLRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode,error, responceHeaders, response==null?"":new String(response), throwable);
- }
+ public abstract void onSuccess(PutObjectACLRequest request, PutObjectACLResult result);
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ PutObjectACLResult result = new PutObjectACLResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((PutObjectACLRequest) request, result);
+ }
- @Override
- public final void onStart() {}
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((PutObjectACLRequest) request, clientException, serviceException);
+ }
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectAdpResponceHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectAdpResponceHandler.java
deleted file mode 100644
index 0babfabbf58286e5941e162160d6c94a586dd34e..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectAdpResponceHandler.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.ksyun.ks3.services.handler;
-
-import com.google.gson.Gson;
-import com.ksyun.ks3.exception.Ks3Error;
-import com.ksyun.ks3.model.HttpHeaders;
-import com.ksyun.ks3.model.result.PutAdpResult;
-
-import cz.msebera.android.httpclient.Header;
-import cz.msebera.android.httpclient.message.BufferedHeader;
-
-public abstract class PutObjectAdpResponceHandler extends Ks3HttpResponceHandler {
-
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders, PutAdpResult adpResult);
-
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders, byte[] response) {
- this.onSuccess(statesCode, responceHeaders, parseKJsop(responceHeaders, response));
- }
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
- com.ksyun.ks3.exception.Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode, error, responceHeaders, response == null ? "" : new String(response), throwable);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {
- }
-
- @Override
- public final void onStart() {
- }
-
- @Override
- public final void onFinish() {
- }
-
- @Override
- public final void onCancel() {
- }
-
- private PutAdpResult parseKJsop(Header[] responceHeaders, byte[] response) {
-
- PutAdpResult result = new PutAdpResult();
- for (Header header :responceHeaders){
- if (header.getName().contentEquals("TaskID")){
- result.setTaskId(header.getValue());
- break;
- }
- }
- return result;
- }
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectAdpResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectAdpResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..5ff48a68a064e96c8c5007d2753b53c5b366b156
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectAdpResponseHandler.java
@@ -0,0 +1,56 @@
+package com.ksyun.ks3.services.handler;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.PutObjectAdpResult;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.adp.PutObjectAdpRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import java.util.Map;
+
+import okhttp3.Headers;
+
+
+public abstract class PutObjectAdpResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(PutObjectAdpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(PutObjectAdpRequest request, PutObjectAdpResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ PutObjectAdpResult result = parseHeaders(responseHeaders);
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((PutObjectAdpRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((PutObjectAdpRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+
+ private PutObjectAdpResult parseHeaders(Headers responseHeaders) {
+ PutObjectAdpResult result = new PutObjectAdpResult();
+ Map headers = ResponseUtils.parseResponseHeaders(responseHeaders);
+ result.setTaskId(headers.get("TaskID"));
+ return result;
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectFetchResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectFetchResponseHandler.java
index 224bcbe242ca2438b3efde90909eb55b4d0de865..ff98911c3f3dd9225022154e2a98dd5972f6f767 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectFetchResponseHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectFetchResponseHandler.java
@@ -1,47 +1,47 @@
package com.ksyun.ks3.services.handler;
-import android.annotation.SuppressLint;
-import android.util.Log;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.PutObjectFetchResult;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.PutObjectFetchRequest;
+import com.ksyun.ks3.util.ResponseUtils;
-import com.google.gson.Gson;
-import com.ksyun.ks3.exception.Ks3Error;
-import com.ksyun.ks3.services.request.object.PutObjectFetchResult;
-import cz.msebera.android.httpclient.Header;
+import okhttp3.Headers;
-public abstract class PutObjectFetchResponseHandler extends Ks3HttpResponceHandler {
+public abstract class PutObjectFetchResponseHandler extends Ks3HttpResponseHandler {
- public abstract void onTaskFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable);
+ public abstract void onTaskFailure(PutObjectFetchRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
- public abstract void onTaskSuccess(int statesCode, Header[] responceHeaders, PutObjectFetchResult result);
+ public abstract void onTaskSuccess(PutObjectFetchRequest request, PutObjectFetchResult result);
@Override
- public final void onSuccess(int statesCode, Header[] responceHeaders, byte[] response) {
- onTaskSuccess(statesCode, responceHeaders, parseKJsop(response));
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ PutObjectFetchResult result = new PutObjectFetchResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onTaskSuccess((PutObjectFetchRequest) request, result);
}
@Override
- public void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- onTaskFailure(statesCode, error, responceHeaders, response == null ? "" : new String(response), throwable);
+ public void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onTaskFailure((PutObjectFetchRequest) request, clientException, serviceException);
}
- @SuppressLint("LongLogTag")
@Override
- protected void finalize() throws Throwable {
- Log.d("PutObjectFetchResponseHandler", "PutObjectFetchResponseHandler finalize:" + this);
- super.finalize();
+ public final void onProgress(long bytesWritten, long totalSize) {
}
- @SuppressLint("LongLogTag")
- private PutObjectFetchResult parseKJsop(byte[] response) {
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
- PutObjectFetchResult result = null;
- try {
- result = new Gson().fromJson(response.toString(), PutObjectFetchResult.class);
- } catch (Exception e) {
- Log.d("PutObjectFetchResponseHandler Response", "PutObjectFetchResponseHandler error:" + this);
- }
- return result;
+ @Override
+ public final void onCancel() {
}
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectResponseHandler.java
index 3b7f4bc191507dbc238fa60fa3f1b94562af1fe1..23bc857385f7bab2e91b377f99e10ef44c586b8a 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectResponseHandler.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectResponseHandler.java
@@ -3,58 +3,59 @@ package com.ksyun.ks3.services.handler;
import android.annotation.SuppressLint;
import android.util.Log;
-import cz.msebera.android.httpclient.Header;
-
-import com.ksyun.ks3.exception.Ks3Error;
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.PutObjectResult;
import com.ksyun.ks3.model.transfer.RequestProgressListener;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.PutObjectRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+
+public abstract class PutObjectResponseHandler extends Ks3HttpResponseHandler implements RequestProgressListener {
+
+ public abstract void onTaskFailure(PutObjectRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onTaskSuccess(PutObjectRequest request, PutObjectResult result);
+
+ public abstract void onTaskCancel();
+
+ public abstract void onTaskProgress(double progress);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ PutObjectResult result = new PutObjectResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onTaskSuccess((PutObjectRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onTaskFailure((PutObjectRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onCancel() {
+ onTaskCancel();
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ double progress =
+ Double.valueOf(totalSize > 0 ? bytesWritten * 1.0D / totalSize * 100.0D : -1.0D);
+ onTaskProgress(progress);
+ }
+
+
+ @SuppressLint("LongLogTag")
+ @Override
+ protected void finalize() throws Throwable {
+ Log.d("PutObjectResponseHandler", "PutObjectResponseHandler finalize:" + this);
+ super.finalize();
+ }
+
-public abstract class PutObjectResponseHandler extends Ks3HttpResponceHandler implements RequestProgressListener{
-
- public abstract void onTaskFailure(int statesCode, Ks3Error error, Header[] responceHeaders,String response, Throwable paramThrowable);
-
- public abstract void onTaskSuccess(int statesCode, Header[] responceHeaders);
-
- public abstract void onTaskStart();
-
- public abstract void onTaskFinish();
-
- public abstract void onTaskCancel();
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- onTaskSuccess(statesCode, responceHeaders);
- }
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- onTaskFailure(statesCode,error, responceHeaders, response == null? "":new String(response), throwable);
- }
-
- @Override
- public final void onStart() {
- onTaskStart();
- }
-
- @Override
- public final void onFinish() {
- onTaskFinish();
- }
-
- @Override
- public final void onCancel() {
- onTaskCancel();
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
-
- @SuppressLint("LongLogTag")
- @Override
- protected void finalize() throws Throwable {
- Log.d("PutObjectResponseHandler", "PutObjectResponseHandler finalize:"+this);
- super.finalize();
- }
-
-
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectTaggingResponceHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectTaggingResponceHandler.java
deleted file mode 100644
index 1513c63e6f3dc572234b76627f49a631b9f54082..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectTaggingResponceHandler.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.ksyun.ks3.services.handler;
-
-import com.ksyun.ks3.exception.Ks3Error;
-import com.ksyun.ks3.model.result.PutAdpResult;
-
-import cz.msebera.android.httpclient.Header;
-
-public abstract class PutObjectTaggingResponceHandler extends Ks3HttpResponceHandler {
-
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable);
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders);
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- this.onSuccess(statesCode, responceHeaders);
- }
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- this.onFailure(statesCode, error,responceHeaders, response==null?"":new String(response), throwable);
- }
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
-
-
- @Override
- public final void onStart() {}
-
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectTaggingResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectTaggingResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..56511a15fd771d60a64331a36901f088a17767f0
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/PutObjectTaggingResponseHandler.java
@@ -0,0 +1,46 @@
+package com.ksyun.ks3.services.handler;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.result.PutObjectTaggingResult;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.tag.PutObjectTaggingRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+public abstract class PutObjectTaggingResponseHandler extends Ks3HttpResponseHandler {
+
+ public abstract void onFailure(PutObjectTaggingRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(PutObjectTaggingRequest request, PutObjectTaggingResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ PutObjectTaggingResult result = new PutObjectTaggingResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ this.onSuccess((PutObjectTaggingRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((PutObjectTaggingRequest) request, clientException, serviceException);
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ }
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/UploadPartResponceHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/UploadPartResponceHandler.java
deleted file mode 100644
index 53209f3f2964b99b2f0feb627f7bdf0f56247964..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/UploadPartResponceHandler.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.ksyun.ks3.services.handler;
-
-import cz.msebera.android.httpclient.Header;
-
-import com.ksyun.ks3.exception.Ks3Error;
-import com.ksyun.ks3.model.HttpHeaders;
-import com.ksyun.ks3.model.PartETag;
-import com.ksyun.ks3.model.transfer.RequestProgressListener;
-
-public abstract class UploadPartResponceHandler extends Ks3HttpResponceHandler implements RequestProgressListener{
-
- public abstract void onSuccess(int statesCode, Header[] responceHeaders,PartETag result);
-
- public abstract void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders,String response, Throwable throwable);
-
- @Override
- public final void onSuccess(int statesCode, Header[] responceHeaders,byte[] response) {
- onSuccess(statesCode, responceHeaders, parse(responceHeaders));
- }
-
- @Override
- public final void onFailure(int statesCode, Header[] responceHeaders,byte[] response, Throwable throwable) {
- Ks3Error error = new Ks3Error(statesCode, response, throwable);
- onFailure(statesCode,error, responceHeaders, response == null?"":new String(response), throwable);
- }
-
-
- @Override
- public final void onStart() {}
-
- @Override
- public final void onFinish() {}
-
- @Override
- public final void onCancel() {}
-
- @Override
- public final void onProgress(long bytesWritten, long totalSize) {}
-
- private PartETag parse(Header[] responceHeaders) {
- PartETag result = new PartETag();
- for (int i = 0; i < responceHeaders.length; i++) {
- Header header = responceHeaders[i];
- if (header.getName().equals(HttpHeaders.ETag.toString())) {
- result.seteTag(header.getValue());
- }
- }
- return result;
- }
-
-
-
-
-
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/UploadPartResponseHandler.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/UploadPartResponseHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..a00c39e66d55f895f59d401aa3517d7679ef95fa
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/handler/UploadPartResponseHandler.java
@@ -0,0 +1,69 @@
+package com.ksyun.ks3.services.handler;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.exception.Ks3ServiceException;
+import com.ksyun.ks3.model.HttpHeaders;
+import com.ksyun.ks3.model.PartETag;
+import com.ksyun.ks3.model.result.UploadPartResult;
+import com.ksyun.ks3.model.transfer.RequestProgressListener;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.services.request.UploadPartRequest;
+import com.ksyun.ks3.util.ResponseUtils;
+
+import okhttp3.Headers;
+
+public abstract class UploadPartResponseHandler extends Ks3HttpResponseHandler implements RequestProgressListener {
+
+ public abstract void onFailure(UploadPartRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException);
+
+ public abstract void onSuccess(UploadPartRequest request, UploadPartResult result);
+
+ @Override
+ public final void onSuccess(Ks3HttpRequest request, int statusCode, Headers responseHeaders, byte[] response) {
+ UploadPartResult result = new UploadPartResult();
+ result.setStatusCode(statusCode);
+ result.setHeaders(ResponseUtils.parseResponseHeaders(responseHeaders));
+ result.setPartETag(parse(responseHeaders));
+ this.onSuccess((UploadPartRequest) request, result);
+ }
+
+ @Override
+ public final void onFailure(Ks3HttpRequest request, Ks3ClientException clientException, Ks3ServiceException serviceException) {
+ this.onFailure((UploadPartRequest) request, clientException, serviceException);
+ }
+
+
+ @Override
+ public final void onStart() {
+ }
+
+ @Override
+ public final void onFinish() {
+ }
+
+ @Override
+ public final void onCancel() {
+ }
+
+ @Override
+ public final void onProgress(long bytesWritten, long totalSize) {
+ double progress =
+ Double.valueOf(totalSize > 0 ? bytesWritten * 1.0D / totalSize * 100.0D : -1.0D);
+ onTaskProgress(progress);
+ }
+
+ public abstract void onTaskProgress(double progress);
+
+ private PartETag parse(Headers responseHeaders) {
+ PartETag result = new PartETag();
+ Headers headers = responseHeaders;
+ for (int i = 0; i < headers.size(); i++) {
+ if (headers.name(i).equals(HttpHeaders.ETag.toString())) {
+ result.seteTag(headers.value(i));
+ }
+ }
+ return result;
+ }
+
+
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/CompleteMultipartUploadRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/CompleteMultipartUploadRequest.java
index c8a51a156f391ef424f91efb840909ea1bae6aac..ee4fa4b42759576adfd15f08e071340525048710 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/CompleteMultipartUploadRequest.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/CompleteMultipartUploadRequest.java
@@ -1,18 +1,12 @@
package com.ksyun.ks3.services.request;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import org.xmlpull.v1.XmlSerializer;
-
import android.util.Log;
-import android.util.Xml;
import com.ksyun.ks3.auth.ValidateUtil;
import com.ksyun.ks3.exception.Ks3ClientException;
@@ -26,6 +20,9 @@ import com.ksyun.ks3.util.Constants;
import com.ksyun.ks3.util.HttpUtils;
import com.ksyun.ks3.util.StringUtils;
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+
public class CompleteMultipartUploadRequest extends Ks3HttpRequest {
private static final long serialVersionUID = -7600788989122388243L;
private String uploadId;
@@ -92,24 +89,11 @@ public class CompleteMultipartUploadRequest extends Ks3HttpRequest {
@Override
protected void setupRequest() throws Ks3ClientException {
try {
- XmlSerializer serializer = Xml.newSerializer();
- ByteArrayOutputStream stream = new ByteArrayOutputStream();
- serializer.setOutput(stream, "UTF-8");
- serializer.startDocument("UTF-8", true);
- serializer.startTag(null, "CompleteMultipartUpload");
- for (PartETag eTag : partETags) {
- serializer.startTag(null, "Part").startTag(null, "PartNumber")
- .text(String.valueOf(eTag.getPartNumber()))
- .endTag(null, "PartNumber").startTag(null, "ETag")
- .text(eTag.geteTag()).endTag(null, "ETag")
- .endTag(null, "Part");
- }
- serializer.endTag(null, "CompleteMultipartUpload");
- serializer.endDocument();
-
- byte[] bytes = stream.toByteArray();
- this.setRequestBody(new ByteArrayInputStream(bytes));
- this.addHeader(HttpHeaders.ContentLength,String.valueOf(bytes.length));
+ String stringBody = buildXMLFromPartEtagList(partETags);
+ RequestBody body = RequestBody.create(MediaType.parse(getHttpMethod().toString()),
+ stringBody.getBytes("UTF-8"));
+ this.setRequestBody(body);
+ this.addHeader(HttpHeaders.ContentLength,String.valueOf(stringBody.length()));
this.setHttpMethod(HttpMethod.POST);
this.addParams("uploadId", this.uploadId);
if (this.adps!=null && adps.size() > 0){
@@ -138,9 +122,7 @@ public class CompleteMultipartUploadRequest extends Ks3HttpRequest {
}else{
Log.d(Constants.LOG_TAG, "the callbacurl or callbackbody is null , ignore set the callback");
}
- } catch (IllegalStateException e) {
- throw new Ks3ClientException(e);
- } catch (IOException e) {
+ } catch (IllegalStateException | UnsupportedEncodingException e) {
throw new Ks3ClientException(e);
}
}
@@ -156,6 +138,19 @@ public class CompleteMultipartUploadRequest extends Ks3HttpRequest {
if (this.partETags == null)
throw new Ks3ClientException("partETags can not be null");
}
+
+ String buildXMLFromPartEtagList(List partETagList) {
+ StringBuilder builder = new StringBuilder();
+ builder.append("\n");
+ for (PartETag partETag : partETagList) {
+ builder.append("\n");
+ builder.append("" + partETag.getPartNumber() + "\n");
+ builder.append("" + partETag.geteTag() + "\n");
+ builder.append("\n");
+ }
+ builder.append("\n");
+ return builder.toString();
+ }
public String getUploadId() {
return uploadId;
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/DeleteBucketReplicationConfigRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/DeleteBucketReplicationRequest.java
similarity index 83%
rename from ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/DeleteBucketReplicationConfigRequest.java
rename to ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/DeleteBucketReplicationRequest.java
index dc7c87b42593b622692ae9c525b8df4f5a8e0d85..72c0675339f4ff7bc85e0d84120bf109bc19d7d1 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/DeleteBucketReplicationConfigRequest.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/DeleteBucketReplicationRequest.java
@@ -4,7 +4,7 @@ import com.ksyun.ks3.auth.ValidateUtil;
import com.ksyun.ks3.exception.Ks3ClientException;
import com.ksyun.ks3.model.HttpMethod;
-public class DeleteBucketReplicationConfigRequest extends Ks3HttpRequest {
+public class DeleteBucketReplicationRequest extends Ks3HttpRequest {
private static final long serialVersionUID = 1509787613917335360L;
String acl;
@Override
@@ -19,7 +19,7 @@ public class DeleteBucketReplicationConfigRequest extends Ks3HttpRequest {
throw new Ks3ClientException("bucket name is not correct");
}
- public DeleteBucketReplicationConfigRequest(String bucketName) {
+ public DeleteBucketReplicationRequest(String bucketName) {
this.setBucketname(bucketName);
}
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/GetBucketReplicationConfigRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/GetBucketReplicationRequest.java
similarity index 79%
rename from ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/GetBucketReplicationConfigRequest.java
rename to ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/GetBucketReplicationRequest.java
index 5863f6f999e3060e8d2196da3a707516f22daa81..aea0c728389dcc06c4ba55e1377eac3edf25674d 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/GetBucketReplicationConfigRequest.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/GetBucketReplicationRequest.java
@@ -2,10 +2,9 @@ package com.ksyun.ks3.services.request;
import com.ksyun.ks3.auth.ValidateUtil;
import com.ksyun.ks3.exception.Ks3ClientException;
-import com.ksyun.ks3.model.HttpHeaders;
import com.ksyun.ks3.model.HttpMethod;
-public class GetBucketReplicationConfigRequest extends Ks3HttpRequest {
+public class GetBucketReplicationRequest extends Ks3HttpRequest {
private static final long serialVersionUID = 1509787613917335360L;
@Override
protected void setupRequest() throws Ks3ClientException {
@@ -19,7 +18,7 @@ public class GetBucketReplicationConfigRequest extends Ks3HttpRequest {
throw new Ks3ClientException("bucket name is not correct");
}
- public GetBucketReplicationConfigRequest(String bucketName) {
+ public GetBucketReplicationRequest(String bucketName) {
this.setBucketname(bucketName);
}
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/InitiateMultipartUploadRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/InitiateMultipartUploadRequest.java
index d4c696050ffcc15597438d9e08edfbef3cc25d7e..2822730b44341d85350f408f63fb307e54ec28be 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/InitiateMultipartUploadRequest.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/InitiateMultipartUploadRequest.java
@@ -11,6 +11,7 @@ import com.ksyun.ks3.model.HttpHeaders;
import com.ksyun.ks3.model.HttpMethod;
import com.ksyun.ks3.model.ObjectMetadata;
import com.ksyun.ks3.model.ObjectMetadata.Meta;
+import com.ksyun.ks3.model.StorageClass;
import com.ksyun.ks3.model.acl.AccessControlList;
import com.ksyun.ks3.model.acl.CannedAccessControlList;
import com.ksyun.ks3.model.acl.Grant;
@@ -24,6 +25,7 @@ public class InitiateMultipartUploadRequest extends Ks3HttpObjectRequest {
private ObjectMetadata objectMeta = new ObjectMetadata();
private AccessControlList acl = new AccessControlList();
private CannedAccessControlList cannedAcl;
+ private String storageClass;
public InitiateMultipartUploadRequest(String bucketName, String key) {
this.setBucketname(bucketName);
@@ -37,6 +39,12 @@ public class InitiateMultipartUploadRequest extends Ks3HttpObjectRequest {
}
}
+ public InitiateMultipartUploadRequest (String bucketName, String key, ObjectMetadata objectMetadata) {
+ this.setBucketname(bucketName);
+ this.setObjectkey(key);
+ this.objectMeta = objectMetadata;
+ }
+
@Override
protected void setupRequest() throws Ks3ClientException {
@@ -90,6 +98,11 @@ public class InitiateMultipartUploadRequest extends Ks3HttpObjectRequest {
}
}
this.setTagHeader();
+
+ // 设置存储类型
+ if (this.storageClass != null) {
+ this.addHeader(HttpHeaders.StorageClass, this.storageClass);
+ }
}
@Override
@@ -98,6 +111,9 @@ public class InitiateMultipartUploadRequest extends Ks3HttpObjectRequest {
throw new Ks3ClientException("bucket name is not correct");
if (StringUtils.isBlank(this.getObjectkey()))
throw new Ks3ClientException("object key can not be null");
+ if (StorageClass.UNKNOWN.toString().equalsIgnoreCase(storageClass)) {
+ throw new Ks3ClientException("invalid storage class: " + this.storageClass);
+ }
}
public ObjectMetadata getObjectMeta() {
@@ -124,4 +140,12 @@ public class InitiateMultipartUploadRequest extends Ks3HttpObjectRequest {
this.cannedAcl = cannedAcl;
}
+ public void setStorageClass(String storageClass) {
+ this.storageClass = storageClass;
+ }
+
+ public String getStorageClassName() {
+ return storageClass;
+ }
+
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/InputStreamRequestBody.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/InputStreamRequestBody.java
new file mode 100644
index 0000000000000000000000000000000000000000..90da853b5c1620fe766bbfe8219bb812c094f27c
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/InputStreamRequestBody.java
@@ -0,0 +1,46 @@
+package com.ksyun.ks3.services.request;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+import okio.BufferedSink;
+import okio.Okio;
+import okio.Source;
+
+public class InputStreamRequestBody extends RequestBody {
+
+ private String contentType;
+ private InputStream is;
+ private long length;
+
+ public InputStreamRequestBody (InputStream is, String contentType, long contentLength) {
+ this.is = is;
+ this.contentType = contentType;
+ this.length = contentLength;
+ }
+
+ @Override
+ public MediaType contentType() {
+ if (null != this.contentType) return MediaType.parse(this.contentType);
+ return null;
+ }
+
+ @Override
+ public long contentLength() throws IOException {
+ if (0 != length) return length;
+ return -1;
+ }
+
+ @Override
+ public void writeTo(BufferedSink sink) throws IOException {
+ if (null == is) return;
+ try {
+ Source source = Okio.source(is);
+ sink.writeAll(source);
+ } catch (IOException e) {
+ throw e;
+ }
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/Ks3HttpRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/Ks3HttpRequest.java
index 55e6883003181ba9ac4731e776b9fcaac5bc4001..7871175b7d4a88762b976a8e64c1ecf07140e288 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/Ks3HttpRequest.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/Ks3HttpRequest.java
@@ -1,9 +1,7 @@
package com.ksyun.ks3.services.request;
-import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
-import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collections;
@@ -15,11 +13,9 @@ import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import cz.msebera.android.httpclient.HttpEntity;
-import cz.msebera.android.httpclient.entity.BufferedHttpEntity;
-import cz.msebera.android.httpclient.entity.StringEntity;
import android.content.Context;
+import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
@@ -27,29 +23,26 @@ import com.ksyun.ks3.auth.AuthEvent;
import com.ksyun.ks3.auth.AuthEventCode;
import com.ksyun.ks3.auth.AuthUtils;
import com.ksyun.ks3.auth.DefaultSigner;
-import com.ksyun.ks3.auth.RepeatableInputStreamRequestEntity;
import com.ksyun.ks3.exception.Ks3ClientException;
-import com.ksyun.ks3.model.AsyncHttpRequsetParam;
+import com.ksyun.ks3.model.AsyncHttpRequestParam;
import com.ksyun.ks3.model.HttpHeaders;
import com.ksyun.ks3.model.HttpMethod;
import com.ksyun.ks3.model.acl.Authorization;
-import com.ksyun.ks3.model.transfer.MD5DigestCalculatingInputStream;
-import com.ksyun.ks3.model.transfer.RequestProgressListener;
import com.ksyun.ks3.services.AuthListener;
import com.ksyun.ks3.services.AuthResult;
import com.ksyun.ks3.services.Ks3AuthHandler;
import com.ksyun.ks3.services.Ks3ClientConfiguration;
-import com.ksyun.ks3.services.Ks3HttpExector;
import com.ksyun.ks3.services.ServerDateAuthListener;
-import com.ksyun.ks3.services.request.tag.ObjectTagging;
+import com.ksyun.ks3.services.handler.AsyncHttpResponseHandler;
import com.ksyun.ks3.util.ByteUtil;
import com.ksyun.ks3.util.Constants;
import com.ksyun.ks3.util.DateUtil;
import com.ksyun.ks3.util.HttpUtils;
import com.ksyun.ks3.util.RequestUtils;
import com.ksyun.ks3.util.StringUtils;
-import com.loopj.android.http.AsyncHttpResponseHandler;
-import com.loopj.android.http.RequestHandle;
+
+import okhttp3.Call;
+import okhttp3.RequestBody;
public abstract class Ks3HttpRequest implements Serializable {
@@ -58,20 +51,36 @@ public abstract class Ks3HttpRequest implements Serializable {
private String bucketname;
private String objectkey;
private String paramsToSign = "";
- private HttpEntity entity;
- private InputStream requestBody;
+ /**
+ * 待上传文件流
+ */
+ private InputStream inputStreamBody;
+ private RequestBody requestBody;
private HttpMethod httpMethod;
private Map header = new HashMap();
private Map params = new HashMap();
private Authorization authorization;
private Context context;
- private AsyncHttpRequsetParam asyncHttpRequestParam;
+ private AsyncHttpRequestParam asyncHttpRequestParam;
private AuthListener authListener;
private String authorizationStr;
- private RequestProgressListener progressListener;
- private RequestHandle handler;
private static final Pattern ENCODED_CHARACTERS_PATTERN;
+ /**
+ * 待上传文件路径
+ */
+ private String uploadFilePath;
+ /**
+ * 待上传文本内容
+ */
+ private byte[] uploadData;
+ /**
+ * 待上传资源路径
+ */
+ private Uri uploadUri;
+ private long contentLength;
+
+
static {
StringBuilder pattern = new StringBuilder();
@@ -82,6 +91,10 @@ public abstract class Ks3HttpRequest implements Serializable {
ENCODED_CHARACTERS_PATTERN = Pattern.compile(pattern.toString());
}
+ private boolean useAsyncMode = true; // 默认使用异步
+
+ private Call call;
+
/* url */
public String getUrl() {
@@ -105,17 +118,6 @@ public abstract class Ks3HttpRequest implements Serializable {
return bucketname;
}
- /* Entity */
- public HttpEntity getEntity() {
-
- return entity;
- }
-
- public void setEntity(HttpEntity entity) {
-
- this.entity = entity;
- }
-
/* Endpoint */
public String getEndpoint() {
@@ -150,14 +152,13 @@ public abstract class Ks3HttpRequest implements Serializable {
}
/* Request body */
- public InputStream getRequestBody() {
+ public InputStream getInputStreamBody() {
- return requestBody;
+ return inputStreamBody;
}
- public void setRequestBody(InputStream requestBody) {
-
- this.requestBody = requestBody;
+ public void setInputStreamBody(InputStream inputStreamBody) {
+ this.inputStreamBody = inputStreamBody;
}
/* Header */
@@ -263,29 +264,68 @@ public abstract class Ks3HttpRequest implements Serializable {
}
public void setContext(Context context) {
-
this.context = context;
}
- /* AsyncHttpRequsetParam */
- public AsyncHttpRequsetParam getAsyncHttpRequestParam() {
+ public String getUploadFilePath() {
+ return uploadFilePath;
+ }
+
+ public void setUploadFilePath(String uploadFilePath) {
+ this.uploadFilePath = uploadFilePath;
+ }
+
+ public byte[] getUploadData() {
+ return uploadData;
+ }
+
+ public void setUploadData(byte[] uploadData) {
+ this.uploadData = uploadData;
+ }
+
+ public Uri getUploadUri() {
+ return uploadUri;
+ }
+
+ public void setUploadUri(Uri uploadUri) {
+ this.uploadUri = uploadUri;
+ }
+
+ public long getContentLength() {
+ return contentLength;
+ }
+
+ public void setContentLength(long contentLength) {
+ this.contentLength = contentLength;
+ }
+
+ public RequestBody getRequestBody() {
+ return requestBody;
+ }
+
+ public void setRequestBody(RequestBody requestBody) {
+ this.requestBody = requestBody;
+ }
+
+ /* AsyncHttpRequestParam */
+ public AsyncHttpRequestParam getAsyncHttpRequestParam() {
return asyncHttpRequestParam;
}
public void setAsyncHttpRequestParam(
- AsyncHttpRequsetParam asyncHttpRequestParam) {
+ AsyncHttpRequestParam asyncHttpRequestParam) {
this.asyncHttpRequestParam = asyncHttpRequestParam;
}
/**
- * Important, Should call it when completed a request
+ * Important, Should call it when init request params
*
* @param ks3AuthHandler
*/
- public void completeRequset(Ks3AuthHandler ks3AuthHandler,
- AsyncHttpResponseHandler handler) throws Ks3ClientException {
+ public void initRequestParams(Ks3AuthHandler ks3AuthHandler,
+ AsyncHttpResponseHandler handler) throws Ks3ClientException {
this.validateParams();
setupRequestDefault();
@@ -293,9 +333,6 @@ public abstract class Ks3HttpRequest implements Serializable {
if (StringUtils.isBlank(getContentType())) {
setContentType("text/plain");
}
- if (handler instanceof RequestProgressListener) {
- this.progressListener = (RequestProgressListener) handler;
- }
this.asyncHttpRequestParam = finishHttpRequest(ks3AuthHandler);
if (authListener != null && ks3AuthHandler.isNeedCalculateAuth) {
if (!TextUtils.isEmpty(authorizationStr)) {
@@ -304,22 +341,21 @@ public abstract class Ks3HttpRequest implements Serializable {
event.setContent(authorizationStr);
Log.d(Constants.LOG_TAG, "retrieve auth string success :"
+ authorizationStr);
- Log.d(Constants.LOG_TAG, "make requset complete");
+ Log.d(Constants.LOG_TAG, "init request params complete");
ks3AuthHandler.onSuccess(event);
} else {
AuthEvent event = new AuthEvent();
event.setCode(AuthEventCode.Failure);
- event.setContent("failure reason : authorizaion is not correct :"
+ event.setContent("failure reason : authorization is not correct :"
+ authorizationStr);
- Log.d(Constants.LOG_TAG, "make requset failed");
+ Log.d(Constants.LOG_TAG, "init request params failed");
ks3AuthHandler.onFailure(event);
}
}
- Log.d(Constants.LOG_TAG, "make requset complete");
+ Log.d(Constants.LOG_TAG, "init request params complete");
}
private void setupRequestDefault() {
-
httpMethod = HttpMethod.POST;
this.setContentMD5("");
this.addHeader(HttpHeaders.UserAgent, Constants.KS3_SDK_USER_AGENT);
@@ -327,68 +363,43 @@ public abstract class Ks3HttpRequest implements Serializable {
}
@SuppressWarnings("deprecation")
- private AsyncHttpRequsetParam finishHttpRequest(
+ private AsyncHttpRequestParam finishHttpRequest(
Ks3AuthHandler ks3AuthHandler) throws Ks3ClientException {
// Prepare md5 if need
- if (this instanceof MD5CalculateAble && this.getRequestBody() != null) {
- if (!(this.getRequestBody() instanceof MD5DigestCalculatingInputStream))
- this.setRequestBody(new MD5DigestCalculatingInputStream(this
- .getRequestBody()));
+ if (this instanceof MD5CalculateAble && this.getInputStreamBody() != null) {
+ Log.d(Constants.LOG_TAG, "request finishHttpRequest source body: " + this.getInputStreamBody().toString());
+// if (!(this.getRequestBody() instanceof MD5DigestCalculatingInputStream))
+// this.setRequestBody(new MD5DigestCalculatingInputStream(this
+// .getRequestBody()));
}
String encodedParams = encodeParams();
this.setUrl(toUrl());
-
+ String length = this.getHeader().get(HttpHeaders.ContentLength.toString());
if (this.getHttpMethod() == HttpMethod.POST) {
- if (requestBody == null && params != null) {
- try {
- setEntity(new StringEntity(encodedParams));
- } catch (UnsupportedEncodingException e) {
- throw new Ks3ClientException(
- "Unable to create HTTP entity:" + e, e);
- }
- } else {
- String length = this.getHeader().get(
- HttpHeaders.ContentLength.toString());
- HttpEntity entity = new RepeatableInputStreamRequestEntity(
- requestBody, length);
- try {
- entity = new BufferedHttpEntity(entity);
- } catch (IOException e) {
- e.printStackTrace();
- throw new Ks3ClientException("init http request error(" + e
- + ")", e);
- }
- // Set entity
- setEntity(entity);
+ if (null != inputStreamBody && null == this.requestBody) {
+ RequestBody body = new InputStreamRequestBody(inputStreamBody, getContentType(), Long.valueOf(length));
+ setRequestBody(body);
}
} else if (this.getHttpMethod() == HttpMethod.GET) {
} else if (this.getHttpMethod() == HttpMethod.PUT) {
- if (requestBody != null) {
- Map headrs = this.getHeader();
- String length = headrs
- .get(HttpHeaders.ContentLength.toString());
+ // 在request中已经设置过requestBody
+ if (inputStreamBody != null) {
if (length == null)
- throw new Ks3ClientException(
- "content-length can not be null when put request");
- RepeatableInputStreamRequestEntity entity = new RepeatableInputStreamRequestEntity(
- requestBody, length);
- entity.setProgressLisener(this.progressListener);
- setEntity(entity);
+ throw new Ks3ClientException("content-length can not be null when put request");
+ } else {
+ RequestBody body = RequestBody.create(null, new byte[]{});
+ setRequestBody(body);
}
} else if (this.getHttpMethod() == HttpMethod.DELETE) {
-
} else if (this.getHttpMethod() == HttpMethod.HEAD) {
-
} else {
- throw new Ks3ClientException("Unknow http method : "
- + this.getHttpMethod());
+ throw new Ks3ClientException("Unknow http method : " + this.getHttpMethod());
}
- if (!StringUtils.isBlank(header.get(HttpHeaders.ContentLength
- .toString()))) {
- header.remove(HttpHeaders.ContentLength.toString());
- }
+// if (!StringUtils.isBlank(length)) {
+// header.remove(HttpHeaders.ContentLength.toString());
+// }
if (authListener != null) {
StringBuffer sBuffer = new StringBuffer();
@@ -438,11 +449,11 @@ public abstract class Ks3HttpRequest implements Serializable {
new DefaultSigner().calculate(authorization, this).trim());
}
- if (entity != null) {
- return new AsyncHttpRequsetParam(url, getContentType(), header,
- params, entity);
+ long len = length != null ? Long.parseLong(length) : 0;
+ if (requestBody != null) {
+ return new AsyncHttpRequestParam(url, getContentType(), header, params, requestBody, len);
} else {
- return new AsyncHttpRequsetParam(url, header, params);
+ return new AsyncHttpRequestParam(url, header, params, len);
}
}
@@ -507,25 +518,42 @@ public abstract class Ks3HttpRequest implements Serializable {
}
- public void setRequestHandler(RequestHandle handler) {
+ public void setRequestCall(Call call) {
- if (this.handler != null) {
+ if (this.call != null) {
Log.e(Constants.LOG_TAG,
- "method : setRequestHandler , is an internal method, and the handler is already set up , ingnore ! ");
+ "method : setRequestCall , is an internal method, and the call is already set up , ingnore ! ");
return;
}
- this.handler = handler;
+ this.call = call;
+ }
+
+
+ // 取消
+ public void cancel() {
+ if (null != call) call.cancel();
}
- public boolean abort() {
+ /**
+ * 暂停请求
+ */
+ public void pause() {
+ this.cancel();
+ Log.i("Ks3HttpExecutor", " pause ...");
+ }
- if (this.handler != null) {
- return this.handler.cancel(true);
+ /**
+ * 取消进行中的请求
+ *
+ * @return
+ */
+ public void abort() {
+ if (this.call != null) {
+ this.cancel();
} else {
Log.e(Constants.LOG_TAG,
"the request is on RUNNING status , or the request is on sync mode , igonre abort request ! ");
- return false;
}
}
@@ -597,4 +625,12 @@ public abstract class Ks3HttpRequest implements Serializable {
return url;
}
+ public boolean isUseAsyncMode() {
+ return this.useAsyncMode;
+ }
+
+ public void setUseAsyncMode(boolean useAsyncMode) {
+ this.useAsyncMode = useAsyncMode;
+ }
+
}
\ No newline at end of file
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/object/PostObjectRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PostObjectRequest.java
similarity index 85%
rename from ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/object/PostObjectRequest.java
rename to ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PostObjectRequest.java
index 33b62af7c37d523c60d752b9ee63a2889d519533..1237f7d7aeac64c402658c254baa1fa92113bbb4 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/object/PostObjectRequest.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PostObjectRequest.java
@@ -1,10 +1,9 @@
-package com.ksyun.ks3.services.request.object;
+package com.ksyun.ks3.services.request;
import android.text.TextUtils;
import android.util.Base64;
import android.util.Log;
-import com.ksyun.ks3.auth.AuthUtils;
import com.ksyun.ks3.auth.DefaultSigner;
import com.ksyun.ks3.auth.MD5CalculateAble;
import com.ksyun.ks3.auth.ValidateUtil;
@@ -23,23 +22,25 @@ import com.ksyun.ks3.model.transfer.MD5DigestCalculatingInputStream;
import com.ksyun.ks3.model.transfer.RepeatableFileInputStream;
import com.ksyun.ks3.services.request.common.Ks3HttpObjectRequest;
import com.ksyun.ks3.services.request.tag.ObjectTag;
-import com.ksyun.ks3.services.request.tag.ObjectTagging;
import com.ksyun.ks3.util.Constants;
-import com.ksyun.ks3.util.LengthCheckInputStream;
import com.ksyun.ks3.util.Md5Utils;
import com.ksyun.ks3.util.StringUtils;
import com.ksyun.ks3.util.XmlWriter;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
-import java.security.SignatureException;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import okhttp3.FormBody;
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+
+/**
+ * 通过表单上传
+ */
public class PostObjectRequest extends Ks3HttpObjectRequest implements
MD5CalculateAble {
private static final long serialVersionUID = 8398633676278496457L;
@@ -111,19 +112,33 @@ public class PostObjectRequest extends Ks3HttpObjectRequest implements
protected void setupRequest() throws Ks3ClientException {
this.setHttpMethod(HttpMethod.POST);
- this.addHeader("Content-Type", "multipart/form-data");
- this.addParams("key", this.getObjectkey());
+
+ if (null != this.file) {
+ try {
+ this.setInputStreamBody(new RepeatableFileInputStream(file));
+ if (StringUtils.isBlank(getContentType())) {
+ objectMeta.setContentType(Mimetypes.getInstance().getMimetype(file));
+ }
+ objectMeta.setContentLength(String.valueOf(file.length()));
+ this.addHeader(HttpHeaders.ContentLength, String.valueOf(file.length()));
+ String contentMd5_b64 = Md5Utils.md5AsBase64(file);
+ this.addHeader(HttpHeaders.ContentMD5.toString(), contentMd5_b64);
+ this.setRequestBody(RequestBody.create(MediaType.parse(objectMeta.getContentType()), file));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
if (!StringUtils.isBlank(this.callBackUrl) && !StringUtils.isBlank(this.callBackBody)) {
- this.addParams(HttpHeaders.XKssCallBackUrl.toString(), this.callBackUrl);
- this.addParams(HttpHeaders.XKssCallBackBody.toString(), this.callBackBody);
+ this.addHeader(HttpHeaders.XKssCallBackUrl.toString(), this.callBackUrl);
+ this.addHeader(HttpHeaders.XKssCallBackBody.toString(), this.callBackBody);
if (this.callBackHeaders != null && this.callBackHeaders.size() > 0) {
for (Map.Entry entry : this.callBackHeaders.entrySet()) {
String key = entry.getKey();
String val = entry.getValue();
if (!StringUtils.isBlank(key) && key.startsWith(Constants.CALL_BACK_CUSTOM_PREFIX) && !StringUtils.isBlank(val)) {
- this.addParams(key, val);
+ this.addHeader(key, val);
} else {
Log.e(Constants.LOG_TAG, "the header:" + key + "-" + val + " is not correct ,this head will be ignored");
}
@@ -138,16 +153,16 @@ public class PostObjectRequest extends Ks3HttpObjectRequest implements
for (Map.Entry entry : this.objectMeta.getMetadata()
.entrySet()) {
if (!entry.getKey().equals(ObjectMetadata.Meta.ContentLength.toString())) {
- this.addParams(entry.getKey().toString(), entry.getValue());
+ this.addHeader(entry.getKey().toString(), entry.getValue());
}
}
for (Map.Entry entry : this.objectMeta.getUserMetadata()
.entrySet()) {
if (entry.getKey().startsWith(ObjectMetadata.userMetaPrefix))
- this.addParams(entry.getKey(), entry.getValue());
+ this.addHeader(entry.getKey(), entry.getValue());
}
if (this.cannedAcl != null) {
- this.addParams(HttpHeaders.CannedAcl.toString(), cannedAcl.toString());
+ this.addHeader(HttpHeaders.CannedAcl.toString(), cannedAcl.toString());
}
if (this.acl != null) {
List grants_fullcontrol = new ArrayList();
@@ -166,17 +181,17 @@ public class PostObjectRequest extends Ks3HttpObjectRequest implements
}
}
if (grants_fullcontrol.size() > 0) {
- this.addParams(HttpHeaders.GrantFullControl.toString(), TextUtils.join(",", grants_fullcontrol));
+ this.addHeader(HttpHeaders.GrantFullControl.toString(), TextUtils.join(",", grants_fullcontrol));
}
if (grants_read.size() > 0) {
- this.addParams(HttpHeaders.GrantRead.toString(), TextUtils.join(",", grants_read));
+ this.addHeader(HttpHeaders.GrantRead.toString(), TextUtils.join(",", grants_read));
}
if (grants_write.size() > 0) {
- this.addParams(HttpHeaders.GrantWrite.toString(), TextUtils.join(",", grants_write));
+ this.addHeader(HttpHeaders.GrantWrite.toString(), TextUtils.join(",", grants_write));
}
}
if (this.redirectLocation != null) {
- this.addParams(HttpHeaders.XKssWebsiteRedirectLocation.toString(), this.redirectLocation);
+ this.addHeader(HttpHeaders.XKssWebsiteRedirectLocation.toString(), this.redirectLocation);
}
if (this.getTagging() != null && this.getTagging().getTagSet() != null && this.getTagging().getTagSet().size() > 0) {
XmlWriter writer = new XmlWriter();
@@ -197,8 +212,11 @@ public class PostObjectRequest extends Ks3HttpObjectRequest implements
this.getParams().put(HttpHeaders.XKssObjectTag.toString(), xKssObjectTagStr);
}
}
- this.addParams(HttpHeaders.Authorization.toString(),
+ this.addHeader(HttpHeaders.Authorization.toString(),
new DefaultSigner().calculate(this.auth, this).trim());
+ Log.i("TAG", this.getHeader().toString());
+ RequestBody body = new FormBody.Builder().add("", "").build();
+// setEntity(body);
}
@Override
@@ -303,7 +321,7 @@ public class PostObjectRequest extends Ks3HttpObjectRequest implements
public String getMd5() {
return Base64
.encodeToString(
- ((MD5DigestCalculatingInputStream) super.getRequestBody())
+ ((MD5DigestCalculatingInputStream) super.getInputStreamBody())
.getMd5Digest(), Base64.DEFAULT).trim();
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/ProgressRequestBody.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/ProgressRequestBody.java
new file mode 100644
index 0000000000000000000000000000000000000000..70ecfdb345a2877d4e990db974fdb0dff17f7de5
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/ProgressRequestBody.java
@@ -0,0 +1,84 @@
+package com.ksyun.ks3.services.request;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.ksyun.ks3.services.handler.AsyncHttpResponseHandler;
+import com.ksyun.ks3.util.OkhttpInternalUtils;
+import com.ksyun.ks3.util.StringUtils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+import okio.Buffer;
+import okio.BufferedSink;
+import okio.ForwardingSink;
+import okio.Okio;
+import okio.Sink;
+import okio.Source;
+
+public class ProgressRequestBody extends RequestBody {
+
+ private AsyncHttpResponseHandler handler;
+ private static final int SEGMENT_SIZE = 2048; // okio.Segment.SIZE
+
+ private InputStream inputStream;
+ private String contentType;
+ private long contentLength;
+
+ public ProgressRequestBody(InputStream input, long contentLength, String contentType,
+ AsyncHttpResponseHandler handler) {
+ this.inputStream = input;
+ this.contentType = contentType;
+ this.contentLength = contentLength;
+ this.handler =handler;
+ }
+
+ @Override
+ public MediaType contentType() {
+ return MediaType.parse(this.contentType);
+ }
+
+ @Override
+ public long contentLength() throws IOException {
+ return this.contentLength;
+ }
+
+ @Override
+ public void writeTo(BufferedSink sink) throws IOException {
+ if (sink instanceof Buffer
+ || sink.toString().contains(
+ "com.android.tools.profiler.support.network.HttpTracker$OutputStreamTracker")) {
+ return;
+ } else {
+ Source source = Okio.source(this.inputStream);
+ long total = 0;
+ long read, toRead, remain;
+ while (total < contentLength) {
+ remain = contentLength - total;
+ toRead = Math.min(remain, SEGMENT_SIZE);
+
+ read = source.read(sink.buffer(), toRead);
+ if (read == -1) {
+ break;
+ }
+
+ total += read;
+ sink.flush();
+
+ if (handler != null && total != 0) {
+ handler.onProgress(total, contentLength);
+ }
+ }
+ if (source != null) {
+ source.close();
+ }
+ }
+ }
+
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBuckePolicyRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBucketPolicyRequest.java
similarity index 54%
rename from ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBuckePolicyRequest.java
rename to ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBucketPolicyRequest.java
index 5cf330a39fd94adeabbd6474255df48e7937fb1e..dc31b9e05cece85502ecc71f27e8e2b8efb7f9a5 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBuckePolicyRequest.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBucketPolicyRequest.java
@@ -1,29 +1,26 @@
package com.ksyun.ks3.services.request;
-import com.google.gson.Gson;
import com.ksyun.ks3.exception.Ks3ClientException;
import com.ksyun.ks3.model.HttpHeaders;
import com.ksyun.ks3.model.HttpMethod;
-import com.ksyun.ks3.model.result.BucketPolicyData;
-import com.ksyun.ks3.model.result.policy.BucketPolicyRule;
import com.ksyun.ks3.util.Md5Utils;
import com.ksyun.ks3.util.StringUtils;
import java.io.ByteArrayInputStream;
-public class PutBuckePolicyRequest extends Ks3HttpRequest {
+public class PutBucketPolicyRequest extends Ks3HttpRequest {
private static final long serialVersionUID = 28505422321283770L;
- private BucketPolicyRule policyRule;
+ private String policy;
- public PutBuckePolicyRequest(String bucketName) {
+ public PutBucketPolicyRequest(String bucketName) {
super.setBucketname(bucketName);
}
- public PutBuckePolicyRequest(String bucketName, BucketPolicyRule policyRule) {
+ public PutBucketPolicyRequest(String bucketName, String policy) {
this(bucketName);
- this.policyRule = policyRule;
+ this.policy = policy;
}
@Override
@@ -32,22 +29,19 @@ public class PutBuckePolicyRequest extends Ks3HttpRequest {
this.setHttpMethod(HttpMethod.PUT);
this.addParams("policy", "");
- BucketPolicyData bucketPolicyData = new BucketPolicyData();
- bucketPolicyData.getStatement().add(policyRule);
- String bucketPolicyBody = new Gson().toJson(bucketPolicyData);
this.addHeader(HttpHeaders.ContentType, "application/json");
- this.addHeader(HttpHeaders.ContentMD5, Md5Utils.md5AsBase64(bucketPolicyBody.getBytes()));
- this.addHeader(HttpHeaders.ContentLength, String.valueOf(bucketPolicyBody.getBytes().length));
- this.setRequestBody(new ByteArrayInputStream(bucketPolicyBody.getBytes()));
-
+ this.addHeader(HttpHeaders.ContentMD5, Md5Utils.md5AsBase64(policy.getBytes()));
+ this.addHeader(HttpHeaders.ContentLength, String.valueOf(policy.getBytes().length));
+ this.setContentLength(policy.getBytes().length);
+ this.setInputStreamBody(new ByteArrayInputStream(policy.getBytes()));
}
- public void validateParams() {
+ public void validateParams() throws Ks3ClientException {
if (StringUtils.isBlank(this.getBucketname())) {
throw new Ks3ClientException("bucket name is not correct");
}
- if (this.policyRule == null) {
+ if (this.policy == null) {
throw new Ks3ClientException("policy is not correct");
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBuckeQuotaRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBucketQuotaRequest.java
similarity index 81%
rename from ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBuckeQuotaRequest.java
rename to ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBucketQuotaRequest.java
index a828d720c9b05f1b14bc51b62c1019d150a3e5c5..357f26c2cfa2589e4658a3df87e73b501182d1bd 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBuckeQuotaRequest.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBucketQuotaRequest.java
@@ -1,16 +1,16 @@
package com.ksyun.ks3.services.request;
import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.model.BucketQuota;
import com.ksyun.ks3.model.HttpHeaders;
import com.ksyun.ks3.model.HttpMethod;
-import com.ksyun.ks3.model.result.BucketQuota;
import com.ksyun.ks3.util.Md5Utils;
import com.ksyun.ks3.util.StringUtils;
import com.ksyun.ks3.util.XmlWriter;
import java.io.ByteArrayInputStream;
-public class PutBuckeQuotaRequest extends Ks3HttpRequest {
+public class PutBucketQuotaRequest extends Ks3HttpRequest {
private static final long serialVersionUID = 28505402331223772L;
@@ -24,11 +24,11 @@ public class PutBuckeQuotaRequest extends Ks3HttpRequest {
this.bucketQuota = bucketQuota;
}
- public PutBuckeQuotaRequest(String bucketName) {
+ public PutBucketQuotaRequest(String bucketName) {
super.setBucketname(bucketName);
}
- public PutBuckeQuotaRequest(String bucketName, BucketQuota bucketQuota) {
+ public PutBucketQuotaRequest(String bucketName, BucketQuota bucketQuota) {
this(bucketName);
this.bucketQuota = bucketQuota;
}
@@ -45,8 +45,8 @@ public class PutBuckeQuotaRequest extends Ks3HttpRequest {
String xml = writer.toString();
this.addHeader(HttpHeaders.ContentMD5, Md5Utils.md5AsBase64(xml.getBytes()));
this.addHeader(HttpHeaders.ContentLength, String.valueOf(xml.length()));
- this.setRequestBody(new ByteArrayInputStream(xml.getBytes()));
-
+ this.setContentLength(xml.getBytes().length);
+ this.setInputStreamBody(new ByteArrayInputStream(xml.getBytes()));
}
public void validateParams() {
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBucketReplicationConfigRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBucketReplicationRequest.java
similarity index 83%
rename from ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBucketReplicationConfigRequest.java
rename to ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBucketReplicationRequest.java
index 975e21fb0d5389d14c5f442009e624d32189577e..9434c766a340cce81a36854d985d446eb0b41525 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBucketReplicationConfigRequest.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutBucketReplicationRequest.java
@@ -3,24 +3,24 @@ package com.ksyun.ks3.services.request;
import com.ksyun.ks3.exception.Ks3ClientException;
import com.ksyun.ks3.model.HttpHeaders;
import com.ksyun.ks3.model.HttpMethod;
-import com.ksyun.ks3.model.result.ReplicationRule;
+import com.ksyun.ks3.model.ReplicationRule;
import com.ksyun.ks3.util.Md5Utils;
import com.ksyun.ks3.util.StringUtils;
import com.ksyun.ks3.util.XmlWriter;
import java.io.ByteArrayInputStream;
-public class PutBucketReplicationConfigRequest extends Ks3HttpRequest {
+public class PutBucketReplicationRequest extends Ks3HttpRequest {
private static final long serialVersionUID = 28505512339783772L;
private ReplicationRule replicationRule;
- public PutBucketReplicationConfigRequest(String bucketName) {
+ public PutBucketReplicationRequest(String bucketName) {
super.setBucketname(bucketName);
}
- public PutBucketReplicationConfigRequest(String bucketName, ReplicationRule replicationRule) {
+ public PutBucketReplicationRequest(String bucketName, ReplicationRule replicationRule) {
this(bucketName);
this.replicationRule = replicationRule;
}
@@ -54,11 +54,12 @@ public class PutBucketReplicationConfigRequest extends Ks3HttpRequest {
String xml = writer.toString();
this.addHeader(HttpHeaders.ContentMD5, Md5Utils.md5AsBase64(xml.getBytes()));
this.addHeader(HttpHeaders.ContentLength, String.valueOf(xml.length()));
- this.setRequestBody(new ByteArrayInputStream(xml.getBytes()));
+ this.setContentLength(xml.getBytes().length);
+ this.setInputStreamBody(new ByteArrayInputStream(xml.getBytes()));
}
- public void validateParams() {
+ public void validateParams() throws Ks3ClientException {
if (StringUtils.isBlank(this.getBucketname()))
throw new Ks3ClientException("bucket name is not correct");
if (this.replicationRule == null)
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/object/PutObjectFetchRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutObjectFetchRequest.java
similarity index 99%
rename from ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/object/PutObjectFetchRequest.java
rename to ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutObjectFetchRequest.java
index 9389455f67939390df8c07ee7f6ffe899c28c095..09787c384a5e923a40a741df2981100673f5cadd 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/object/PutObjectFetchRequest.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutObjectFetchRequest.java
@@ -1,4 +1,4 @@
-package com.ksyun.ks3.services.request.object;
+package com.ksyun.ks3.services.request;
import android.text.TextUtils;
import android.util.Log;
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutObjectRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutObjectRequest.java
index e0a24cb848e181bbdba3245591e867cd81480e55..af1aba75c03cc897e2e8d6b241a60728780330ec 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutObjectRequest.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/PutObjectRequest.java
@@ -1,6 +1,7 @@
package com.ksyun.ks3.services.request;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
@@ -9,7 +10,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.regex.Pattern;
import android.text.TextUtils;
import android.util.Base64;
@@ -27,21 +27,14 @@ import com.ksyun.ks3.model.acl.CannedAccessControlList;
import com.ksyun.ks3.model.acl.Grant;
import com.ksyun.ks3.model.acl.Permission;
import com.ksyun.ks3.model.transfer.MD5DigestCalculatingInputStream;
-import com.ksyun.ks3.model.transfer.RepeatableFileInputStream;
import com.ksyun.ks3.services.request.adp.Adp;
import com.ksyun.ks3.services.request.common.Ks3HttpObjectRequest;
-import com.ksyun.ks3.services.request.tag.ObjectTag;
import com.ksyun.ks3.services.request.tag.ObjectTagging;
import com.ksyun.ks3.util.Constants;
import com.ksyun.ks3.util.HttpUtils;
import com.ksyun.ks3.util.LengthCheckInputStream;
import com.ksyun.ks3.util.Md5Utils;
import com.ksyun.ks3.util.StringUtils;
-import com.ksyun.ks3.util.XmlWriter;
-
-import static com.ksyun.ks3.util.ClientIllegalArgumentExceptionGenerator.between;
-import static com.ksyun.ks3.util.ClientIllegalArgumentExceptionGenerator.notCorrect;
-import static java.io.File.separator;
public class PutObjectRequest extends Ks3HttpObjectRequest implements
MD5CalculateAble {
@@ -91,7 +84,7 @@ public class PutObjectRequest extends Ks3HttpObjectRequest implements
public PutObjectRequest(String bucketname, String key, File file, ObjectMetadata metadata) {
this(bucketname, key, file);
this.setObjectMeta(metadata == null ? this.objectMeta : metadata);
- if (metadata.getTagging() != null && metadata.getTagging().getTagSet() != null && metadata.getTagging() .getTagSet().size() > 0) {
+ if (metadata.getTagging() != null && metadata.getTagging().getTagSet() != null && metadata.getTagging().getTagSet().size() > 0) {
this.setTagging(metadata.getTagging());
}
}
@@ -146,30 +139,30 @@ public class PutObjectRequest extends Ks3HttpObjectRequest implements
@Override
protected void setupRequest() throws Ks3ClientException {
-
-
this.setHttpMethod(HttpMethod.PUT);
try {
/**
* 设置request body meta
*/
if (file != null) {
- this.setRequestBody(new RepeatableFileInputStream(file));
+ this.setInputStreamBody(new FileInputStream(file));
if (StringUtils.isBlank(getContentType())) {
objectMeta.setContentType(Mimetypes.getInstance().getMimetype(file));
}
objectMeta.setContentLength(String.valueOf(file.length()));
this.addHeader(HttpHeaders.ContentLength, String.valueOf(file.length()));
+ this.setContentLength(file.length());
String contentMd5_b64 = Md5Utils.md5AsBase64(file);
this.addHeader(HttpHeaders.ContentMD5.toString(), contentMd5_b64);
} else if (inputStream != null) {
this.objectMeta.setContentType("application/octet-stream");
long length = objectMeta.getContentLength();
+ this.setContentLength(length);
if (length > 0) {
- this.setRequestBody(new LengthCheckInputStream(inputStream, length, false));
+ this.setInputStreamBody(new LengthCheckInputStream(inputStream, length, false));
this.addHeader(HttpHeaders.ContentLength, String.valueOf(length));
} else {
- this.setRequestBody(inputStream);
+ this.setInputStreamBody(inputStream);
this.addHeader(HttpHeaders.ContentLength, String.valueOf(inputStream.available()));
}
}
@@ -369,7 +362,7 @@ public class PutObjectRequest extends Ks3HttpObjectRequest implements
public String getMd5() {
return Base64
.encodeToString(
- ((MD5DigestCalculatingInputStream) super.getRequestBody())
+ ((MD5DigestCalculatingInputStream) super.getInputStreamBody())
.getMd5Digest(), Base64.DEFAULT).trim();
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/UploadPartRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/UploadPartRequest.java
index ad0a0edc23352011918c4ed55e754fbe899285b3..fd4ed15d253653f7aa902276855ec4338f0fa69f 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/UploadPartRequest.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/UploadPartRequest.java
@@ -74,7 +74,7 @@ public class UploadPartRequest extends Ks3HttpRequest {
}
this.addHeader(HttpHeaders.ContentLength,
String.valueOf(this.contentLength));
- this.setRequestBody(inputStream);
+ this.setInputStreamBody(inputStream);
}
public long getContentLength() {
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/adp/GetAdpRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/adp/GetAdpRequest.java
deleted file mode 100644
index 74e4031c696b4ab9cdad5444656192ad2f538d37..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/adp/GetAdpRequest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.ksyun.ks3.services.request.adp;
-
-import com.ksyun.ks3.exception.Ks3ClientException;
-import com.ksyun.ks3.model.HttpHeaders;
-import com.ksyun.ks3.model.HttpMethod;
-import com.ksyun.ks3.services.request.Ks3HttpRequest;
-import com.ksyun.ks3.util.StringUtils;
-
-/**
- * 查询数据处理任务的状态
- */
-public class GetAdpRequest extends Ks3HttpRequest {
-
- /**
- * 由putpfop,postobject,putobject,complete_mutipart_upload返回的taskid
- */
- private String taskid;
- public GetAdpRequest(String taskid){
- this.taskid = taskid;
- }
-
- @Override
- protected void setupRequest() throws Ks3ClientException {
- this.setHttpMethod(HttpMethod.GET);
- this.addParams("queryadp", "");
- this.setObjectkey(taskid);
- }
-
- @Override
- public void validateParams() throws IllegalArgumentException {
- if(StringUtils.isBlank(this.taskid))
- throw new Ks3ClientException("taskid");
- }
- public String getTaskid() {
- return taskid;
- }
- public void setTaskid(String taskid) {
- this.taskid = taskid;
- }
-
-
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/adp/GetObjectAdpRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/adp/GetObjectAdpRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..055598d67f949b911a3f4dcdf09f03eeed102ed0
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/adp/GetObjectAdpRequest.java
@@ -0,0 +1,44 @@
+package com.ksyun.ks3.services.request.adp;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.model.HttpMethod;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.StringUtils;
+
+/**
+ * 查询数据处理任务的状态
+ */
+public class GetObjectAdpRequest extends Ks3HttpRequest {
+
+ /**
+ * 由putpfop,postobject,putobject,complete_mutipart_upload返回的taskid
+ */
+ private String taskid;
+
+ public GetObjectAdpRequest(String taskid) {
+ this.taskid = taskid;
+ }
+
+ @Override
+ protected void setupRequest() throws Ks3ClientException {
+ this.setHttpMethod(HttpMethod.GET);
+ this.addParams("queryadp", "");
+ this.setObjectkey(taskid);
+ }
+
+ @Override
+ public void validateParams() throws IllegalArgumentException {
+ if (StringUtils.isBlank(this.taskid))
+ throw new Ks3ClientException("taskid");
+ }
+
+ public String getTaskid() {
+ return taskid;
+ }
+
+ public void setTaskid(String taskid) {
+ this.taskid = taskid;
+ }
+
+
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/adp/PutAdpRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/adp/PutAdpRequest.java
deleted file mode 100644
index 3d58d7089da1ea9f341ae92b5c2d8332336c5908..0000000000000000000000000000000000000000
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/adp/PutAdpRequest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.ksyun.ks3.services.request.adp;
-
-import com.ksyun.ks3.exception.Ks3ClientException;
-import com.ksyun.ks3.model.HttpHeaders;
-import com.ksyun.ks3.model.HttpMethod;
-import com.ksyun.ks3.services.request.Ks3HttpRequest;
-import com.ksyun.ks3.util.HttpUtils;
-import com.ksyun.ks3.util.StringUtils;
-
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.List;
-
-
-/**
- * 添加数据处理任务
- */
-public class PutAdpRequest extends Ks3HttpRequest {
-
- /**
- * 要进行的处理任务
- */
- private List adps = new ArrayList();
- /**
- * 数据处理任务完成后通知的url
- */
- private String notifyURL;
- /**
- *
- * @param bucketName 要处理的数据所在bucket
- * @param key 要处理的数据的key
- */
- public PutAdpRequest(String bucketName,String key){
- setBucketname(bucketName);
- setObjectkey(key);
- }
- /**
- *
- * @param bucketName 要处理的数据所在bucket
- * @param key 要处理的数据的key
- * @param adps 数据处理指令
- */
- public PutAdpRequest(String bucketName,String key,List adps){
- this(bucketName,key);
- this.setAdps(adps);
- }
-
- @Override
- protected void setupRequest() throws Ks3ClientException {
- this.setHttpMethod(HttpMethod.PUT);
- this.addParams("adp", "");
- this.addHeader(HttpHeaders.AsynchronousProcessingList, URLEncoder.encode(HttpUtils.convertAdps2String(adps)));
- if(!StringUtils.isBlank(notifyURL))
- this.addHeader(HttpHeaders.NotifyURL, HttpUtils.urlEncode(notifyURL,false));
- }
-
- @Override
- public void validateParams() throws IllegalArgumentException {
- if(StringUtils.isBlank(this.getBucketname()))
- throw new Ks3ClientException("bucketname");
- if(StringUtils.isBlank(this.getObjectkey()))
- throw new Ks3ClientException("objectkey");
- if(adps==null){
- throw new Ks3ClientException("adps");
- }else{
- for(Adp adp : adps){
- if(StringUtils.isBlank(adp.getCommand())){
- throw new Ks3ClientException("adps.command");
- }
- }
- }
- if(StringUtils.isBlank(notifyURL))
- throw new Ks3ClientException("notifyURL");
- }
- public List getAdps() {
- return adps;
- }
-
- public void setAdps(List adps) {
- this.adps = adps;
- }
-
- public String getNotifyURL() {
- return notifyURL;
- }
-
- public void setNotifyURL(String notifyURL) {
- this.notifyURL = notifyURL;
- }
-
-
-}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/adp/PutObjectAdpRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/adp/PutObjectAdpRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..ef1d355f926315e721d69fc4be8b507ff7c8cd30
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/adp/PutObjectAdpRequest.java
@@ -0,0 +1,93 @@
+package com.ksyun.ks3.services.request.adp;
+
+import com.ksyun.ks3.exception.Ks3ClientException;
+import com.ksyun.ks3.model.HttpHeaders;
+import com.ksyun.ks3.model.HttpMethod;
+import com.ksyun.ks3.services.request.Ks3HttpRequest;
+import com.ksyun.ks3.util.HttpUtils;
+import com.ksyun.ks3.util.StringUtils;
+
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * 添加数据处理任务
+ */
+public class PutObjectAdpRequest extends Ks3HttpRequest {
+
+ /**
+ * 要进行的处理任务
+ */
+ private List adps = new ArrayList();
+ /**
+ * 数据处理任务完成后通知的url
+ */
+ private String notifyURL;
+
+ /**
+ * @param bucketName 要处理的数据所在bucket
+ * @param key 要处理的数据的key
+ */
+ public PutObjectAdpRequest(String bucketName, String key) {
+ setBucketname(bucketName);
+ setObjectkey(key);
+ }
+
+ /**
+ * @param bucketName 要处理的数据所在bucket
+ * @param key 要处理的数据的key
+ * @param adps 数据处理指令
+ */
+ public PutObjectAdpRequest(String bucketName, String key, List adps) {
+ this(bucketName, key);
+ this.setAdps(adps);
+ }
+
+ @Override
+ protected void setupRequest() throws Ks3ClientException {
+ this.setHttpMethod(HttpMethod.PUT);
+ this.addParams("adp", "");
+ this.addHeader(HttpHeaders.AsynchronousProcessingList, URLEncoder.encode(HttpUtils.convertAdps2String(adps)));
+ if (!StringUtils.isBlank(notifyURL))
+ this.addHeader(HttpHeaders.NotifyURL, HttpUtils.urlEncode(notifyURL, false));
+ }
+
+ @Override
+ public void validateParams() throws IllegalArgumentException {
+ if (StringUtils.isBlank(this.getBucketname()))
+ throw new Ks3ClientException("bucketname");
+ if (StringUtils.isBlank(this.getObjectkey()))
+ throw new Ks3ClientException("objectkey");
+ if (adps == null) {
+ throw new Ks3ClientException("adps");
+ } else {
+ for (Adp adp : adps) {
+ if (StringUtils.isBlank(adp.getCommand())) {
+ throw new Ks3ClientException("adps.command");
+ }
+ }
+ }
+ if (StringUtils.isBlank(notifyURL))
+ throw new Ks3ClientException("notifyURL");
+ }
+
+ public List getAdps() {
+ return adps;
+ }
+
+ public void setAdps(List adps) {
+ this.adps = adps;
+ }
+
+ public String getNotifyURL() {
+ return notifyURL;
+ }
+
+ public void setNotifyURL(String notifyURL) {
+ this.notifyURL = notifyURL;
+ }
+
+
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/tag/PutObjectTaggingRequest.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/tag/PutObjectTaggingRequest.java
index 8e0ecddfc89f57c6b3b2b1359f3cd47cc0b0db0f..275078b2a0d320995f7a8877abe1b4f0a1b2c0ba 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/tag/PutObjectTaggingRequest.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/services/request/tag/PutObjectTaggingRequest.java
@@ -9,7 +9,6 @@ import com.ksyun.ks3.model.HttpMethod;
import com.ksyun.ks3.model.transfer.MD5DigestCalculatingInputStream;
import com.ksyun.ks3.services.request.Ks3HttpRequest;
import com.ksyun.ks3.services.request.MD5CalculateAble;
-import com.ksyun.ks3.services.request.common.Ks3HttpObjectRequest;
import com.ksyun.ks3.util.Md5Utils;
import com.ksyun.ks3.util.StringUtils;
import com.ksyun.ks3.util.XmlWriter;
@@ -65,7 +64,8 @@ public class PutObjectTaggingRequest extends Ks3HttpRequest implements
String xml = writer.toString();
this.addHeader(HttpHeaders.ContentMD5, Md5Utils.md5AsBase64(xml.getBytes()));
this.addHeader(HttpHeaders.ContentLength, String.valueOf(xml.length()));
- this.setRequestBody(new ByteArrayInputStream(xml.getBytes()));
+ this.setContentLength(xml.length());
+ this.setInputStreamBody(new ByteArrayInputStream(xml.getBytes()));
}
public void validateParams() throws IllegalArgumentException {
@@ -112,7 +112,7 @@ public class PutObjectTaggingRequest extends Ks3HttpRequest implements
public String getMd5() {
return Base64
.encodeToString(
- ((MD5DigestCalculatingInputStream) super.getRequestBody())
+ ((MD5DigestCalculatingInputStream) super.getInputStreamBody())
.getMd5Digest(), Base64.DEFAULT).trim();
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/Constants.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/Constants.java
index 8bf044bd6cc46c375f12ec4f7121c2b9d813456a..e8d8554a46a8f11b4b89fd801f8ee2e8eaa1f389 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/Constants.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/Constants.java
@@ -4,57 +4,57 @@ import java.util.Arrays;
import java.util.List;
public class Constants {
- /* version */
- public static final String VERSION = "1.5.5";
- /* Global log tag */
- public static final String GLOBLE_LOG_TAG = "ks3_sdk_android";
- public final static String KS3_SDK_USER_AGENT = "ks3-kss-android-sdk" + "/" + VERSION;
- public final static String LOG_TAG = "ks3_android_sdk";
- /* Xml namespace */
- public final static String KS3_XML_NAMESPACE = "http://s3.amazonaws.com/doc/2006-03-01/";
- public final static String KS3_PACAKAGE = "com.ksyun.ks3";
- public static final String KS3_PROTOCOL = "http";
- public static final String KS3_HOSTNAME = null;
- public static final String KS3_UPLOAD_HOSTNAME = null;
- public static final String KS3_DOWNLOAD_HOSTNAME = null;
- /* Default Configue */
- public static final String ClientConfig_CONNECTION_TIMEOUT = "50000";
- public static final String ClientConfig_SOCKET_TIMEOUT = String
- .valueOf(Integer.MAX_VALUE);
- public static final String ClientConfig_SOCKET_SEND_BUFFER_SIZE_HINT = "0";
- public static final String ClientConfig_SOCKET_RECEIVE_BUFFER_SIZE_HINT = "0";
- public static final String ClientConfig_CONNECTION_TTL = "-1";
- public static final String ClientConfig_MAX_CONNECTIONS = "50";
- public static final String ClientConfig_PROXY_HOST = null;
- public static final String ClientConfig_PROXY_PORT = "-1";
- public static final String ClientConfig_PROXY_DAMAIN = null;
- public static final String ClientConfig_PROXY_PASSWORD = null;
- public static final String ClientConfig_PROXY_USER_NAME = null;
- public static final String ClientConfig_PROXY_WORKSTATION = null;
- public static final String ClientConfig_IS_PREEMPTIVE_BASIC_PROXY_AUTH = "false";
- public static final String ClientConfig_CLIENT_SIGNER = "com.ksyun.ks3.signer.DefaultSigner";
- // uploadPart
- public static final int minPartNumber = 1;
- public static final int maxPartNumber = 10000;
- public static final int minPartSize = 0 ;
- public static final int maxPartSize = 5 * 1024 * 1024 * 1024;
- public static final int EXCEPTION = 0;
-
- // call back
- public static final String CALL_BACK_CUSTOM_PREFIX = "kss-";
+ /* version */
+ public static final String VERSION = "2.0.0";
+ /* Global log tag */
+ public static final String GLOBLE_LOG_TAG = "ks3_sdk_android";
+ public final static String KS3_SDK_USER_AGENT = "ks3-kss-android-sdk" + "/" + VERSION;
+ public final static String LOG_TAG = "ks3_android_sdk";
+ /* Xml namespace */
+ public final static String KS3_XML_NAMESPACE = "http://s3.amazonaws.com/doc/2006-03-01/";
+ public final static String KS3_PACAKAGE = "com.ksyun.ks3";
+ public static final String KS3_PROTOCOL = "http";
+ public static final String KS3_HOSTNAME = null;
+ public static final String KS3_UPLOAD_HOSTNAME = null;
+ public static final String KS3_DOWNLOAD_HOSTNAME = null;
+ /* Default Configue */
+ public static final String ClientConfig_CONNECTION_TIMEOUT = "50000";
+ public static final String ClientConfig_SOCKET_TIMEOUT = String
+ .valueOf(Integer.MAX_VALUE);
+ public static final String ClientConfig_SOCKET_SEND_BUFFER_SIZE_HINT = "0";
+ public static final String ClientConfig_SOCKET_RECEIVE_BUFFER_SIZE_HINT = "0";
+ public static final String ClientConfig_CONNECTION_TTL = "-1";
+ public static final String ClientConfig_MAX_CONNECTIONS = "50";
+ public static final String ClientConfig_PROXY_HOST = null;
+ public static final String ClientConfig_PROXY_PORT = "-1";
+ public static final String ClientConfig_PROXY_DAMAIN = null;
+ public static final String ClientConfig_PROXY_PASSWORD = null;
+ public static final String ClientConfig_PROXY_USER_NAME = null;
+ public static final String ClientConfig_PROXY_WORKSTATION = null;
+ public static final String ClientConfig_IS_PREEMPTIVE_BASIC_PROXY_AUTH = "false";
+ public static final String ClientConfig_CLIENT_SIGNER = "com.ksyun.ks3.signer.DefaultSigner";
+ // uploadPart
+ public static final int minPartNumber = 1;
+ public static final int maxPartNumber = 10000;
+ public static final int minPartSize = 0;
+ public static final int maxPartSize = 5 * 1024 * 1024 * 1024;
+ public static final int EXCEPTION = 0;
+
+ // call back
+ public static final String CALL_BACK_CUSTOM_PREFIX = "kss-";
+
+
+ public static List postFormIgnoreFields = Arrays.asList(new String[]{"AWSAccessKeyId", "KSSAccessKeyId", "signature", "policy", "submit", "file"});
+ public static List postFormUnIgnoreCase = Arrays.asList(new String[]{
+ "Content-Type",
+ "Content-Length",
+ "Cache-Control",
+ "Content-Disposition",
+ "Content-Encoding",
+ "Expires",
+ "AWSAccessKeyId",
+ "KSSAccessKeyId"
+ });
- public static List postFormIgnoreFields = Arrays.asList(new String[]{"AWSAccessKeyId","KSSAccessKeyId","signature","policy","submit","file"});
- public static List postFormUnIgnoreCase = Arrays.asList(new String[] {
- "Content-Type",
- "Content-Length",
- "Cache-Control",
- "Content-Disposition",
- "Content-Encoding",
- "Expires",
- "AWSAccessKeyId",
- "KSSAccessKeyId"
- });
-
-
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/DateUtil.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/DateUtil.java
index b76821554edf90934ca979bc5329766b68f61376..ec276bced9a191b19a6ba5abe19a07d9f11e9065 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/DateUtil.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/DateUtil.java
@@ -1,5 +1,6 @@
package com.ksyun.ks3.util;
+import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
@@ -10,7 +11,57 @@ import android.net.ParseException;
import com.ksyun.ks3.exception.Ks3ClientException;
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
+import org.joda.time.format.ISODateTimeFormat;
+
public class DateUtil {
+
+ public static enum DATETIME_PROTOCOL {
+ RFC1123, ISO8861;
+ };
+ public static Date parseRfc822Date(String dateString) throws java.text.ParseException {
+ return getRfc822DateFormat().parse(dateString);
+ }
+
+ private static DateFormat getRfc822DateFormat() {
+ SimpleDateFormat rfc822DateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US);
+ rfc822DateFormat.setTimeZone(new SimpleTimeZone(0, "GMT"));
+ return rfc822DateFormat;
+ }
+ /**
+ * 获取指定时间对应的毫秒数
+ * @param time "HH:mm:ss"
+ * @return
+ */
+ public static long getTimeMillis(String time) {
+ try {
+ DateFormat dateFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
+ DateFormat dayFormat = new SimpleDateFormat("yy-MM-dd");
+ Date curDate = dateFormat.parse(dayFormat.format(new Date()) + " " + time);
+ return curDate.getTime();
+ } catch (java.text.ParseException e) {
+ e.printStackTrace();
+ }
+ return 0;
+ }
+ public static String convertDate2Str(Date date, DATETIME_PROTOCOL protocol) {
+ if (protocol.equals(DATETIME_PROTOCOL.RFC1123)) {
+
+ org.joda.time.format.DateTimeFormatter RFC1123_DATE_TIME_FORMATTER = DateTimeFormat
+ .forPattern("EEE, dd MMM yyyy HH:mm:ss 'GMT'")
+ .withZoneUTC().withLocale(Locale.ENGLISH);
+
+ return RFC1123_DATE_TIME_FORMATTER.print(date.getTime());
+
+ } else if (protocol.equals(DATETIME_PROTOCOL.ISO8861)) {
+
+ DateTimeFormatter ISO8861_FORMATTER = ISODateTimeFormat.dateTime()
+ .withZoneUTC();
+ return ISO8861_FORMATTER.print(date.getTime());
+ }
+ return null;
+ }
// date to string
public static String ConverToString(Date date) {
SimpleDateFormat df = new SimpleDateFormat(
@@ -39,10 +90,6 @@ public class DateUtil {
"The server did not return the expected value,it is "
+ strDate, e);
}
-
-
-
-
}
public static String GetUTCTime() {
SimpleDateFormat df = new SimpleDateFormat(
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/IOUtils.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/IOUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..72286a732e109e1e9162de8aa7336af83fd131f5
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/IOUtils.java
@@ -0,0 +1,19 @@
+package com.ksyun.ks3.util;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class IOUtils {
+ public static byte[] toByteArray(InputStream is) throws IOException {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ int nRead;
+ byte[] data = new byte[16384];
+
+ while ((nRead = is.read(data, 0, data.length)) != -1) {
+ buffer.write(data, 0, nRead);
+ }
+
+ return buffer.toByteArray();
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/Md5Utils.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/Md5Utils.java
index fae539ada6d9801b830b554696cdcc74d83d5086..10948f91750605356128ae3353d04bc89f14ec97 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/Md5Utils.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/Md5Utils.java
@@ -114,7 +114,7 @@ public class Md5Utils {
}
try {
- md5 = new String(Base64.encode(Hex.decodeHex(eTag.toCharArray()), Base64.DEFAULT) , "UTF-8");
+ md5 = new String(Base64.encode(Hex.decodeHex(eTag.toCharArray()), Base64.DEFAULT) , "UTF-8").trim();
} catch(Exception e) {
Log.e("ks3","Something Wrong when converter eTag to md5 :" + eTag);
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/ModelUtil.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/ModelUtil.java
index aacfb6ebfbf4b6af4c2e75a4c47273a0e4a27989..dcf311f200ca35fdbfc51016af5a2a2490261567 100644
--- a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/ModelUtil.java
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/ModelUtil.java
@@ -3,45 +3,24 @@ package com.ksyun.ks3.util;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
-import cz.msebera.android.httpclient.Header;
-import cz.msebera.android.httpclient.HeaderElement;
-import cz.msebera.android.httpclient.ParseException;
-import com.loopj.android.http.RequestParams;
+import okhttp3.Headers;
public class ModelUtil {
- public static Header[] convertHeaderArray(Map sourceMap) {
- Iterator> iterator = sourceMap.entrySet()
- .iterator();
- Header[] headers = new Header[sourceMap.size()];
- int num = 0;
- while (iterator.hasNext()) {
- final Map.Entry entry = iterator.next();
- Header header = new Header() {
- @Override
- public String getValue() {
- return entry.getValue();
- }
-
- @Override
- public String getName() {
- return entry.getKey();
- }
-
- @Override
- public HeaderElement[] getElements() throws ParseException {
- return null;
- }
- };
- headers[num] = header;
- num++;
- }
- return headers;
- }
-
- public static RequestParams convertRequsetParams(
- Map sourceMap) {
- return new RequestParams(sourceMap);
- }
+ public static Headers convertHeaderArray(Map sourceMap) {
+ Iterator> iterator = sourceMap.entrySet()
+ .iterator();
+ Headers.Builder builder = new Headers.Builder();
+ while (iterator.hasNext()) {
+ final Map.Entry entry = iterator.next();
+ builder.add(entry.getKey(), entry.getValue());
+ }
+ return builder.build();
+ }
+//
+// public static RequestParams convertRequestParams(
+// Map sourceMap) {
+// return new RequestParams(sourceMap);
+// }
}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/OkhttpInternalUtils.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/OkhttpInternalUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..33f3633f5962b9742fd8ecedec9566b68b25bf85
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/OkhttpInternalUtils.java
@@ -0,0 +1,20 @@
+package com.ksyun.ks3.util;
+
+import java.io.Closeable;
+
+public class OkhttpInternalUtils {
+ /**
+ * Closes {@code closeable}, ignoring any checked exceptions. Does nothing if {@code closeable} is
+ * null.
+ */
+ public static void closeQuietly(Closeable closeable) {
+ if (closeable != null) {
+ try {
+ closeable.close();
+ } catch (RuntimeException rethrown) {
+ throw rethrown;
+ } catch (Exception ignored) {
+ }
+ }
+ }
+}
diff --git a/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/ResponseUtils.java b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/ResponseUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..a7921f9598ca7509b1a40906e8a713a577bf4b9c
--- /dev/null
+++ b/ks3-android-sdk/ks3androidsdk/src/main/java/com/ksyun/ks3/util/ResponseUtils.java
@@ -0,0 +1,16 @@
+package com.ksyun.ks3.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import okhttp3.Headers;
+
+public class ResponseUtils {
+ public static Map parseResponseHeaders(Headers responseHeaders) {
+ Map headers = new HashMap();
+ for (int i = 0; i < responseHeaders.size(); i++) {
+ headers.put(responseHeaders.name(i), responseHeaders.value(i));
+ }
+ return headers;
+ }
+}
diff --git a/releases/ks3-androidsdk-2.0.0.zip b/releases/ks3-androidsdk-2.0.0.zip
new file mode 100644
index 0000000000000000000000000000000000000000..7bae9f188804fdd09dab6298c3b5c38e27339509
Binary files /dev/null and b/releases/ks3-androidsdk-2.0.0.zip differ