测试测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布日期上次发布日期 | 2018年10月 |
SPM支持SPM | ✗ |
由Jett Farmer维护。
依赖关系 | |
Alamofire | ~> 4.7 |
SWXMLHash | ~> 4.2 |
Alamofire基于的请求管理器,将请求数据序列化到AWS S3(Amazon简单存储解决方案)。
AmazonS3RequestManager
还包含一个请求序列器,用于创建任何其他网络方法使用的URLRequest
对象。
CocoaPods是Cocoa项目的依赖管理器。
要使用CocoaPods将AmazonS3RequestManager集成到您的Xcode项目中,请在您的Podfile中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
// For Swift 2.0
pod 'AmazonS3RequestManager', '~> 0.10'
然后,运行以下命令
$ pod install
首先创建管理器的一个实例。
let amazonS3Manager = AmazonS3RequestManager(bucket: myAmazonS3Bucket,
region: .USStandard,
accessKey: myAmazonS3AccessKey,
secret: myAmazonS3Secret)
获取存储桶中对象列表
amazonS3Manager.listBucketObjects().responseS3Object { (response: DataResponse<S3BucketObjectList, NSError>) in
if let files = response.result.value?.files {
for file in files {
print(file.path)
}
}
}
将对象作为响应对象获取
amazonS3Manager.get(at: "myFolder/fileName.jpg")
将对象保存到文件
let destinationURL: URL = FileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
let destination: DownloadRequest.DownloadFileDestination = { _, _ in destinationURL, []) }
amazonS3Manager.download(at: "myFolder/fileName.jpg", to: destination)
检索对象的元数据而无需返回该对象本身
amazonS3Manager.getMetaData(forObjectAt: "fileName.txt").responseS3MetaData { (response: DataResponse<S3ObjectMetaData, NSError>) in
if let metaData = response.result.value?.metaData {
for objectMetaData in metaData {
print(objectMetaData)
}
}
}
let fileURL: NSURL = NSURL(fileURLWithPath: "pathToMyObject")
amazonS3Manager.upload(from: fileURL, to: "pathToSaveObjectTo/fileName.jpg")
amazonS3Manager.copy(from: "demo.txt", to: "copy.txt").response { request, response, data, error in
print(response)
print(error)
}
amazonS3Manager.delete(at: "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(forObjectAt: "myFolder/fileName.jpg")
您可以使用PUT
请求在当前存储桶上设置ACL
amazonS3Manager.setBucketACL(AmazonS3PredefinedACL.Public)
或者在存储桶中的对象上通过PUT
请求设置它
amazonS3Manager.setACL(acl: PredefinedACL.publicReadWrite, forObjectAt: "myFolder/fileName.jpg")
在上传对象时也可以使用可选项的acl
参数来设置对象的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)
版本 1.0.0 对公共类和函数的名称进行了修改,采用 Swift API 设计指南中推荐的语言语法。此外,语言版本也更新为使用 Swift 3.0。
AmazonS3
前缀。ACL
协议方法参数名称从 setACLHeaders(forRequest:)
变更为 'setACLHeaders(on:)`。PredefinedACL
情况名称变更Private
变更为 privateReadWrite
Public
变更为 publicReadWrite
AmazonS3RequestManager
上更改了请求方法名。getObject(path:)
变更至 get(at:)
downloadObject(path:saveToURL:)
变更至 download(at:to:)
putObject(fileURL:destinationPath:acl:metaData:storageClass:)
变更至 upload(from:to:acl:metaData:storageClass:)
putObject(data:destinationPath:acl:metaData:storageClass:)
变更至 upload(_:to:acl:metaData:storageClass:)
headObject(path:)
变更至 getMetaData(forObjectAt:)
copyObject(_:destinationPath:)
变更至 copy(from:to:)
deleteObject(_:)
变更至 delete(at:)
getACL(forObjectAtPath:)
变更至 getACL(forObjectAt:)
setACL(forObjectAtPath:acl:)
变更至 setACL(_:forObjectAt:)
DownloadFileDestination
来配置下载请求的路径。您需要将所有下载请求迁移至此,而不仅仅是 destinations。