SendGrid import SendGrid NSString const sgDomain https api sendgrid co

  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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
//
// SendGrid.m
//
#import "SendGrid.h"
NSString * const sgDomain = @"https://api.sendgrid.com/";
NSString * const sgEndpoint = @"api/mail.send.json";
@interface SendGrid ()
@property (strong, nonatomic) NSString *baseURL;
@end
@implementation SendGrid
+ (instancetype)apiUser:(NSString *)apiUser apiKey:(NSString *)apiKey
{
SendGrid *message = [[SendGrid alloc] initWithApiUser:apiUser apiKey:apiKey];
return message;
}
- (id)initWithApiUser:(NSString *)apiUser apiKey:(NSString *)apiKey
{
self = [super init];
if (self)
{
self.apiUser = apiUser;
self.apiKey = apiKey;
}
return self;
}
- (void)sendWithWeb:(SendGridEmail *)email
{
[self sendWithWeb:email
successBlock:^(id responseObject)
{
NSLog(@"Success: %@", responseObject);
}
failureBlock:^(NSError *error)
{
NSLog(@"Error: %@", error);
}];
}
- (void)sendAttachmentWithWeb:(SendGridEmail *)email
{
[self sendAttachmentWithWeb:email
successBlock:^(id responseObject)
{
NSLog(@"Success: %@", responseObject);
}
failureBlock:^(NSError *error)
{
NSLog(@"Error: %@", error);
}];
}
- (void)sendWithWeb:(SendGridEmail *)email successBlock:(void(^)(id responseObject))successBlock failureBlock:(void(^)(NSError *error))failureBlock
{
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:self.baseURL parameters:[email parametersDictionary:self.apiUser apiKey:self.apiKey] constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
{
for (int i = 0; i < email.imgs.count; i++)
{
UIImage *img = [email.imgs objectAtIndex:i];
NSString *filename = [NSString stringWithFormat:@"image%d.png", i];
NSString *name = [NSString stringWithFormat:@"files[image%d.png]", i];
NSLog(@"name: %@, Filename: %@", name, filename);
NSData *imageData = UIImagePNGRepresentation(img);
[formData appendPartWithFileData:imageData name:name fileName:filename mimeType:@"image/png"];
}
}
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
successBlock(responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
failureBlock(error);
}];
}
- (void)sendAttachmentWithWeb:(SendGridEmail *)email successBlock:(void(^)(id responseObject))successBlock failureBlock:(void(^)(NSError *error))failureBlock
{
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:self.baseURL parameters:[email parametersDictionary:self.apiUser apiKey:self.apiKey] constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
{
for (int i = 0; i < email.attachments.count; i++)
{
SendGridEmailAttachment *attachment = [email.attachments objectAtIndex:i];
NSData *attachmentData = attachment.attachmentData;
NSString *mimetype = attachment.mimeType;
NSString *filename = [NSString stringWithFormat:@"%@.%@", attachment.fileName, attachment.extension];
NSString *name = [NSString stringWithFormat:@"files[%@]", filename];
[formData appendPartWithFileData:attachmentData name:name fileName:filename mimeType:mimetype];
}
}
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
successBlock(responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
failureBlock(error);
}];
}
#pragma mark - Setter / Getter Overrides
- (NSString *)baseURL
{
if (!_baseURL)
{
self.baseURL = [NSString stringWithFormat: @"%@%@",sgDomain, sgEndpoint];
}
return _baseURL;
}
@end