测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可 | MIT |
Released上次发布 | 2016年5月 |
SPM支持 SPM | ✗ |
由 Jiantang Li 维护。
依赖 | |
AlamofireDomain | = 2.1.0 |
SWXMLHash | ~> 2.0 |
一个基于 Alamofire 的请求管理器,它将请求序列化到 AWS S3(亚马逊简单存储解决方案)。
AmazonS3RequestManager
还包括一个请求序列化器,可用于创建任何其他网络方法的 NSURLRequest
对象。
首先创建管理器的实例。
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
}
AmazonS3RequestManager
提供了简单的 API 以获取和设置容器和对象的 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。
如果Amazon S3服务提供的预定义ACL不足以提供足够的控制,您可以使用AmazonS3ACLPermissionGrant
和AmazonS3CustomACL
创建自定义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)