-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBFAWSManager.m
106 lines (81 loc) · 3.72 KB
/
BFAWSManager.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
//
// BFAWSManager.m
//
// Created by Matthew Parker on 12/18/12.
// Copyright (c) 2012 BitFountain.
//Permission is hereby granted, free of charge, to any person obtaining a copy
//of this software and associated documentation files (the "Software"), to deal
//in the Software without restriction, including without limitation the rights
//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//copies of the Software, and to permit persons to whom the Software is
//furnished to do so, subject to the following conditions:
//
//The above copyright notice and this permission notice shall be included in
//all copies or substantial portions of the Software.
//
//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//THE SOFTWARE.
//
#define kAWSAccessKey @"Insert Key Here"
#define kAWSSecretKey @"Insert Key Here"
#define kBucketName @"Insert Bucket Name"
#import "BFAWSManager.h"
@implementation BFAWSManager
+ (void)uploadFileWithData:(NSData *)savedData named:(NSString *)name
{
AmazonS3Client *s3 = [[AmazonS3Client alloc] initWithAccessKey:kAWSAccessKey withSecretKey:kAWSSecretKey];
@try {
S3PutObjectRequest *por = [[S3PutObjectRequest alloc] initWithKey:name inBucket:kBucketName];
//change content type if not photo
por.contentType = @"image/jpeg";
por.data = savedData;
[s3 putObject:por];
NSLog(@"Successfully uploaded photo");
}
@catch (NSException *exception) {
NSLog(@"Failed to upload with exception: %@",exception);
}
@finally {
}
}
+(void)deleteFileWithName:(NSString *)filename{
AmazonS3Client *s3 = [[AmazonS3Client alloc] initWithAccessKey:kAWSAccessKey withSecretKey:kAWSSecretKey];
[s3 deleteObjectWithKey:filename withBucket:kBucketName];
}
+(NSURLRequest *)getURLforFileWithName:(NSString *)filename {
AmazonS3Client *s3 = [[AmazonS3Client alloc] initWithAccessKey:kAWSAccessKey withSecretKey:kAWSSecretKey];
S3GetPreSignedURLRequest *gpsur = [[S3GetPreSignedURLRequest alloc] init];
S3ResponseHeaderOverrides *override = [[S3ResponseHeaderOverrides alloc] init];
//change content type if not photo
override.contentType = @"image/jpeg";
gpsur.key = filename;
gpsur.bucket = kBucketName;
//expiration date is fixed so that URL can be retrieved from cache
gpsur.expires = [NSDate dateWithTimeIntervalSince1970:(NSTimeInterval) 60*60*24*365*100]; // expires 100 years from 1970
gpsur.responseHeaderOverrides = override;
NSURL *url = [s3 getPreSignedURL:gpsur];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
return request;
}
+(NSMutableArray *)s3DirectoryListingWithPrefix:(NSString *)prefix {
AmazonS3Client *s3Client = [[AmazonS3Client alloc] initWithAccessKey:kAWSAccessKey withSecretKey:kAWSSecretKey];
NSMutableArray* objectSummaries;
@try {
S3ListObjectsRequest *req = [[S3ListObjectsRequest alloc] initWithName:kBucketName];
if (prefix) {
req.prefix = prefix;
}
S3ListObjectsResponse *resp = [s3Client listObjects:req];
objectSummaries = resp.listObjectsResult.objectSummaries;
}
@catch (NSException *exception) {
NSLog(@"Cannot list S3 %@",exception);
}
return objectSummaries;
}
@end