AmazonS3RequestManagerDomain 0.12.4

AmazonS3RequestManagerDomain 0.12.4

测试已测试
Lang语言 SwiftSwift
许可 MIT
Released上次发布2016年5月
SPM支持 SPM

Jiantang Li 维护。



 
依赖
AlamofireDomain= 2.1.0
SWXMLHash~> 2.0
 

AmazonS3RequestManager

Contact me on Codementor

一个基于 Alamofire 的请求管理器,它将请求序列化到 AWS S3(亚马逊简单存储解决方案)。

AmazonS3RequestManager 还包括一个请求序列化器,可用于创建任何其他网络方法的 NSURLRequest 对象。

功能

  • [x] 请求序列化
  • [x] 响应验证
  • [x] Amazon S3 响应错误解析
  • [x] 访问控制列表(ACL)管理
  • [x] 支持Amazon S3子资源
  • [x] 支持Amazon S3存储类
  • [x] 完备的单元测试覆盖
  • [x] 完整文档

安装

使用方法

首先创建管理器的实例。

let amazonS3Manager = AmazonS3RequestManager(bucket: myAmazonS3Bucket,
    region: .USStandard,
    accessKey: myAmazonS3AccessKey,
    secret: myAmazonS3Secret)

获取对象

以响应对象获取对象

amazonS3Manager.getObject("myFolder/fileName.jpg")

将对象保存到文件

let destination: NSURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
amazonS3Manager.downloadObject("myFolder/fileName.jpg", saveToURL: destination)

上传对象

let fileURL: NSURL = NSURL(fileURLWithPath: "pathToMyObject")
amazonS3Manager.putObject(fileURL, destinationPath: "pathToSaveObjectTo/fileName.jpg")

删除对象

amazonS3Manager.deleteObject("myFolder/fileName.jpg")

响应序列化

AmazonS3RequestManager 包含一个自定义数据响应序列化器,用于解析 Amazon S3 服务的错误。

amazonS3Manager.getObject("myFolder/fileName.jpg")
  .responseS3Data { (response) -> Void in
    // Handle Response Data or Error
}

访问控制列表(ACL)

AmazonS3RequestManager 提供了简单的 API 以获取和设置容器和对象的 ACL。

获取 ACL

您可以使用 GET 请求获取在请求管理器上设置的当前容器的 ACL

amazonS3Manager.getBucketACL()

或者使用 GET 请求获取容器中的对象

amazonS3Manager.getACL(forObjectAtPath: "myFolder/fileName.jpg")

设置权限控制

您可以通过发送一个 PUT 请求来为当前存储桶设置ACL

amazonS3Manager.setBucketACL(AmazonS3PredefinedACL.Public)

或者在桶中的对象上设置

amazonS3Manager.setACL(forObjectAtPath: "myFolder/fileName.jpg", acl: AmazonS3PredefinedACL.Public)

同时在上传对象时也可以通过使用可选参数来设置对象的ACL。

创建自定义ACL

如果Amazon S3服务提供的预定义ACL不足以提供足够的控制,您可以使用AmazonS3ACLPermissionGrantAmazonS3CustomACL创建自定义ACL

AmazonS3ACLPermissionGrant授予多个用户/用户组单一权限。AmazonS3CustomACL由多个AmazonS3ACLPermissionGrant组成,可以创建任何您想要创建的权限系列。

示例

给予所有用户读取存储桶的权限

let readPermission = AmazonS3ACLPermissionGrant(permission: .Read, grantee: .AllUsers)
amazonS3Manager.setBucketACL(readPermission)

给予所有用户读取存储桶的权限,认证用户写入存储桶的权限,以及两个给定电子邮箱地址和用户ID的用户完全控制

let readPermission = AmazonS3ACLPermissionGrant(permission: .Read, grantee: .AllUsers)
let writePermission = AmazonS3ACLPermissionGrant(permission: .Write, grantee: .AuthenticatedUsers)
let fullControlPermission = AmazonS3ACLPermissionGrant(permission: .FullControl, grantees: [.EmailAddress("[email protected]"), .UserID("my-user-id")])
let customACL = AmazonS3CustomACL(grants: [readPermission, writePermission, fullControlPermission])
amazonS3Manager.setBucketACL(customACL)