1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ks3sdk-new_ks3sdk_android

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Руководство по использованию KS3 SDK для Android


Введение

Этот документ в основном описывает установку и использование KS3 Android SDK. Для получения подробной информации о KS3, пожалуйста, обратитесь к документационному центру.

Подготовка перед разработкой

  • Откройте доступ к сервису KS3 и создайте AccessKeyID и AccessKeySecret.
  • Загрузите последнюю версию jar-пакета из папки releases: ks3-android-sdk-x.x.x.jar.

Подготовка к использованию SDK

  • Android-разрешения:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"

Конфигурация SDK

SDK представлен в виде jar-пакета. Скопируйте скачанный jar-пакет в папку app/libs и добавьте его как библиотеку, используя контекстное меню «Add As Library...».

Также можно скачать исходный код и добавить его в качестве библиотеки.

Среда выполнения

  • minSdkVersion 9

Дополнительные пояснения

Потоки и безопасность: учитывая, что Android 4.0 и выше больше не разрешает выполнять сетевые запросы и операции с пользовательским интерфейсом в главном потоке, а также учитывая, что все операции с UI должны выполняться в главном потоке. API, предоставляемые ks3-android-sdk, по умолчанию позволяют разработчикам вызывать их в главном потоке и будут выполнять запросы асинхронно, при этом обратные вызовы методов будут выполняться в основном потоке.

Если разработчику необходимо использовать синхронный способ вызова API (то есть в собственном потоке, вызвать синхронный API-запрос), необходимо вызвать следующий метод, чтобы гарантировать, что API будет выполнен синхронно.

ArrayList<Bucket> bucketList = client.syncListBuckets();// синхронный вызов API, должен выполняться в неглавном потоке, в случае неудачи будет выброшено исключение

Пример проекта

Мы предоставляем полный пример проекта, который вы можете загрузить и изучить или использовать в качестве примера кода. Чтобы просмотреть проект, перейдите по ссылке. Обратите внимание, что при импорте проекта необходимо выбрать каталог ks3-android-sdk. Каталог ks3androidsdk содержит исходный код SDK, а каталог demo — пример кода.


Безопасность

Сценарии использования

Поскольку хранение AccessKeyID и AccessKeySecret в открытом виде на стороне приложения является крайне небезопасным, рекомендуется использовать следующие сценарии:

Рисунок 1

Например, если разработчику требуется выполнить обратный вызов на определённый URL после завершения запроса SDK, можно использовать функцию обратного вызова Callback. Разработчику необходимо передать callBackUrl и callBackBody в соответствующем запросе. Если требуются пользовательские параметры, они должны быть переданы в формате ключ-значение.

Примечание: метод setCallBack() доступен только в классах PutObejctRequest и CompleteMultipartUploadRequest.

Имя метода:

public void setCallBack(String callBackUrl, String callBackBody, Map<String, String> customParams){};

Описание параметров:

callBackUrl: URL обратного вызова.

callBackBody: параметры обратного вызова, которые поддерживают магические переменные, пользовательские параметры и константы, указывающие на параметры, необходимые для обратного вызова: например, String callBackBody = "objectKey=${key}&etag=${etag}&location=${kss-location}&name=${kss-name}";

customParams: пользовательские параметры, должны начинаться с префикса kss-

Магические переменные: это набор предварительно определённых переменных, использующих форму ${key} в качестве содержимого CallBackBody.

Доступные магические переменные:

Параметр Описание Примечание
bucket Имя файла В кодировке UTF-8
key Название файла В кодировке UTF-8
etag Значение MD5 файла, закодированное в base64
objectSize Размер файла в байтах
mimeType Тип файла
createTime Время создания файла в Unix-формате, выраженное в секундах Пример: 1420629372

Пример использования обратного вызова:


        Map<String,String> customParams = new HashMap<String, String>();
        //Пользовательские параметры должны начинаться с kss-
        params.put("kss-location", "user_input_location");
        params.put("kss-name", "user_input_name");
        request.setCallBack("http://127.0.0.1:19091/kss/call_back", "objectKey=${key}&etag=${etag}&location=${kss-location}&name=${kss-name}", customParams);
        client.putObject(request, new PutObjectResponseHandler() {

            @Override
            public void onTaskProgress(double progress) {
            }

            @Override
            public void onTaskSuccess(int statesCode, Header[] responceHeaders) {
            }

            @Override
            public void onTaskStart() {
            }

            @Override
            public void onTaskFinish() {
            }

            @Override
            public void onTaskFailure(int statesCode, Header[] responceHeaders,
                    String response, Throwable paramThrowable) {
            }

            @Override
            public void onTaskCancel() {
            }
        });

Инициализация Ks3Client

Инициализацию Ks3Client можно выполнить двумя способами:

  • Непосредственно с использованием AccessKeyID и AccessKeySecret (небезопасно, рекомендуется только для тестирования).
  • Реализовать авторизацию обратного вызова (AuthListener) для получения токена (подписи), то есть клиентское приложение отправляет запрос с подписью на сервер бизнес-логики, сервер реализует алгоритм подписи и возвращает токен (подпись), класс AuthUtils в SDK и Demo предоставляет реализацию алгоритма подписи на Java. Затем SDK добавляет токен (подпись), возвращённый методом onCalculateAuth(), ко всем запросам, и пользователь может нормально вызывать API, предоставленные SDK (рекомендуется).
  • Использовать временные учётные данные с AccessKeyID, AccessKeySecret и securityToken для инициализации клиента. Временные учётные данные — это роль, которая предоставляется клиенту приложением. Клиент получает временные учётные данные от сервера приложений, затем создаёт клиента с помощью полученных временных учётных данных, AccessKeyID, AccessKeySecret и securityToken. Подробные сведения о временных учётных записях см. в документе.

Подпись запроса

Метод: В запросе скорее всего текст технической направленности из области разработки и тестирования программного обеспечения. Основной язык текста запроса — английский.

Текст запроса:

在请求中加入名为Authorization的Header,值为签名值。形如:

Authorization: KSS P3UPCMORAFON76Q6RTNQ:vU9XqPLcXd3nWdlfLWIhruZrLAM=

*签名生成规则*

    ```java

        Authorization = “KSS YourAccessKeyID:Signature”

        Signature = Base64(HMAC-SHA1(YourAccessKeyIDSecret, UTF-8-Encoding-Of( StringToSign ) ) );

        StringToSign = HTTP-Verb + "\n" +
               Content-MD5 + "\n" +
               Content-Type + "\n" +
               Date + "\n" +
               CanonicalizedKssHeaders +
               CanonicalizedResource;

    ```

**关于签名的必要说明:**

对于使用AuthListener以Token方式初始化SDK的用户,需要注意onCalculateAuth()回调方法中的参数,即为计算StringToSign的参数,服务器端应根据上述签名生成规则,利用AccessKeyID及AccessKeySecret**计算出签名并正确返回给SDK**。

onCalculateAuth()回调方法的参数Content-MD5, Content-Type, CanonicalizedKssHeaders参数**可为空**。若为空,则SDK会使用空字符串("")替代, 但Date和CanonicalizedResource不能为空。

为保证请求时间的一致性,需要App客户端及客户业务服务器保证各自的时间正确性,否则用**错误的时间**尝试请求,会返回403Forbidden错误。

onCalculateAuth()回调方法参数说明:

* Content-MD5 表示请求内容数据的MD5值, 使用Base64编码
* Content-Type 表示请求内容的类型
* Date 表示此次操作的时间,且必须为 HTTP1.1 中支持的 GMT 格式,客户端应**务必**保证本地时间正确性
* CanonicalizedKssHeaders 表示HTTP请求中的以x-kss开头的Header组合
* CanonicalizedResource 表示用户访问的资源

对应的初始化代码如下:

***For AccessKeyID、AccessKeySecret***

    ```java

        /* Directly using ak&sk */
        client = new Ks3Client(Constants.ACCESS_KEY_ID,Constants.ACCESS_KEY_SECRET, DummyActivity.this);
        configuration = Ks3ClientConfiguration.getDefaultConfiguration();
        client.setConfiguration(configuration);
        client.setEndpoint("ks3-cn-beijing.ksyun.com");

    ```

***For AuthListener***

    ```java

        /* Using authListener,Let your app server saved ak&sk and return token*/
        client = new Ks3Client(new AuthListener() {
            @Override
            public String onCalculateAuth(String httpMethod,
                    String ContentType, String Date, String ContentMD5,
                    String Resource, String Headers) {
                // 此处应由APP端向业务服务器发送post请求返回Token。
                // 需要注意该回调方法运行在非主线程
                //
                String token = requsetToAppServer(httpMethod, ContentType,
                        Date, ContentMD5, Resource, Headers);
                return token;
            }
        }, DummyActivity.this);
        configuration = Ks3ClientConfiguration.getDefaultConfiguration();
        client.setConfiguration(configuration);
        client.setEndpoint("ks3-cn-beijing.ksyun.com");

    ```
*注意事项:*
- 如果date参与签名的计算时需要使用`ServerDateAuthListener`
- 如果date不参与签名计算时使用`AuthListener`

---

## SDK介绍及使用

### 核心类介绍
- Ks3Client 封装接入Web Service的一系列操作,提供更加便利的接口以及回调
- Ks3ClientConfiguration 配置Ks3Client参数,包括代理设置,请求超时时长以及重试次数等
- AuthUtils 包含授权算法的工具类

### 资源管理操作

* [List Buckets](#list-buckets) 列出客户所有的Bucket信息
* [Create Bucket](#create-bucket) 创建一个新的Bucket
* [Delete Bucket](#delete-bucket) 删除指定Bucket
* [Get Bucket ACL](#get-bucket-acl) 获取Bucket的ACL
* [Put Bucket ACL](#put-bucket-acl) 设置Bucket的ACL
* [Head Bucket](#head-bucket) 查询是否已经存在指定Bucket
* [Put Bucket CRR](#put-bucket-crr)设置跨区域复制规则
* [Get Bucket CRR](#get-bucket-crr)获取跨区域复制规则
* [Get Bucket QUOTA](#get-bucket-quota)设置桶配额
* [Get Bucket QUOTA](#get-bucket-quota)获取桶配额
* [Delete Bucket QUOTA](#get-bucket-quota)删除桶配额
* [Get Bucket POLICY](#get-bucket-policy)设置空间策略
* [Get Bucket POLICY](#get-bucket-policy)获取空间策略
* [Delete Bucket POLICY](#get-bucket-policy)删除空间策略
* [Get Object](#get-object) 下载Object数据
* [Head Object](#head-object) 查询是否已经存在指定Object
* [Delete Object](#delete-object) 删除指定Object
* [Get Object ACL](#get-object-acl) 获得Bucket的acl
* [Put Object ACL](#put-object-acl) 上传object的acl
* [List Objects](#list-objects) 列举Bucket内的Object
* [Put Object](#put-object) 上传Object数据
* [Copy Object](#copy-object)复制Object数据
* [Initiate Multipart Upload](#initiate-multipart-upload) 调用这个接口会初始化一个分块上传
* [Upload Part](#upload-part) 上传分块
* [List Parts](#list-parts) 罗列出已经上传的块
* [Abort Multipart Upload](#abort-multipart-upload) 取消分块上传
* [Complete Multipart Upload](#complete-multipart-upload) 组装所有分块上传的文件
* [Multipart Upload Example Code](#multipart-upload-example-code) 分片上传代码示例
* [音视频使用示例](#音视频使用示例) 代码示例

### Service操作
#### List Buckets:

В запросе идёт речь о том, как добавить заголовок Authorization в запрос. Значение заголовка должно быть подписью, которая формируется по определённому правилу.

Для формирования подписи используется метод HMAC-SHA1. В качестве входных данных для этого метода используются значения параметров HTTP-запроса, которые перечислены в запросе.

Также в запросе есть информация о том, что если дата не участвует в формировании подписи, то используется AuthListener. Если же дата участвует в формировании подписи, то необходимо использовать ServerDateAuthListener. **Список всех Bucket клиента**

**Метод:** public void listBuckets(ListBucketsResponceHandler resultHandler) throws Ks3ClientException,Ks3ServiceException{}

* **Параметры:**
    * resultHandler — интерфейс обратного вызова с методами onSuccess и onFailure. Работает в основном потоке.

**Обратные параметры:**

    * statesCode — код состояния HTTP-запроса. 200 означает успешное выполнение запроса, 403 — ошибку подписи или локальную ошибку даты и времени.
    * responceHeader — заголовки ответа HTTP-запроса.
    * responce — текст ответа при ошибке.
    * throwable — исключение при ошибке.
    * resultList — список Bucket при успешном выполнении.

Пример кода:
```java
client.listBuckets(new ListBucketsResponceHandler() {
    @Override
    public void onSuccess(int statesCode, Header[] responceHeader, ArrayList<Bucket> resultList) {
        // ...
    }

    @Override
    public void onFailure(int statesCode, Header[] responceHeader, String responce, Throwable throwable) {
        // ...
    }
});

Список всех Bucket клиента

Метод: public void listBuckets(ListBucketsRequest request, ListBucketsResponceHandler resultHandler) throws Ks3ClientException, Ks3ServiceException {}

  • Параметры:
    • resultHandler — интерфейс обратного вызова с методами onSuccess и onFailure. Работает в основном потоке.
    • request — объект ListBucketsRequest.

Обратные параметры:

* statesCode — код состояния HTTP-запроса. 200 означает успешное выполнение запроса, 403 — ошибку подписи или локальную ошибку даты и времени.
* responceHeader — заголовки ответа HTTP-запроса.
* responce — текст ответа при ошибке.
* throwable — исключение при ошибке.
* resultList — список Bucket при успешном выполнении.

Пример кода:

client.listBuckets(new ListBucketsRequest(), new ListBucketsResponceHandler() {
    @Override
    public void onSuccess(int statesCode, Header[] responceHeader, ArrayList<Bucket> resultList) {
        // ...
    }

    @Override
    public void onFailure(int statesCode, Header[] responceHeader, String responce, Throwable throwable) {
        // ...
    }
});

Операции с Bucket

Создание Bucket

Создание нового Bucket

Метод: public void createBucket(String bucketName, CreateBucketResponceHandler resultHandler) throw Ks3ClientException,Ks3ServiceException{}

  • Параметры:
    • resultHandler — интерфейс обратного вызова с методами onSuccess и onFailure. Работает в основном потоке.

Обратные параметры:

* statesCode — код состояния HTTP-запроса. 200 означает успешное выполнение запроса, 400 — превышение лимита на количество Bucket или ошибку формата клиентского запроса, 403 — ошибку подписи или локальную ошибку даты и времени, 409 — существование Bucket.
* responceHeader — заголовки ответа HTTP-запроса.
* responce — текст ответа при ошибке.
* throwable — исключение при ошибке, например, если имя Bucket не соответствует требованиям, выбрасывается IllegalArgumentException.

Пример кода:

client.createBucket(Constants.BucketName, new CreateBucketResponceHandler() {
    @Override
    public void onSuccess(int statesCode, Header[] responceHeaders) {
        // ...
    }

    @Override
    public void onFailure(int statesCode, Header[] responceHeaders, String response, Throwable throwable) {
        // ...
    }
});

Создание нового Bucket с AccessControlList для установки прав доступа

Метод: public void createBucket(String bucketName, AccessControlList list, CreateBucketResponceHandler resultHandler) throw Ks3ClientException,Ks3ServiceException{}

  • Параметры:
    • resultHandler — интерфейс обратного вызова с методами onSuccess и onFailure. Работает в основном потоке.
    • bucketName — указанное имя Bucket.
    • list — передаваемый AccessControlList.

Обратные параметры:

* statesCode — код состояния HTTP-запроса. 200 означает успешное выполнение запроса, 400 — ошибку клиентского запроса, 403 — ошибку подписи или локальную ошибку даты и времени, 409 — существование Bucket.
* responceHeader — заголовки ответа HTTP-запроса.
* responce — текст ответа при ошибке.
* throwable — исключение при ошибке, например, если имя Bucket или список не соответствуют требованиям, выбрасывается IllegalArgumentException. **Создание нового Bucket с CannedAccessControlList для установки прав доступа**

onSuccess(int statesCode, Header[] responceHeaders) { }

@Override public void onFailure(int statesCode, Header[] responceHeaders, String response, Throwable throwable) { } });

Создание нового Bucket

public void createBucket(String bucketName, CannedAccessControlList list, CreateBucketResponceHandler resultHandler) throw Ks3ClientException, Ks3ServiceException { }

Параметры:

  • resultHandler: Обработчик обратного вызова, содержащий методы onSuccess и onFailure, которые выполняются в основном потоке.

  • bucketName: Указанное имя Bucket.

  • list: Переданный CannedAccessControlList.

Обратные параметры:

  • statesCode: Код состояния HTTP-запроса, 200 означает успешный запрос, 400 — ошибка клиента, 403 — ошибка подписи или локальная ошибка даты и времени, 409 — Bucket уже существует.
  • responceHeader: Заголовок ответа HTTP-запроса.
  • response: Текст ответа при ошибке.
  • throwable: Исключение при возникновении ошибки (например, несоответствие имени bucketName требованиям, несоответствие списка list спецификации).

Пример кода:

CannedAccessControlList cannedAcl = CannedAccessControlList.PublicReadWrite; client.createBucket(Constants.BucketName, cannedAcl, new CreateBucketResponceHandler() { @Override public void onSuccess(int statesCode, Header[] responceHeaders) { }

@Override
public void onFailure(int statesCode, Header[] responceHeaders, String response, Throwable throwable) {
}

});

Создание нового Bucket

public void createBucket(CreateBucketRequest request, CreateBucketResponceHandler resultHandler) throw Ks3ClientException, Ks3ServiceException { }

Параметры:

  • resultHandler: Обработчик обратного вызова, содержащий методы onSuccess и onFailure, которые выполняются в основном потоке.
  • request: Объект CreateBucketRequest.

Обратные параметры:

  • statesCode: Код состояния HTTP-запроса, 200 означает успешный запрос, 400 — ошибка клиента, 403 — ошибка подписи или локальная ошибка даты и времени, 409 — Bucket уже существует, 204 — успешное выполнение, но ответ пустой.
  • responceHeader: Заголовок ответа HTTP-запроса.
  • response: Текст ответа при ошибке.
  • throwable: Исключения при возникновении ошибок (например, неправильное имя Bucket, IllegalArgumentException).

Пример кода:

client.createBucket(new CreateBucketRequest(Constants.BucketName), new CreateBucketResponceHandler() { @Override public void onSuccess(int statesCode, Header[] responceHeaders) { }

@Override
public void onFailure(int statesCode, Header[] responceHeaders, String response, Throwable throwable) {
}

});

Delete Bucket:

Удаление указанного Bucket

deleteBucket(String bucketname, DeleteBucketResponceHandler handler) throws Ks3ClientException,Ks3ServiceException{ }

Параметры:

  • resultHandler: Обработчик обратного вызова, содержащий методы onSuccess и onFailure, которые выполняются в основном потоке.
  • bucketName: Указывает имя Bucket.

Обратные параметры:

  • statesCode: Код состояния HTTP-запроса, 204 означает успешное выполнение без содержимого, 400 — ошибка клиента, 403 — ошибка подписи или локальная ошибка даты и времени, 404 — удаление несуществующего Bucket, 409 — удаление непустого Bucket.
  • responceHeader: Заголовок ответа HTTP-запроса.
  • response: Текст ответа при ошибке.
  • throwable: Исключения при возникновении ошибок.

Пример кода:

client.deleteBucket(Constants.BucketName, new DeleteBucketResponceHandler() {

@Override
public void onSuccess(int statesCode, Header[] responceHeaders) {
}

@Override
public void onFailure(int statesCode, Header[] responceHeaders, String response, Throwable throwable) {
}

});

Удаление указанного Bucket

deleteBucket(DeleteBucketRequest request, DeleteBucketResponceHandler handler) throws Ks3ClientException,Ks3ServiceException{ }

Параметры:

  • resultHandler: Обработчик обратного вызова, содержащий методы onSuccess и onFailure, которые выполняются в основном потоке.
  • request: Объект DeleteBucketRequest.

Обратные параметры:

  • statesCode: Код состояния HTTP-запроса, 200 — успешный запрос, 200 — успешное выполнение, 400 — ошибка клиента, 403 — ошибка подписи или локальная ошибка даты и времени, 404 — удаление несуществующего Bucket, 409 — удаление непустого Bucket, 204 — успешное выполнение без содержимого.
  • responceHeader: Заголовок ответа HTTP-запроса.
  • response: Текст ответа при ошибке.
  • throwable: Исключения при возникновении ошибок. DeleteBucketRequest (Constants.BucketName),

new DeleteBucketResponceHandler() {

@Override
public void onSuccess(int statesCode,
                      Header[] responceHeaders) {
}

@Override
public void onFailure(int statesCode,
                      Header[] responceHeaders, String response,
                      Throwable throwable) {
}

};

Get Bucket ACL:

Получение ACL корзины

Метод:

public void getBucketACL(String bucketName, GetBucketACLResponceHandler resultHandler) throws Ks3ClientException, Ks3ServiceException{}

Параметры:

  • resultHandler — обработчик обратного вызова, содержащий методы onSuccess и onFailure, которые выполняются в основном потоке.

  • bucketName — имя указанной корзины.

Обратные параметры:

  • statesCode — код состояния HTTP-запроса, 200 означает успешное выполнение запроса, 400 — ошибка клиентского запроса, 403 — ошибка подписи или локальная ошибка даты и времени, 404 — получение ACL несуществующей корзины.

  • responceHeader — заголовки ответа HTTP-запроса.

  • responce — ответное сообщение при ошибке.

  • Throwable — исключение при возникновении ошибки, например, если имя корзины не соответствует требованиям, выбрасывается исключение IllegalArgumentException.

  • accessControlPolicy — модель ACL политики доступа, включая информацию о владельце и контейнер ACL.

Пример кода:

client.getBucketACL(Constants.BucketName, new GetBucketACLResponceHandler() {
    @Override
    public void onSuccess(int statesCode, Header[] responceHeaders, AccessControlPolicy accessControlPolicy) {
        }

    @Override
    public void onFailure(int statesCode, Header[] responceHeaders, String response, Throwable paramThrowable) {
        }
});

Получение ACL корзины

Метод:

public void getBucketACL(GetBucketACLRequest request, GetBucketACLResponceHandler resultHandler) throws Ks3ClientException, Ks3ServiceException{}

Параметры:

  • resultHandler — обработчик обратного вызова, который содержит методы onSuccess и onFailure и выполняется в основном потоке.

  • request — объект GetBucketACLRequest.

Обратные параметры:

  • statesCode — код состояния HTTP-запроса, 200 означает успешное выполнение запроса, 400 — ошибка клиентского запроса, 403 — ошибка подписи или локальная ошибка даты и времени, 404 — получение ACL несуществующей корзины.

  • responceHeader — заголовки ответа HTTP-запроса.

  • responce — ответное сообщение при ошибке.

  • Throwable — исключение при возникновении ошибки, например, если имя корзины не соответствует требованиям, выбрасывается исключение IllegalArgumentException.

  • accessControlPolicy — модель ACL политики доступа, включая информацию о владельце и контейнер ACL.

Пример кода:

client.getBucketACL(new GetBucketACLRequest(Constants.BucketName), new GetBucketACLResponceHandler() {
    @Override
    public void onSuccess(int statesCode, Header[] responceHeaders, AccessControlPolicy accessControlPolicy) {
        }

    @Override
    public void onFailure(int statesCode, Header[] responceHeaders, String response, Throwable paramThrowable) {
        }
});

Установка ACL корзины

Установка ACL корзины в виде AccessControlList.

Метод:

public void putBucketACL(String bucketName, AccessControlList accessControlList, PutBucketACLResponseHandler resultHandler) throws Ks3ClientException,Ks3ServiceException{}

Параметры:

  • resultHandler — обработчик обратного вызова, включающий методы onSuccess и onFailure, выполняемые в основном потоке.

  • запрос — класс запроса для загрузки, необходимо добавить контейнер ACL для загрузки.

  • accessControlList — переданный объект AccessControlList.

Обратные параметры:

  • statesCode — код состояния HTTP-запроса, 200 означает успешное выполнение запроса, но исходный ACL будет очищен и сохранён только текущий, 400 — ошибка клиентского запроса, 403 — ошибка подписи или локальная ошибка даты и времени, 404 — установка ACL для несуществующей корзины.

  • responceHeader — заголовки ответа HTTP-запроса.

  • responce — сообщение об ошибке при неудачном выполнении.

  • Throwable — исключение, возникающее при ошибке, например, при попытке установить пустой ACL для существующей корзины, проверка параметров вызовет исключение, которое также вызовет исключение IllegalArgumentException.

Пример кода:

AccessControlList acl = new AccessControlList();
GranteeId grantee = new GranteeId();
grantee.setIdentifier("12773456");
grantee.setDisplayName("guoliTest222");
acl.addGrant(grantee, Permission.Read);

client.putBucketACL(bucketName, acl, new PutBucketACLResponseHandler() {
    @Override
    public void onSuccess(int statesCode, Header[] responceHeaders) {
        }

    @Override
    public void onFailure(int statesCode, Header[] responceHeaders,
            String response, Throwable paramThrowable) {
        }
});

Установка ACL корзины в виде CannedAccessControlList. Параметры:

  • resultHandler: интерфейс обратного вызова, содержащий методы onSuccess и onFailure, выполняется в основном потоке.
  • request: класс запроса, необходимо добавить контейнер ACL для загрузки.

Параметры обратного вызова:

  • statesCode: код состояния HTTP-запроса, 200 означает успешное выполнение запроса, но существующее разрешение ACL будет очищено, останется только текущее разрешение, 400 — ошибка клиентского запроса, 403 — ошибка подписи или ошибка локального времени и даты, 404 — установка ACL для несуществующего Bucket.
  • responceHeader: заголовок ответа HTTP-запроса.
  • response: текст ответа при ошибке.
  • Throwable: исключение при возникновении ошибки, IllegalArgumentException выбрасывается при попытке установить пустой ACL для существующего Bucket или при проверке параметров.

Пример кода:

CannedAccessControlList cannedAcl = CannedAccessControlList.PublicReadWrite;
client.putBucketACL(bucketName, cannedAcl, new PutBucketACLResponseHandler() {
    @Override
    public void onSuccess(int statesCode, Header[] responceHeaders) {
        }

    @Override
    public void onFailure(int statesCode, Header[] responceHeaders,
            String response, Throwable paramThrowable) {
        }
});

Установка ACL для Bucket

Метод: public void putBucketACL(PutBucketACLRequest requset, PutBucketACLResponseHandler resultHandler) throws Ks3ClientException, Ks3ServiceException.

Параметры:

  • resultHandler: интерфейс обратного вызова, содержит методы onSuccess и onFailure, работает в основном потоке.
  • request: класс запроса, требуется добавить контейнер ACL для загрузки.

Параметры обратного вызова:

  • statesCode: код состояния HTTP-ответа, 200 указывает на успешное выполнение, но существующий ACL будет очищен, останется только текущий, 400 — ошибка запроса клиента, 403 — ошибка подписи или локальная ошибка времени и даты, 404 — попытка установить ACL для несуществующего Bucket.
  • responceHeader: заголовок HTTP-ответа.
  • response: ответ при ошибке.
  • Throwable: исключение, выброшенное при ошибке, IllegalArgumentException возникает при попытке установить пустой ACL для существующего Bucket или при проверке параметров.

Пример кода:

client.putBucketACL(new PutBucketACLRequest(bucketName,cannedAcl), new PutBucketACLResponseHandler() {
    @Override
    public void onSuccess(int statesCode, Header[] responceHeaders) {
        }

    @Override
    public void onFailure(int statesCode, Header[] responceHeaders,
            String response, Throwable paramThrowable) {
        }
});

Head Bucket:

Проверка существования указанного Bucket

Метод: public void headBucket(String bucketname, HeadBucketResponseHandler resultHandler) throws Ks3ClientException, Ks3ServiceException.

Параметры:

  • resultHandler: интерфейс обратного вызова, содержит методы onSuccess и onFailure, работает в основном потоке.
  • bucketname: имя указанного Bucket.

Параметры обратного вызова:

  • statesCode: код состояния HTTP-ответа, 200 указывает на успешное выполнение, 400 — ошибка запроса клиента, 403 — ошибка подписи или локальная ошибка времени и даты, 404 — запрос для несуществующего Bucket.
  • responceHeader: заголовок HTTP-ответа.
  • response: ответ при ошибке.
  • Throwable: исключение, выброшенное при ошибке, IllegalArgumentException возникает, если имя Bucket не соответствует требованиям.

Пример кода:

client.headBucket(Constants.BucketName,
        new HeadBucketResponseHandler() {

            @Override
            public void onSuccess(int statesCode,
                    Header[] responceHeaders) {
            }

            @Override
            public void onFailure(int statesCode,
                    Header[] responceHeaders, String response,
                    Throwable paramThrowable) {
            }
    });

Проверка существования указанного Bucket

Метод: public void headBucket(HeadBucketRequest request, HeadBucketResponseHandler resultHandler) throws Ks3ClientException, Ks3ServiceException.

Параметры:

  • resultHandler: интерфейс обратного вызова, содержит методы onSuccess и onFailure, работает в основном потоке.
  • request: объект HeadBucketRequest.

Параметры обратного вызова:

  • statesCode: код состояния HTTP-ответа, 200 указывает на успешное выполнение, 400 — ошибка запроса клиента, 403 — ошибка подписи или локальная ошибка времени и даты, 404 — запрос для несуществующего Bucket.
  • responceHeader: заголовок HTTP-ответа.
  • response: ответ при ошибке.
  • Throwable: исключение, выброшенное при ошибке, IllegalArgumentException возникает, если имя Bucket не соответствует требованиям.

Пример кода:

client.headBucket(new HeadBucketRequestConstants.BucketName,
        new HeadBucketResponseHandler() {

            @Override
            public void onSuccess(int statesCode,
                    Header[] responceHeaders) {
            }

            @Override
            public void onFailure(int statesCode,
                    Header[] responceHeaders, String response,
                    Throwable paramThrowable) {
            }
    });
``` **putBucketCrr**

*Параметры:*
 resultHandler: интерфейс обратного вызова, содержащий методы onSuccess и onFailure, выполняется в основном потоке.
 bucketname: имя указанного сегмента.

**Параметры обратного вызова:**
 statesCode: код состояния HTTP-запроса, 200  запрос выполнен успешно, 400  ошибка клиентского запроса, 403  ошибка подписи или локальная ошибка даты и времени, 404  запрос несуществующего сегмента.
 responceHeader: заголовок ответа HTTP-запроса.
 responce: текст ответа при ошибке.
 Throwable: исключение при возникновении ошибки, например, если имя сегмента не соответствует требованиям, выбрасывается IllegalArgumentException.

**Пример кода:**
```java
        client.putBucketCrr(Constants.BucketName,
                new PutBucketReplicationResponceHandler() {

                    @Override
                    public void onSuccess(int statesCode,
                            Header[] responceHeaders) {
                    }

                    @Override
                    public void onFailure(int statesCode,
                            Header[] responceHeaders, String response,
                            Throwable paramThrowable) {
                    }
                }
        );

getBucketCrr

Метод: public void getBucketCrr (GetBucketReplicationConfigRequest request, GetBucketReplicationConfigResponceHandler resultHandler) throws Ks3ClientException, Ks3ServiceException.

Параметры: — resultHandler: интерфейс обратного вызова, содержит методы onSuccess и onFailure, работает в основном потоке. — request: объект GetBucketReplicationConfigRequest.

Параметры обратного вызова: — statesCode: код состояния HTTP-запроса, 200 — запрос выполнен успешно, 400 — ошибка клиентского запроса, 403 — ошибка подписи или локальная ошибка даты и времени, 404 — запрос несуществующего сегмента. — responceHeader: заголовок HTTP-ответа. — replicationRule: правило межрегиональной репликации. — paramThrowable: исключение при возникновении ошибки, например, если имя сегмента не соответствует требованиям, выбрасывается IllegalArgumentException.

Пример кода:

        client.getBucketCrr(new GetBucketReplicationConfigRequestConstants.BucketName,
                new GetBucketReplicationConfigResponceHandler() {

                    @Override
            public void onSuccess(int statesCode, Header[] responceHeaders, ReplicationRule replicationRule) {
                Log.e("tag", "getBucketCRR--onSuccess---" + "statesCode:" + statesCode);
            }

                    @Override
                    public void onFailure(int statesCode,
                            Header[] responceHeaders, String response,
                            Throwable paramThrowable) {
                    }
                }
        );

putBucketQuota

Метод: public void putBucketQuota (PutBuckeQuotaRequest request, Ks3HttpResponceHandler resultHandler) throws Ks3ClientException, Ks3ServiceException.

Параметры: — resultHandler: интерфейс обратного вызова, содержит методы onSuccess и onFailure, работает в основном потоке. — request: объект PutBuckeQuotaRequest.

Параметры обратного вызова: — statesCode: код состояния HTTP-запроса, 200 — запрос выполнен успешно, 400 — ошибка клиентского запроса, 403 — ошибка подписи или локальная ошибка даты и времени, 404 — запрос несуществующего сегмента. — responceHeader: заголовок HTTP-ответа. — response: тело ответа. — paramThrowable: исключение при возникновении ошибки, например, если имя сегмента не соответствует требованиям, выбрасывается IllegalArgumentException.

Пример кода:

            BucketQuota quota = new BucketQuota(1000000);

        PutBuckeQuotaRequest quotaRequest = new PutBukkeQuotaRequest(Constants.BucketName, quota);

        client.putBucketQuota(quotaRequest, new Ks3HttpResponceHandler() {
            @Override
            public void onSuccess(int statesCode, Header[] responceHeaders, byte[] response) {
                System.out.println("onSuccess "+ new String(response));
            }

            @Override
            public void onFailure(int statesCode, Header[] responceHeaders, byte[] response, Throwable throwable) {
                Log.e("tag", "putBucketQuota--onFailure:" + stringBuffer.toString());
            }
        });

getBucketQuota

Метод: public void getBucketQuota (GetBucketQuotaRequest request, GetBucketQuotaResponceHandler resultHandler) throws Ks3ClientException, Ks3ServiceException.

Параметры: — resultHandler: интерфейс обратного вызова, содержит методы onSuccess и onFailure, работает в основном потоке. — request: объект GetBucketQuotaRequest.

Параметры обратного вызова: — statesCode: код состояния HTTP-запроса, 200 — запрос выполнен успешно, 400 — ошибка клиентского запроса, 403 — ошибка подписи или локальная ошибка даты и времени, 404 — запрос несуществующего сегмента. — responceHeader: заголовок HTTP-ответа. — quota: объект BucketQuota. — paramThrowable: исключение при возникновении ошибки, например, если имя сегмента не соответствует требованиям, выбрасывается IllegalArgumentException.

Пример кода:

         GetBucketQuotaRequest quotaRequest = new

``` **GetBucketQuotaRequest(Constants.BucketName);**

client.getBucketQuota(quotaRequest, new GetBucketQuotaResponceHandler() {
    @Override
    public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
        Log.e("tag", "getBucketQuota--onFailure:" + stringBuffer.toString());
    }

    @Override
    public void onSuccess(int statesCode, Header[] responceHeaders, BucketQuota quota) {
        System.out.println("onSuccess storageQuota  is " + quota.getStorageQuota());
    }
});

**Delete Bucket QUOTA:**

* *Метод:* public void deleteBucketQuota (DeleteBucketQuotaRequest request,Ks3HttpResponceHandler resultHandler) throws Ks3ClientException,Ks3ServiceException.

* *Параметры:*
    * resultHandler * обратный интерфейс, содержит методы onSuccess и onFailure, работает в основном потоке;
    * request * DeleteBucketQuotaRequest.

* *Обратные параметры:*
    * statesCode * код состояния HTTP-запроса, 200 означает успешный запрос, 400  ошибка клиентского запроса, 403  ошибка подписи или локальная ошибка даты и времени, 404  запрос несуществующего Bucket;
    * responceHeader * заголовки ответа HTTP-запроса;
    * response * тело ответа;
    * paramThrowable * исключение при ошибке, например, если имя Bucket не соответствует требованиям, выбрасывается IllegalArgumentException.

* *Пример кода:*

```java
DeleteBucketQuotaRequest quotaRequest = new DeleteBucketQuotaRequest (Constants.BucketName);
client.deleteBucketQuota (quotaRequest, new Ks3HttpResponceHandler () {
    @Override
    public void onFailure (int statesCode, Ks3Error error, Header [] responceHeaders, String response, Throwable paramThrowable) {
        Log. e ("tag", "getBucketQuota -- onFailure:" + stringBuffer. toString ());
    }

    @Override
    public void onSuccess (int statesCode, Header [] responceHeaders, BucketQuota quota) {
        System. out. println ("onSuccess storageQuota is" + quota. getStorageQuota ());
    }
});

Put Bucket POLICY:

  • Метод: public void putBucketPolicy (PutBuckePolicyRequest request, Ks3HttpResponceHandler resultHandler) throws Ks3ClientException, Ks3ServiceException.

  • Параметры:

    • resultHandler —* обратный интерфейс, содержит методы onSuccess и onFailure, работает в основном потоке;
    • request —* PutBuckePolicyRequest;
    • policyRule —* BucketPolicyRule.
  • Обратные параметры:

    • statesCode —* код состояния HTTP-запроса, 200 означает успешный запрос, 400 — ошибка клиентского запроса, 403 — ошибка подписи или локальная ошибка даты и времени, 404 — запрос несуществующего Bucket;
    • responceHeader —* заголовки ответа HTTP-запроса;
    • response —* тело ответа;
    • paramThrowable —* исключение при ошибке, например, если имя Bucket не соответствует требованиям, выбрасывается IllegalArgumentException.
  • Пример кода:

BucketPolicyRule policyRule = new BucketPolicyRule ()
    . addAllAction ()
    . addPrincipalByAccountId ("AccountId")
    . addPrincipalByAccountIdAndUserName ("123123", "123123")
    . addBucketResource (Constants. BucketName)
    . addConditionSouceIp ("11.11.11.11", true)
    . addSourceHeader ("Connection: keep-alivE", BucketPolicyConditionRule. StringLike)
    . addSourceHeader ("Connection: keep-alivE123", BucketPolicyConditionRule. StringEquals)
    . setEffect ("Allow");

PutBuckePolicyRequest putBuckePolicyRequest = new PutBuckePolicyRequest (Constants. BucketName), policyRule);
client.putBucketPolicy (putBuckePolicyRequest, new Ks3HttpResponceHandler () {
    @Override
    public void onSuccess (int statesCode, Header [] responceHeaders, byte [] response) {
    }

    @Override
    public void onFailure (int statesCode, Header [] responceHeaders, byte [] response, Throwable throwable) {
    }
});

Get Bucket POLICY:

  • Метод: public void getBucketPolicy (GetBucketPolicyRequest request, GetBucketPolicyResponceHandler resultHandler) throws Ks3ClientException, Ks3ServiceException.

  • Параметры:

    • resultHandler —* обратный интерфейс, содержит методы onSuccess и onFailure, работает в основном потоке;
    • request —* GetBucketPolicyRequest.
  • Обратные параметры:

    • statesCode —* код состояния HTTP-запроса, 200 означает успешный запрос, 400 — ошибка клиентского запроса, 403 — ошибка подписи или локальная ошибка даты и времени, 404 — запрос несуществующего Bucket;
    • responceHeader —* заголовки ответа HTTP-запроса;
    • policy —* String;
    • paramThrowable —* исключение при ошибке, например, если имя Bucket не соответствует требованиям, выбрасывается IllegalArgumentException.
  • Пример кода:

GetBucketPolicyRequest request = new
``` **statesCode**: код состояния HTTP-запроса, 200 означает успешное выполнение запроса, 400  ошибку клиентского запроса, 403  ошибку подписи или локальную ошибку даты и времени, 404  отсутствие указанного Bucket или Object.

**responceHeader**: заголовок ответа HTTP-запроса.

**responce**: текст ответа при ошибке.

**throwable**: исключение при возникновении ошибки.

**file**: файл, в который записываются данные после успешного выполнения.

**object**: объект Ks3Object после успешного выполнения запроса.

* *Пример кода:*
```java
client.getObject(new GetObjectRequest(bucketname, key),
    new GetObjectResponceHandler(new File(Environment
        .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
        Constants.ObjectKey), Constants.BucketName,
        Constants.ObjectKey) {

    @Override
    public void onTaskSuccess(int statesCode, Header[] responceHeaders) {   
    }

    @Override
    public void onTaskFailure(int statesCode, Header[] responceHeaders,
            String response, Throwable throwable) {
    }

    @Override
    public  void onTaskFinish(){
    
    }

    @Override
    public  void onTaskStart(){
    
    }

    @Override
    public  void onTaskProgress(double progress){
    //Запуск в не-UI потоке, обновление UI требует внимания
    //Прогресс от 0 до 100, тип double
    }
});

Head Object:

Проверка существования указанного объекта

Метод:

public void headObject(String bucketname, String objectkey, HeadObjectResponseHandler resultHandler) throws Ks3ClientException, Ks3ServiceException;

Параметры:

  • resultHandler: интерфейс обратного вызова с методами onSuccess и onFailure, выполняется в основном потоке.
  • bucketname: имя указанного Bucket.
  • objectKey: ключ указанного Object.

Обратные параметры:

  • statesCode: код состояния HTTP-запроса (200 — успех, 400 — ошибка клиентского запроса, 403 — ошибка подписи или локальная ошибка даты и времени, 404 — указанный Bucket или Object не существует).
  • headObjectResult: класс, содержащий метаданные объекта, Etag и время последнего изменения.
  • responceHeader: заголовок ответа HTTP-запроса.
  • responce: текст ответа при ошибке.
  • throwable: исключение при возникновении ошибки (например, если имя Bucket не соответствует требованиям, выбрасывается IllegalArgumentException).

Пример кода:

client.headObject(Constants.BucketName, Constants.ObjectKey,
    new HeadObjectResponseHandler() {

    @Override
    public void onSuccess(int statesCode,
            Header[] responceHeaders,
            HeadObjectResult headObjectResult) {
    }

    @Override
    public void onFailure(int statesCode,
            Header[] responceHeaders, String response,
            Throwable throwable) {
    }
});

Delete Object:

Удаление указанного объекта

Метод:

public void deleteObject(String bucketname, String objectKey , DeleteObjectRequestHandler handler) throws Ks3ClientException, Ks3ServiceException{}

Параметры:

В запросе не указано, какие именно параметры передаются методу. resultHandler: обратный интерфейс, содержащий методы onSuccess и onFailure, которые выполняются в основном потоке.

  • bucketname: указанное имя Bucket.
  • objectKey: указанный ключ Object.

Параметры обратного вызова:

  • statesCode: код состояния HTTP-запроса, 204 означает успех, но возвращаемое содержимое пусто, 400 означает ошибку клиентского запроса, 403 означает ошибку подписи или ошибку местного времени и даты, 404 означает удаление несуществующего Bucket или Object.
  • responceHeader: заголовок ответа HTTP-запроса.
  • responce: ответное сообщение при ошибке.
  • Throwable: исключение при возникновении ошибки, например, если имя Bucket не соответствует требованиям, выбрасывается IllegalArgumentException.

Код примера:

client.deleteObject(Constants.BucketName, Constants.ObjectKey, new DeleteObjectRequestHandler() {
    @Override
    public void onSuccess(int statesCode, Header[] responceHeaders) {
        // ...
    }

    @Override
    public void onFailure(int statesCode, Header[] responceHeaders, String response, Throwable throwable) {
        // ...
    }});

Удаление указанного объекта

Метод: public void deleteObject(DeleteObjectRequest request, DeleteObjectRequestHandler handler) throws Ks3ClientException, Ks3ServiceException{}.

Параметры:

  • resultHandler: обратный интерфейс, который содержит методы onSuccess и onFailure и выполняется в основном потоке.
  • bucketname: указанное имя Bucket.
  • request: объект DeleteObjectRequest.

Параметры обратного вызова:

  • statesCode: код состояния HTTP-запроса, 200 означает успех, 400 — ошибку клиентского запроса, 403 — ошибку подписи или местного времени и даты, 404 — удаление несуществующего Bucket, 204 — успех, но содержимое пусто.
  • responceHeader: заголовок ответа HTTP-запроса.
  • responce: ответное сообщение при ошибке.
  • Throwable: исключение при возникновении ошибки, например, если имя Bucket не соответствует требованиям, выбрасывается IllegalArgumentException.

Пример кода:

client.deleteObject(new DeleteObjectRequest(Constants.BucketName, Constants.ObjectKey), new DeleteObjectRequestHandler() {
    @Override
    public void onSuccess(int statesCode, Header[] responceHeaders) {
        // ...
    }

    @Override
    public void onFailure(int statesCode, Header[] responceHeaders, String response, Throwable throwable) {
        // ...
}});

Get Object ACL:

Получение ACL объекта.

Метод: public void getObjectACL(String bucketName, String objectName, GetObjectACLResponseHandler resultHandler)throws Ks3ClientException, Ks3ServiceException{}

Параметры:

  • resultHandler: обратный интерфейс, который содержит методы onSuccess и onFailure и выполняется в основном потоке.
  • bucketname: указанное имя Bucket.
  • objectKey: указанный ключ Object.

Параметры обратного вызова:

  • statesCode: код состояния HTTP-запроса, 200 означает успех, 400 — ошибку клиентского запроса, 403 — ошибку подписи или местного времени и даты, 404 — получение ACL несуществующего объекта.
  • responceHeader: заголовок ответа HTTP-запроса.
  • responce: ответное сообщение при ошибке.
  • Throwable: исключение при возникновении ошибки, например, если имя Bucket не соответствует требованиям, выбрасывается IllegalArgumentException.
  • accessControlPolicy: модель ACL политики, включая информацию о владельце и контейнер ACL.

Пример кода:

client.getObjectACL(Constants.BucketName, Constants.ObjectKey,
                new GetObjectACLResponseHandler() {

                    @Override
                    public void onSuccess(int statesCode,
                            Header[] responceHeaders,
                            AccessControlPolicy accessControlPolicy) {
                        // ...
                    }

                    @Override
                    public void onFailure(int statesCode,
                            Header[] responceHeaders, String response,
                            Throwable paramThrowable) {
                        // ...
                }
            });

Получение ACL объекта.

Метод: public void getObjectACL(GetObjectACLRequest request, GetObjectACLResponseHandler resultHandler)throws Ks3ClientException, Ks3ServiceException{}

Параметры:

  • resultHandler: обратный интерфейс, который содержит методы onSuccess и onFailure и выполняется в основном потоке.
  • request: объект GetObjectACLRequest.

Параметры обратного вызова:

  • statesCode: код состояния HTTP-запроса, 200 означает успех, 400 — ошибку клиентского запроса, 403 — ошибку подписи или местного времени и даты, 404 — получение ACL несуществующего объекта.
  • responceHeader: заголовок ответа HTTP-запроса.
  • responce: ответное сообщение при ошибке.
  • Throwable: исключение при возникновении ошибки, например, если имя Bucket не соответствует требованиям, выбрасывается IllegalArgumentException.
  • accessControlPolicy: модель ACL политики, включая информацию о владельце и контейнер ACL.

Пример кода:

client.getObjectACL(new GetObjectACLRequest(Constants.BucketName, Constants.ObjectKey),
                new GetObjectACLResponseHandler() {

                    @Override
                    public void onSuccess(int statesCode,
                            Header[] responceHeaders,
                            AccessControlPolicy accessControlPolicy) {
                        // ...
                    }

                    @Override
                    public void onFailure(int statesCode,

``` Заголовок: **Методы для работы с ACL в Amazon S3**.

Текст описывает три метода работы с Access Control List (ACL) в Amazon Simple Storage Service (S3): putObjectACL. Эти методы позволяют устанавливать права доступа к объектам в корзине S3.

В запросе приведены описания трёх методов putObjectACL, которые принимают разные параметры и имеют немного отличающиеся сигнатуры. Методы устанавливают права доступа к объекту в корзине Amazon S3. 

**Первый метод** принимает три параметра: bucketName, objectKey и CannedAccessControlList list. Также он использует параметр resultHandler  это обработчик ответа, который содержит два метода: onSuccess и onFailure. Метод выполняется в основном потоке.

**Второй метод** также устанавливает права доступа к объекту, но принимает другие параметры: bucketName, objectName и AccessControlList list, а также resultHandler.

**Третий метод** позволяет установить права доступа к объекту с помощью объекта PutObjectACLRequest. Этот метод также принимает параметр resultHandler и выполняется в главном потоке. **Поместить объект: загрузить данные объекта**

**Метод:**
public Ks3HttpRequest PutObject(String bucketname, String objectkey, File file, PutObjectResponseHandler handler) throws Ks3ClientException,

*bucketname*  имя корзины;
*objectkey*  ключ объекта;
*file*  файл;
*handler*  обработчик ответа на операцию помещения объекта.

**Описание параметров:**
* *handler*  интерфейс обратного вызова, который содержит два метода обратного вызова: onSuccess и onFailure. Они выполняются в основном потоке.
* *bucketname*  указывает имя корзины.
* *objectkey*  определяет ключ объекта.
* *file*  загружаемый файл.

**Обратные параметры:**
* *statesCode*  код состояния HTTP-запроса. Значение 200 означает успешное выполнение запроса, 400  ошибку клиента, 403  ошибку подписи или локальную ошибку даты и времени, 404  отсутствие корзины.
* *responceHeader*  заголовки HTTP-ответа.
* *response*  текст ответа при ошибке.
* *throwable*  исключение при ошибке. **Параметры:**
* resultHandler: интерфейс обратного вызова, содержащий методы onSuccess и onFailure, выполняется в основном потоке.
* bucketname: указанное имя Bucket.
* objectKey: указанный ключ Object.
* file: файл, который необходимо загрузить.

**Параметры обратного вызова:**
* statesCode: код состояния HTTP-запроса, 200 означает успешное выполнение запроса, 400  ошибку клиентского запроса, 403  ошибку подписи или локальную ошибку даты и времени.
* responceHeader: заголовок ответа HTTP-запроса.
* responce: текст ответа при ошибке.
* throwable: исключение при возникновении ошибки.

**Пример кода:**
```java
client.PutObject(bucketname, objectkey, file, new PutObjectResponseHandler() {
    @Override
    public void onTaskSuccess(int statesCode, Header[] responceHeaders) {   
    }
    
    @Override
    public void onTaskFailure(int statesCode, Header[] responceHeaders,
            String response, Throwable throwable) {
    }

    @Override
    public  void onTaskFinish(){
    
    }

    @Override
    public  void onTaskStart(){
    
    }
    
    @Override
    public void onTaskProgress(double progress){
        //выполняется в не-UI потоке, при обновлении UI следует обратить внимание
        //Progress принимает значения от 0 до 100
    }
});

Загрузка данных объекта

Метод: public Ks3HttpRequest PutObject(PutObjectRequest request, PutObjectResponseHandler handler) throws Ks3ClientException, Ks3ServiceException;

Параметры:

  • resultHandler: интерфейс обратного вызова, содержит методы onSuccess и onFailure, работает в основном потоке.
  • request: объект PutObjectRequest.

Параметры обратного вызова:

  • statesCode: код состояния HTTP-запроса, 200 означает успешное выполнение запроса, 400 — ошибку клиентского запроса, 403 — ошибку подписи или локальную ошибку даты и времени.
  • responceHeader: заголовок ответа HTTP-запроса.
  • responce: текст ответа при ошибке.
  • throwable: исключение при возникновении ошибки.

Пример кода:

client.PutObject(new PutObjectRequest(bucketname, objectkey, file), new PutObjectResponseHandler() {
    @Override
    public void onTaskSuccess(int statesCode, Header[] responceHeaders) {   
    }
    
    @Override
    public void onTaskFailure(int statesCode, Header[] responceHeaders,
            String response, Throwable throwable) {
    }

    @Override
    public  void onTaskFinish(){
    
    }

    @Override
    public  void onTaskStart(){
    
    }
    
    @Override
    public void onTaskProgress(double progress){
        //выполняется в не-UI потоке, при обновлении UI следует обратить внимание
        //Progress принимает значения от 0 до 100
    }
});

Копирование объекта:

Копирование объекта

Метод: public void copyObject(String destinationBucket, String destinationObject,String sourceBucket, String sourceKey, CopyObjectResponseHandler resultHandler) throws Ks3ClientException,Ks3ServiceException {}

Параметры:

  • resultHandler: интерфейс обратного вызова, содержит методы onSuccess и onFailure, работает в основном потоке.
  • destinationBucket: в этот Bucket будет выполнено копирование.
  • destinationObject: ключ Object после копирования в указанный Bucket.
  • sourceBucket: имя исходного Bucket.
  • sourceKey: исходный ключ Object.

Параметры обратного вызова:

  • statesCode: код состояния HTTP-запроса, 200 означает успешное выполнение запроса, 400 — ошибку клиентского запроса, 403 — ошибку подписи или локальную ошибку даты и времени.
  • responceHeader: заголовок ответа HTTP-запроса.
  • responce: текст ответа при ошибке.
  • throwable: исключение при возникновении ошибки.
  • result: информация о результате успешного выполнения, возвращается в виде сущности класса.

Пример кода:

client.copyObject("ks3-sdk-test", "object-source", "eflake", "object-copy", new CopyObjectResponseHandler() {
    
    @Override
    public void onSuccess(int statesCode, Header[] responceHeaders,
            CopyResult result) {
        
    }
    
    @Override
    public void onFailure(int statesCode, Header[] responceHeaders,
            String response, Throwable throwable) {
        
    }
});
``` **Инициализация многокомпонентной загрузки:**

*Вызов этого интерфейса инициирует многокомпонентную загрузку. Сервер KS3 возвращает идентификатор загрузки (upload id), который используется для идентификации конкретных блоков, связанных с текущим объектом, а также для обозначения завершения или отмены многокомпонентной загрузки.*

**Метод:**
public void initiateMultipartUpload(String bucketname, String objectkey, InitiateMultipartUploadResponceHandler resultHandler) throws Ks3ClientException, Ks3ServiceException;

**Параметры:**
* resultHandler  интерфейс обратного вызова, включающий методы onSuccess и onFailure, которые выполняются в основном потоке;
* bucketname  указанное имя корзины;
* objectKey  указанный ключ объекта.

**Обратные параметры:**
* statesCode  код состояния HTTP-запроса: 200  запрос выполнен успешно, 400  ошибка клиентского запроса, 403  ошибка подписи или локальная ошибка даты и времени;
* responceHeader  заголовки ответа HTTP-запроса;
* responce  текст ответа при ошибке;
* result  объект результата успешной инициализации многокомпонентной загрузки, содержащий информацию об uploadId и т. д.

**Пример кода:**
```java
``` **Throwable**: исключение, которое возникает при ошибке.  

* **Result**: успешное возвращение сущности класса UploadPartResult, которая содержит информацию о номере части (partNumber) и Etag.

**Пример кода:**
```java
client.uploadPart(new UploadPartRequest(bucketName, key, uploadId, file, offset, partNumber++, partsize), new UploadPartResponceHandler() {
    @Override
    public void onSuccess(int statesCode, Header[] responceHeaders, UploadPartResult result) {
        Log.d("eflake", "upload part success , partnumber = " + result.getPartNumber() + ",etag = " + result.getETag());
    }

    @Override
    public void onFailure(int statesCode,Header[] responceHeaders, String response, Throwable throwable) {
        Log.d("eflake","upload part failed ,responce = "
                + response);
    }
});

List Parts:

Перечисление уже загруженных блоков.

Имя метода:

public void ListParts(String bucketname, String objectkey, String uploadId, ListPartsResponseHandler handler) throws Ks3ClientException, Ks3ServiceException{}

Описание параметров:

  • resultHandler: интерфейс обратного вызова, который включает методы onSuccess и onFailure, работающие в основном потоке.
  • request: класс запроса, содержащий информацию об uploadId, файле для загрузки и его смещении и размере.
  • bucketname: указанное имя Bucket.
  • objectKey: указанный ключ объекта.
  • uploadId: полученный во время инициализации uploadId.

Параметры обратного вызова:

  • statesCode: код состояния HTTP-запроса, 200 означает успешный запрос, 400 — ошибку клиента, 403 — ошибку подписи или локальную ошибку даты и времени.
  • responceHeader: заголовки ответа HTTP-запроса.
  • responce: ответное сообщение при сбое.
  • throwable: исключение, возникающее при ошибке.
  • result: успешное возвращение результата ListPartsResult, содержащего информацию о владельце и контейнере Parts.

Пример кода:


client.ListParts(bucketName, objectKey, uploadId, new ListPartsResponseHandler() {
    @Override
    public void onSuccess(int statesCode, Header[] responceHeaders, ListPartsResult listPartsResult) {
        Log.d("eflake", "listPart success :" + listPartsResult.toString());
        mLastListPartResul = listPartsResult;
        int mLastSize = listPartsResult.getParts().size();
}

Перечисление уже загруженных блоков.

Имя метода:

public void ListParts(String bucketname, String objectkey, String uploadId, int maxParts, ListPartsResponseHandler handler) throws Ks3ClientException, Ks3ServiceException{}

Описание параметров:

  • resultHandler: интерфейс обратного вызова, который включает методы onSuccess и onFailure, работающие в основном потоке.
  • request: класс запроса, содержащий информацию об uploadId, файле для загрузки и его смещении и размере.
  • bucketname: указанное имя Bucket.
  • objectKey: указанный ключ объекта.
  • uploadId: полученный во время инициализации uploadId.
  • maxParts: ограничение на размер возвращаемых блоков.

Параметры обратного вызова:

  • statesCode: код состояния HTTP-запроса, 200 означает успешный запрос, 400 — ошибку клиента, 403 — ошибку подписи или локальную ошибку даты и времени.
  • responceHeader: заголовки ответа HTTP-запроса.
  • responce: ответное сообщение при сбое.
  • throwable: исключение, возникающее при ошибке.
  • result: успешное возвращение результата ListPartsResult, содержащего информацию о владельце и контейнере Parts. Запрос на прерывание многокомпонентной загрузки:

AbortMultipartUploadRequest (bucketname, objectkey, uploadId), новый AbortMultipartUploadResponseHandler() {

@Override
public void onSuccess(int statesCode, Header[] responceHeaders) {
}

@Override
public void onFailure(int statesCode, Header[] responceHeaders, String response, Throwable paramThrowable) {
}

});

Завершение многокомпонентной загрузки:

Группировка ранее загруженных блоков и завершение многокомпонентной загрузки. Используйте предоставленный XML-файл для группировки блоков. В XML-файле блоки должны быть отсортированы по возрастанию номеров. Необходимо предоставить значение ETag для каждого блока.

Имя метода:

public void completeMultipartUpload(String bucketname, String objectkey, String uploadId, List partETags, CompleteMultipartUploadResponseHandler handler) throws Ks3ClientException, Ks3ServiceException{}

Описание параметров:

  • resultHandler: интерфейс обратного вызова, содержащий методы onSuccess и onFailure, которые выполняются в основном потоке.
  • request: класс запроса, который должен содержать uploadId, информацию о файле для загрузки и его смещение и размер.
  • bucketname: указанное имя корзины.
  • objectKey: указанный ключ объекта.
  • uploadId: идентификатор загрузки, полученный при инициализации.
  • partETags: контейнер PartEtag, представляющий собой сущность класса PartNumber и значения ETag, возвращаемого сервером после успешного выполнения UploadPart.

Параметры обратного вызова:

  • statesCode: код состояния HTTP-запроса, 200 означает успешный запрос, 400 — ошибку клиента, 403 — ошибку подписи или локальную ошибку даты и времени.
  • responceHeader: заголовки ответа HTTP-запроса.
  • responce: ответное сообщение об ошибке.
  • throwable: исключение, вызванное ошибкой.
  • result: объект результата при успешном выполнении.

Пример кода:


client.completeMultipartUpload(
        new CompleteMultipartUploadRequest(
                mLastListPartResul),
        new CompleteMultipartUploadResponseHandler() {

            @Override
            public void onSuccess(int statesCode,
                    Header[] responceHeaders,
                    CompleteMultipartUploadResult result) {
                Log.d("eflake",
                        "completeMultipartUpload success, result = "
                                + result.getBucket());
            }

            @Override
            public void onFailure(int statesCode,
                    Header[] responceHeaders,
                    String response,
                    Throwable paramThrowable) {
                Log.d("eflake",
                        "completeMultipartUpload failed, reason =  "
                                + response);
            }
        });

Группировка ранее загруженных блоков и завершение многокомпонентной загрузки. Используйте предоставленный XML-файл для группировки блоков. В XML-файле блоки должны быть отсортированы по возрастанию номеров. Необходимо предоставить значение ETag для каждого блока.

Имя метода:

public void completeMultipartUpload(ListPartsResult result, CompleteMultipartUploadResponseHandler handler) throws Ks3ClientException,Ks3ServiceException{}

Описание параметров:

  • resultHandler: интерфейс обратного вызова, содержащий методы onSuccess и onFailure, которые выполняются в основном потоке.
  • result: результат интерфейса ListParts().

Параметры обратного вызова:

  • statesCode: код состояния HTTP-запроса, 200 означает успешный запрос, 400 — ошибку клиента, 403 — ошибку подписи или локальную ошибку даты и времени.
  • responceHeader: заголовки ответа HTTP-запроса.
  • responce: ответное сообщение об ошибке.
  • throwable: исключение, вызванное ошибкой.
  • result: объект результата при успешном выполнении.

Пример кода:


client.completeMultipartUpload(mLastListPartResul,
        new CompleteMultipartUploadResponseHandler() {

            @Override
            public void onSuccess(int statesCode,
                    Header[] responceHeaders,
                    CompleteMultipartUploadResult result) {
                Log.d("eflake",
                        "completeMultipartUpload success, result = "
                                + result.getBucket());
            }

            @Override
            public void onFailure(int statesCode,
                    Header[] responceHeaders,
                    String response,
                    Throwable paramThrowable) {

... **Сборка и завершение многокомпонентной загрузки**

Сборка ранее загруженных блоков и завершение многокомпонентной загрузки. Сборка блоков выполняется на основе предоставленного XML-файла. В XML-файле блоки должны быть упорядочены по возрастанию номеров. Необходимо предоставить значение ETag для каждого блока.

**Метод:**

public void completeMultipartUpload(CompleteMultipartUploadRequest request, CompleteMultipartUploadResponseHandler handler) throws Ks3ClientException,Ks3ServiceException{}

**Параметры:**
* resultHandler: интерфейс обратного вызова, содержащий методы onSuccess и onFailure, которые выполняются в основном потоке.
* request: класс запроса, который должен содержать uploadId, файл для загрузки и информацию о его смещении и размере.

**Обратные параметры:**
* statesCode: код состояния HTTP-запроса, 200 означает успешное выполнение запроса, 400  ошибку клиента, 403  ошибку подписи или локальную ошибку даты и времени.
* responceHeader: заголовки ответа HTTP-запроса.
* response: ответное сообщение при ошибке.
* throwable: исключение при возникновении ошибки.
* result: объект результата при успешном выполнении.

Пример кода:
```java
client.completeMultipartUpload(
    new CompleteMultipartUploadRequest(
        mLastListPartResul),
    new CompleteMultipartUploadResponseHandler() {
        @Override
        public void onSuccess(int statesCode,
            Header[] responceHeaders,
            CompleteMultipartUploadResult result) {
            Log.d("eflake",
                "completeMultipartUpload success, result = "
                    + result.getBucket());
        }

        @Override
        public void onFailure(int statesCode,
            Header[] responceHeaders,
            String response,
            Throwable paramThrowable) {
            Log.d("eflake",
                "completeMultipartUpload failed, reason =  "
                    + response);
        }
    });

Пример кода для многокомпонентной загрузки

handler = new UploadPartHandler();
client.initiateMultipartUpload(new InitiateMultipartUploadRequest(
    bucketName, objectKey),
    new InitiateMultipartUploadResponceHandler() {
        @Override
        public void onSuccess(int statesCode,
            Header[] responceHeaders,
            InitiateMultipartUploadResult result) {
            String uploadId = result.getUploadId();
            handler.sendEmptyMessage(TransferManager.STATE_UPLOAD_NEXT);

        @Override
        public void onFailure(int statesCode,
            Header[] responceHeaders, String response,
            Throwable paramThrowable) {
        }
    }
);

public class UploadPartHandler extends Handler {

    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        switch (msg.what) {
    case TransferManager.STATE_UPLOAD_NEXT:
        if (localUploadPartRequestFactory.hasMoreRequests()) {
            UploadPartRequest uploadPartRequest = localUploadPartRequestFactory
                .getNextUploadPartRequest();
            client.uploadPart(uploadPartRequest,
                new UploadPartResponceHandler() {
                    @Override
                    public void onSuccess(int statesCode,
                        Header[] responceHeaders,
                        UploadPartResult result) {
                        Log.d("eflake",
                            "upload part success , partnumber = "
                                + result.getPartNumber()
                                + ",etag = ");
``` ```
avsample.setCommand("tag=avsample&ss=5&t=30&res=640x360&rotate=90&interval=5&pattern=5oiq5Zu+LSUzZC5qcGc=");
    avsample.setKey(newObjectKey);

    //音视频切片
    Adp avm3u8 = new Adp();
    avm3u8.setBucket(DST_BUCKETNAME);
    avm3u8.setCommand("tag=avm3u8&segtime=10&abr=128k&vbr=1000k&res=1280x720");
    avm3u8.setKey(newObjectKey);

    //视频拼接
    Adp avconcat = new Adp();
    avconcat.setBucket(DST_BUCKETNAME);
    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");

    //音视频元数据获取
    GetAdpRequest getAdpRequest = new GetAdpRequest("taskId");
    client.getAdpTask(getAdpRequest, new GetObjectAdpResponceHandler() {
        @Override
        public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) { }
        @Override
        public void onSuccess(int statesCode, Header[] responceHeaders, AdpTask adpTask) {
           System.out.println("getAdpTask is " + adpTask.toString());
         }
                });

    //发送请求
    client.putAdpTask(adpRequest, new PutObjectAdpResponceHandler() {
        @Override
        public void onFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
        }
        @Override
        public void onSuccess(int statesCode, Header[] responceHeaders, PutAdpResult adpResult) {
            System.out.println("taskId is " + adpResult.getTaskId());
        }
    });
}

联系我们

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

KS3 Android SDK. Развернуть Свернуть
MIT
Отмена

Обновления (2)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/ks3sdk-new_ks3sdk_android.git
git@api.gitlife.ru:oschina-mirror/ks3sdk-new_ks3sdk_android.git
oschina-mirror
ks3sdk-new_ks3sdk_android
ks3sdk-new_ks3sdk_android
master